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    #[doc(hidden)]
265    __SourceBreaking { unknown_ordinal: u32 },
266}
267
268/// Pattern that matches an unknown `EstablishStreamsError` member.
269#[macro_export]
270macro_rules! EstablishStreamsErrorUnknown {
271    () => {
272        _
273    };
274}
275
276impl EstablishStreamsError {
277    #[inline]
278    pub fn from_primitive(prim: u32) -> Option<Self> {
279        match prim {
280            1 => Some(Self::NotSupported),
281            2 => Some(Self::DuplicateCis),
282            3 => Some(Self::CisAlreadyEstablished),
283            4 => Some(Self::PeerNotConnected),
284            _ => None,
285        }
286    }
287
288    #[inline]
289    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
290        match prim {
291            1 => Self::NotSupported,
292            2 => Self::DuplicateCis,
293            3 => Self::CisAlreadyEstablished,
294            4 => Self::PeerNotConnected,
295            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
296        }
297    }
298
299    #[inline]
300    pub fn unknown() -> Self {
301        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
302    }
303
304    #[inline]
305    pub const fn into_primitive(self) -> u32 {
306        match self {
307            Self::NotSupported => 1,
308            Self::DuplicateCis => 2,
309            Self::CisAlreadyEstablished => 3,
310            Self::PeerNotConnected => 4,
311            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
312        }
313    }
314
315    #[inline]
316    pub fn is_unknown(&self) -> bool {
317        match self {
318            Self::__SourceBreaking { unknown_ordinal: _ } => true,
319            _ => false,
320        }
321    }
322}
323
324/// Flags indicating validity of data received from an isochronous channel.
325#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
326#[repr(u8)]
327pub enum IsoPacketStatusFlag {
328    /// Valid data. The complete SDU was received correctly.
329    ValidData = 0,
330    /// Possibly invalid data. One ore more of the fragments received may contain errors or part of
331    /// the packet may be missing.
332    DataWithPossibleErrors = 1,
333    /// Parts of the packet were not received correctly.
334    LostData = 2,
335}
336
337impl IsoPacketStatusFlag {
338    #[inline]
339    pub fn from_primitive(prim: u8) -> Option<Self> {
340        match prim {
341            0 => Some(Self::ValidData),
342            1 => Some(Self::DataWithPossibleErrors),
343            2 => Some(Self::LostData),
344            _ => None,
345        }
346    }
347
348    #[inline]
349    pub const fn into_primitive(self) -> u8 {
350        self as u8
351    }
352}
353
354#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
355pub enum PeriodicAdvertisingSyncError {
356    InitialSynchronizationFailed,
357    SynchronizationLost,
358    NotSupportedLocal,
359    NotSupportedRemote,
360    #[doc(hidden)]
361    __SourceBreaking {
362        unknown_ordinal: u32,
363    },
364}
365
366/// Pattern that matches an unknown `PeriodicAdvertisingSyncError` member.
367#[macro_export]
368macro_rules! PeriodicAdvertisingSyncErrorUnknown {
369    () => {
370        _
371    };
372}
373
374impl PeriodicAdvertisingSyncError {
375    #[inline]
376    pub fn from_primitive(prim: u32) -> Option<Self> {
377        match prim {
378            0 => Some(Self::InitialSynchronizationFailed),
379            1 => Some(Self::SynchronizationLost),
380            2 => Some(Self::NotSupportedLocal),
381            3 => Some(Self::NotSupportedRemote),
382            _ => None,
383        }
384    }
385
386    #[inline]
387    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
388        match prim {
389            0 => Self::InitialSynchronizationFailed,
390            1 => Self::SynchronizationLost,
391            2 => Self::NotSupportedLocal,
392            3 => Self::NotSupportedRemote,
393            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
394        }
395    }
396
397    #[inline]
398    pub fn unknown() -> Self {
399        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
400    }
401
402    #[inline]
403    pub const fn into_primitive(self) -> u32 {
404        match self {
405            Self::InitialSynchronizationFailed => 0,
406            Self::SynchronizationLost => 1,
407            Self::NotSupportedLocal => 2,
408            Self::NotSupportedRemote => 3,
409            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
410        }
411    }
412
413    #[inline]
414    pub fn is_unknown(&self) -> bool {
415        match self {
416            Self::__SourceBreaking { unknown_ordinal: _ } => true,
417            _ => false,
418        }
419    }
420}
421
422#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
423pub enum PeriodicAdvertisingSyncTransferError {
424    Failed,
425    /// The `PeriodicAdvertisingSyncId` does not correspond to an active `PeriodicAdvertisingSync`.
426    InvalidSyncId,
427    TransferAlreadyPending,
428    NotSupportedLocal,
429    NotSupportedRemote,
430    #[doc(hidden)]
431    __SourceBreaking {
432        unknown_ordinal: u32,
433    },
434}
435
436/// Pattern that matches an unknown `PeriodicAdvertisingSyncTransferError` member.
437#[macro_export]
438macro_rules! PeriodicAdvertisingSyncTransferErrorUnknown {
439    () => {
440        _
441    };
442}
443
444impl PeriodicAdvertisingSyncTransferError {
445    #[inline]
446    pub fn from_primitive(prim: u32) -> Option<Self> {
447        match prim {
448            0 => Some(Self::Failed),
449            1 => Some(Self::InvalidSyncId),
450            2 => Some(Self::TransferAlreadyPending),
451            3 => Some(Self::NotSupportedLocal),
452            4 => Some(Self::NotSupportedRemote),
453            _ => None,
454        }
455    }
456
457    #[inline]
458    pub fn from_primitive_allow_unknown(prim: u32) -> Self {
459        match prim {
460            0 => Self::Failed,
461            1 => Self::InvalidSyncId,
462            2 => Self::TransferAlreadyPending,
463            3 => Self::NotSupportedLocal,
464            4 => Self::NotSupportedRemote,
465            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
466        }
467    }
468
469    #[inline]
470    pub fn unknown() -> Self {
471        Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
472    }
473
474    #[inline]
475    pub const fn into_primitive(self) -> u32 {
476        match self {
477            Self::Failed => 0,
478            Self::InvalidSyncId => 1,
479            Self::TransferAlreadyPending => 2,
480            Self::NotSupportedLocal => 3,
481            Self::NotSupportedRemote => 4,
482            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
483        }
484    }
485
486    #[inline]
487    pub fn is_unknown(&self) -> bool {
488        match self {
489            Self::__SourceBreaking { unknown_ordinal: _ } => true,
490            _ => false,
491        }
492    }
493}
494
495#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
496#[repr(u32)]
497pub enum PeripheralError {
498    /// The operation or parameters requested are not supported on the current hardware.
499    NotSupported = 1,
500    /// The provided advertising data exceeds the maximum allowed length when encoded.
501    AdvertisingDataTooLong = 2,
502    /// The provided scan response data exceeds the maximum allowed length when encoded.
503    ScanResponseDataTooLong = 3,
504    /// The requested parameters are invalid.
505    InvalidParameters = 4,
506    /// The request to start advertising was aborted, for example by issuing a new request with new
507    /// parameters.
508    Aborted = 5,
509    /// Advertising could not be initiated due to a hardware or system error.
510    Failed = 6,
511}
512
513impl PeripheralError {
514    #[inline]
515    pub fn from_primitive(prim: u32) -> Option<Self> {
516        match prim {
517            1 => Some(Self::NotSupported),
518            2 => Some(Self::AdvertisingDataTooLong),
519            3 => Some(Self::ScanResponseDataTooLong),
520            4 => Some(Self::InvalidParameters),
521            5 => Some(Self::Aborted),
522            6 => Some(Self::Failed),
523            _ => None,
524        }
525    }
526
527    #[inline]
528    pub const fn into_primitive(self) -> u32 {
529        self as u32
530    }
531}
532
533/// The physical layer configuration for LE radio transmissions.
534#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
535pub enum PhysicalLayer {
536    /// The 1 Megabit PHY is the original and default PHY with balanced throughput and range.
537    Le1M,
538    /// The 2 Megabit PHY supports increased throughput at
539    /// the cost of a reduced range.
540    Le2M,
541    /// The Coded PHY increases the maximum range by using enhanced error
542    /// detection and correction at the cost of reduced throughput.
543    LeCoded,
544    #[doc(hidden)]
545    __SourceBreaking { unknown_ordinal: u8 },
546}
547
548/// Pattern that matches an unknown `PhysicalLayer` member.
549#[macro_export]
550macro_rules! PhysicalLayerUnknown {
551    () => {
552        _
553    };
554}
555
556impl PhysicalLayer {
557    #[inline]
558    pub fn from_primitive(prim: u8) -> Option<Self> {
559        match prim {
560            1 => Some(Self::Le1M),
561            2 => Some(Self::Le2M),
562            3 => Some(Self::LeCoded),
563            _ => None,
564        }
565    }
566
567    #[inline]
568    pub fn from_primitive_allow_unknown(prim: u8) -> Self {
569        match prim {
570            1 => Self::Le1M,
571            2 => Self::Le2M,
572            3 => Self::LeCoded,
573            unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
574        }
575    }
576
577    #[inline]
578    pub fn unknown() -> Self {
579        Self::__SourceBreaking { unknown_ordinal: 0xff }
580    }
581
582    #[inline]
583    pub const fn into_primitive(self) -> u8 {
584        match self {
585            Self::Le1M => 1,
586            Self::Le2M => 2,
587            Self::LeCoded => 3,
588            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
589        }
590    }
591
592    #[inline]
593    pub fn is_unknown(&self) -> bool {
594        match self {
595            Self::__SourceBreaking { unknown_ordinal: _ } => true,
596            _ => false,
597        }
598    }
599}
600
601/// Represents advertising and scan response data advertised by a broadcaster or peripheral.
602#[derive(Clone, Debug, PartialEq)]
603pub struct AdvertisingDataDeprecated {
604    /// Name of the device.
605    pub name: Option<String>,
606    /// The radio transmission power level reported in the advertisement.
607    pub tx_power_level: Option<Box<fidl_fuchsia_bluetooth__common::Int8>>,
608    /// The appearance reported in the advertisemet.
609    pub appearance: Option<Box<fidl_fuchsia_bluetooth__common::UInt16>>,
610    /// List of service UUIDs reported in the advertisement.
611    pub service_uuids: Option<Vec<String>>,
612    /// Service data included in the advertisement.
613    pub service_data: Option<Vec<ServiceDataEntry>>,
614    /// Manufacturer specific data entries.
615    pub manufacturer_specific_data: Option<Vec<ManufacturerSpecificDataEntry>>,
616    /// Service UUIDs that were solicited in the advertisement. Peripherals can invite centrals that
617    /// expose certain services to connect to them using service solicitation.
618    pub solicited_service_uuids: Option<Vec<String>>,
619    /// URIs included in the advertising packet.
620    /// These are full URIs (they are encoded/decoded automatically)
621    pub uris: Option<Vec<String>>,
622}
623
624impl fidl::Persistable for AdvertisingDataDeprecated {}
625
626#[derive(Clone, Debug, PartialEq)]
627pub struct CentralConnectPeripheralResponse {
628    pub status: fidl_fuchsia_bluetooth__common::Status,
629}
630
631impl fidl::Persistable for CentralConnectPeripheralResponse {}
632
633#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
634pub struct CentralDisconnectPeripheralRequest {
635    pub identifier: String,
636}
637
638impl fidl::Persistable for CentralDisconnectPeripheralRequest {}
639
640#[derive(Clone, Debug, PartialEq)]
641pub struct CentralDisconnectPeripheralResponse {
642    pub status: fidl_fuchsia_bluetooth__common::Status,
643}
644
645impl fidl::Persistable for CentralDisconnectPeripheralResponse {}
646
647#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
648pub struct CentralGetPeripheralRequest {
649    pub identifier: String,
650}
651
652impl fidl::Persistable for CentralGetPeripheralRequest {}
653
654#[derive(Clone, Debug, PartialEq)]
655pub struct CentralGetPeripheralResponse {
656    pub peripheral: Option<Box<RemoteDevice>>,
657}
658
659impl fidl::Persistable for CentralGetPeripheralResponse {}
660
661#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
662pub struct CentralGetPeripheralsRequest {
663    pub service_uuids: Option<Vec<String>>,
664}
665
666impl fidl::Persistable for CentralGetPeripheralsRequest {}
667
668#[derive(Clone, Debug, PartialEq)]
669pub struct CentralGetPeripheralsResponse {
670    pub peripherals: Vec<RemoteDevice>,
671}
672
673impl fidl::Persistable for CentralGetPeripheralsResponse {}
674
675#[derive(Clone, Debug, PartialEq)]
676pub struct CentralOnDeviceDiscoveredRequest {
677    pub device: RemoteDevice,
678}
679
680impl fidl::Persistable for CentralOnDeviceDiscoveredRequest {}
681
682#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
683pub struct CentralOnPeripheralDisconnectedRequest {
684    pub identifier: String,
685}
686
687impl fidl::Persistable for CentralOnPeripheralDisconnectedRequest {}
688
689#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
690pub struct CentralOnScanStateChangedRequest {
691    pub scanning: bool,
692}
693
694impl fidl::Persistable for CentralOnScanStateChangedRequest {}
695
696#[derive(Clone, Debug, PartialEq)]
697pub struct CentralStartScanRequest {
698    pub filter: Option<Box<ScanFilter>>,
699}
700
701impl fidl::Persistable for CentralStartScanRequest {}
702
703#[derive(Clone, Debug, PartialEq)]
704pub struct CentralStartScanResponse {
705    pub status: fidl_fuchsia_bluetooth__common::Status,
706}
707
708impl fidl::Persistable for CentralStartScanResponse {}
709
710/// Entry in the `manufacturer_data` field of a [`fuchsia.bluetooth.le/AdvertisingData`].
711#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
712pub struct ManufacturerData {
713    pub company_id: u16,
714    pub data: Vec<u8>,
715}
716
717impl fidl::Persistable for ManufacturerData {}
718
719#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
720pub struct ManufacturerSpecificDataEntry {
721    pub company_id: u16,
722    pub data: Vec<u8>,
723}
724
725impl fidl::Persistable for ManufacturerSpecificDataEntry {}
726
727/// 64-bit unique value used by the system to identify a PeriodicAdvertisingSync.
728#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
729#[repr(C)]
730pub struct PeriodicAdvertisingSyncId {
731    pub value: u64,
732}
733
734impl fidl::Persistable for PeriodicAdvertisingSyncId {}
735
736#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
737pub struct PeriodicAdvertisingSyncOnErrorRequest {
738    pub error: PeriodicAdvertisingSyncError,
739}
740
741impl fidl::Persistable for PeriodicAdvertisingSyncOnErrorRequest {}
742
743/// Represents a remote Bluetooth Low Energy device. A RemoteDevice can represent a central,
744/// broadcaster, or peripheral based on the API from which it was received.
745#[derive(Clone, Debug, PartialEq)]
746pub struct RemoteDevice {
747    /// Identifier that uniquely identifies this device on the current system.
748    pub identifier: String,
749    /// Whether or not this device is connectable. Non-connectable devices are typically acting in the
750    /// LE broadcaster role.
751    pub connectable: bool,
752    /// The last known RSSI of this device, if known.
753    pub rssi: Option<Box<fidl_fuchsia_bluetooth__common::Int8>>,
754    /// Advertising data broadcast by this device if this device is a broadcaster or peripheral.
755    pub advertising_data: Option<Box<AdvertisingDataDeprecated>>,
756}
757
758impl fidl::Persistable for RemoteDevice {}
759
760/// Filter parameters for use during a scan. A discovered peripheral or broadcaster will be reported
761/// to applications only if it satisfies all of the provided filter parameters. Null fields will be
762/// ignored.
763#[derive(Clone, Debug, PartialEq)]
764pub struct ScanFilter {
765    /// Filter based on advertised service UUIDs. A peripheral that advertises at least one of the
766    /// entries in `service_uuids` will satisfy this filter.
767    pub service_uuids: Option<Vec<String>>,
768    /// Filter based on service data containing one of the given UUIDs.
769    pub service_data_uuids: Option<Vec<String>>,
770    /// Filter based on a company identifier present in the manufacturer data. If this filter parameter
771    /// is set, then the advertising payload must contain manufacturer specific data with the provided
772    /// company identifier to satisfy this filter.
773    pub manufacturer_identifier: Option<Box<fidl_fuchsia_bluetooth__common::UInt16>>,
774    /// Filter based on whether or not a device is connectable. For example, a client that is only
775    /// interested in peripherals that it can connect to can set this to true. Similarly a client can
776    /// scan only for braodcasters by setting this to false.
777    pub connectable: Option<Box<fidl_fuchsia_bluetooth__common::Bool>>,
778    /// Filter results based on a portion of the advertised device name.
779    pub name_substring: Option<String>,
780    /// Filter results based on the path loss of the radio wave. A device that matches this filter must
781    /// satisfy the following:
782    ///   1. Radio transmission power level and received signal strength must be available for the path
783    ///      loss calculation;
784    ///   2. The calculated path loss value must be less than, or equal to, `max_path_loss`.
785    pub max_path_loss: Option<Box<fidl_fuchsia_bluetooth__common::Int8>>,
786}
787
788impl fidl::Persistable for ScanFilter {}
789
790#[derive(Clone, Debug, PartialEq)]
791pub struct ScanResultWatcherWatchResponse {
792    pub updated: Vec<Peer>,
793}
794
795impl fidl::Persistable for ScanResultWatcherWatchResponse {}
796
797/// Entry in the `service_data` field of a [`fuchsia.bluetooth.le/AdvertisingData`].
798#[derive(Clone, Debug, PartialEq)]
799pub struct ServiceData {
800    pub uuid: fidl_fuchsia_bluetooth__common::Uuid,
801    pub data: Vec<u8>,
802}
803
804impl fidl::Persistable for ServiceData {}
805
806#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
807pub struct ServiceDataEntry {
808    pub uuid: String,
809    pub data: Vec<u8>,
810}
811
812impl fidl::Persistable for ServiceDataEntry {}
813
814/// The set of parameters for accepting a channel when listening for new channel
815/// connections.
816///
817/// See [`ChannelListenerRegistry/ListenL2cap`].
818#[derive(Clone, Debug, Default, PartialEq)]
819pub struct AcceptedChannelParameters {
820    /// All channel modes that should be accepted while listening. Must contain
821    /// at least one channel mode or the call will fail with
822    /// `ZX_ERR_INVALID_ARGS`.
823    /// Required.
824    pub accepted_channel_modes: Option<Vec<fidl_fuchsia_bluetooth__common::ChannelMode>>,
825    /// Maximum supported packet size for receiving.
826    /// Optional. If not provided, the size will be determined by the Bluetooth
827    /// system. No guarantees are given regarding the size selected.
828    pub max_packet_size: Option<u16>,
829    #[doc(hidden)]
830    pub __source_breaking: fidl::marker::SourceBreaking,
831}
832
833impl fidl::Persistable for AcceptedChannelParameters {}
834
835/// Represents advertising and scan response data that are transmitted by a LE peripheral or
836/// broadcaster.
837#[derive(Clone, Debug, Default, PartialEq)]
838pub struct AdvertisingData {
839    /// Long or short name of the device.
840    pub name: Option<String>,
841    /// The appearance of the device.
842    pub appearance: Option<fidl_fuchsia_bluetooth__common::Appearance>,
843    pub tx_power_level: Option<i8>,
844    /// Service UUIDs.
845    pub service_uuids: Option<Vec<fidl_fuchsia_bluetooth__common::Uuid>>,
846    /// Service data entries.
847    pub service_data: Option<Vec<ServiceData>>,
848    /// Manufacturer-specific data entries.
849    pub manufacturer_data: Option<Vec<ManufacturerData>>,
850    /// String representing a URI to be advertised, as defined in [IETF STD 66](https://tools.ietf.org/html/std66).
851    /// Each entry should be a UTF-8 string including the scheme. For more information, see:
852    /// - https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for allowed schemes;
853    /// - https://www.bluetooth.com/specifications/assigned-numbers/uri-scheme-name-string-mapping
854    ///   for code-points used by the system to compress the scheme to save space in the payload.
855    pub uris: Option<Vec<String>>,
856    /// Indicates whether the current TX power level should be included in the advertising data.
857    pub include_tx_power_level: Option<bool>,
858    /// Identifies the peer as belonging to a Coordinated Set.
859    /// Resolution and generation of this parameter is defined in the
860    /// Coordinated Set Identification Service Specification.
861    pub resolvable_set_identifier: Option<[u8; 6]>,
862    /// The broadcast name string can be used by a user interface on a scanning
863    /// device that displays information on the available broadcast sources.
864    ///
865    /// Multiple devices with the same Broadcast Name may be transmitting the
866    /// same data, allowing devices to choose one.  At least 4 unicode characters
867    /// long and no more than 32 characters.
868    ///
869    /// Defined in the Public Broadcast Profile specification.
870    pub broadcast_name: Option<String>,
871    #[doc(hidden)]
872    pub __source_breaking: fidl::marker::SourceBreaking,
873}
874
875impl fidl::Persistable for AdvertisingData {}
876
877/// Represents the parameters for configuring advertisements.
878#[derive(Clone, Debug, Default, PartialEq)]
879pub struct AdvertisingParameters {
880    /// The fields that will be encoded in the data section of advertising packets.
881    ///
882    /// This field is required.
883    pub data: Option<AdvertisingData>,
884    /// The fields that are to be sent in a scan response packet. Clients may use this to send
885    /// additional data that does not fit inside an advertising packet on platforms that do not
886    /// support the advertising data length extensions.
887    ///
888    /// If present advertisements will be configured to be scannable.
889    pub scan_response: Option<AdvertisingData>,
890    /// The desired advertising frequency. See [`fuchsia.bluetooth.le/AdvertisingModeHint`].
891    /// Defaults to [`fuchsia.bluetooth.le/AdvertisingModeHint.SLOW`] if not present.
892    pub mode_hint: Option<AdvertisingModeHint>,
893    /// If present and true then the controller will broadcast connectable advertisements which
894    /// allows remote LE centrals to initiate a connection to the Peripheral. If false or otherwise
895    /// not present then the advertisements will be non-connectable.
896    pub connectable: Option<bool>,
897    /// If present, the controller will broadcast connectable advertisements
898    /// which allow peers to initiate connections to the Peripheral. The fields
899    /// of `ConnectionOptions` will configure any connections set up from
900    /// advertising.
901    pub connection_options: Option<ConnectionOptions>,
902    /// Specifies the advertising type to use (e.g. legacy, extended, etc).
903    ///
904    /// If not present, we default to legacy advertising to maintain optimal compatibility with
905    /// pre-Bluetooth 5.0 devices. See field descriptions within AdvertisingProcedure for more
906    /// information.
907    pub advertising_procedure: Option<AdvertisingProcedure>,
908    /// If privacy is not enabled, the address type will always be public.
909    ///
910    /// If privacy is enabled and the client is not privileged, the address will be a random
911    /// private address (either resolvable or non-resolvable). A non-privileged client requesting a
912    /// public address will return an error.
913    ///
914    /// If privacy is enabled and the client is privileged, they may request any address type,
915    /// or will default to a random private address.
916    ///
917    /// If this field is unset, the address type will be public or random depending on if privacy
918    /// is enabled in the system.
919    pub address_type: Option<fidl_fuchsia_bluetooth__common::AddressType>,
920    #[doc(hidden)]
921    pub __source_breaking: fidl::marker::SourceBreaking,
922}
923
924impl fidl::Persistable for AdvertisingParameters {}
925
926/// The "BIGInfo" parameters describing an LE Audio Broadcast Isochronous Group (BIG).
927/// Missing fields to be added as part of fxbug.dev/429213165.
928#[derive(Clone, Debug, Default, PartialEq)]
929pub struct BroadcastIsochronousGroupInfo {
930    /// The number of Broadcast Isochronous Streams in this group.
931    pub streams_count: Option<u8>,
932    /// The maximum size of an isochronous SDU.
933    pub max_sdu_size: Option<u16>,
934    /// The PHY used for transmission of data.
935    pub phy: Option<PhysicalLayer>,
936    /// Indicates whether the BIG is encrypted.
937    pub encryption: Option<bool>,
938    #[doc(hidden)]
939    pub __source_breaking: fidl::marker::SourceBreaking,
940}
941
942impl fidl::Persistable for BroadcastIsochronousGroupInfo {}
943
944/// A BIGInfo report that was received with a periodic advertisement.
945#[derive(Clone, Debug, Default, PartialEq)]
946pub struct BroadcastIsochronousGroupInfoReport {
947    pub info: Option<BroadcastIsochronousGroupInfo>,
948    /// The timestamp when the report was received by the host.
949    pub timestamp: Option<i64>,
950    #[doc(hidden)]
951    pub __source_breaking: fidl::marker::SourceBreaking,
952}
953
954impl fidl::Persistable for BroadcastIsochronousGroupInfoReport {}
955
956#[derive(Clone, Debug, Default, PartialEq)]
957pub struct CentralCreateConnectedIsochronousGroupResponse {
958    /// A unique CIG_ID, allocated by the host.
959    pub cig_id: Option<u8>,
960    #[doc(hidden)]
961    pub __source_breaking: fidl::marker::SourceBreaking,
962}
963
964impl fidl::Persistable for CentralCreateConnectedIsochronousGroupResponse {}
965
966#[derive(Clone, Debug, Default, PartialEq)]
967pub struct ChannelListenerRegistryListenL2capResponse {
968    /// PSM assigned by the registry. Guaranteed to be in the `DYNAMIC`
969    /// range of PSM values.
970    pub psm: Option<u16>,
971    #[doc(hidden)]
972    pub __source_breaking: fidl::marker::SourceBreaking,
973}
974
975impl fidl::Persistable for ChannelListenerRegistryListenL2capResponse {}
976
977#[derive(Clone, Debug, Default, PartialEq)]
978pub struct CigParameters {
979    /// Interval between the start of consecutive SDUs (central => peripheral,
980    /// microseconds). This is a function of the codec being used.
981    /// Required.
982    pub sdu_interval_c_to_p: Option<u32>,
983    /// Interval between the start of consecutive SDUs (peripheral => central,
984    /// microseconds). This is a function of the codec being used.
985    /// Required.
986    pub sdu_interval_p_to_c: Option<u32>,
987    /// The preferred method of arranging subevents of multiple CISes. The
988    /// controller may ignore this parameter.
989    /// Optional. If not specified, SEQUENTIAL will be used.
990    pub packing: Option<CigPacking>,
991    /// Specifies inclusion of time offset values in data frame.
992    /// Optional. If not specified, UNFRAMED will be used.
993    pub framing: Option<CigFramingOptions>,
994    /// Maximum latency, in milliseconds, between controllers (central =>
995    /// peripheral).
996    /// Required.
997    pub max_transport_latency_c_to_p: Option<u16>,
998    /// Maximum latency, in milliseconds, between controllers (peripheral =>
999    /// central).
1000    /// Required.
1001    pub max_transport_latency_p_to_c: Option<u16>,
1002    #[doc(hidden)]
1003    pub __source_breaking: fidl::marker::SourceBreaking,
1004}
1005
1006impl fidl::Persistable for CigParameters {}
1007
1008/// Established configuration for a single CIS.
1009#[derive(Clone, Debug, Default, PartialEq)]
1010pub struct CisEstablishedParameters {
1011    /// Maximum time for transmission of PDUs of all CISes in a CIG event.
1012    /// In the range [234, 8388607] microseconds.
1013    ///
1014    /// This field is always present.
1015    pub cig_sync_delay: Option<i64>,
1016    /// The maximum time for transmission of PDUs of the specified CIS in a CIG
1017    /// event. In the range [234, 8388607] microseconds.
1018    ///
1019    /// This field is always present.
1020    pub cis_sync_delay: Option<i64>,
1021    /// Maximum number of subevents in each CIS event.
1022    ///
1023    /// This field is always present.
1024    pub max_subevents: Option<u8>,
1025    /// Time between two consecutive CIS anchor points, in the range [5ms, 4s]
1026    ///
1027    /// This field is always present.
1028    pub iso_interval: Option<i64>,
1029    /// Parameters for Central => Peripheral transmissions, if applicable.
1030    ///
1031    /// This field is present if the stream includes isochronous data transmission from the
1032    /// Central to the Peripheral.
1033    pub central_to_peripheral_params: Option<CisUnidirectionalParams>,
1034    /// Parameters for Peripheral => Central transmissions, if applicable.
1035    ///
1036    /// This field is present if the stream includes isochronous data transmission from the
1037    /// Peripheral to the Central.
1038    pub peripheral_to_central_params: Option<CisUnidirectionalParams>,
1039    #[doc(hidden)]
1040    pub __source_breaking: fidl::marker::SourceBreaking,
1041}
1042
1043impl fidl::Persistable for CisEstablishedParameters {}
1044
1045#[derive(Clone, Debug, Default, PartialEq)]
1046pub struct CisParameters {
1047    /// ID of the stream to establish (as previously passed to Connection/CreateCig()).
1048    /// Required.
1049    pub cis_id: Option<u8>,
1050    /// Peripheral device providing other end of the isochronous data stream.
1051    /// Required.
1052    pub id: Option<fidl_fuchsia_bluetooth__common::PeerId>,
1053    #[doc(hidden)]
1054    pub __source_breaking: fidl::marker::SourceBreaking,
1055}
1056
1057impl fidl::Persistable for CisParameters {}
1058
1059/// Parameters related to a single direction of transmission in an established CIS.
1060#[derive(Clone, Debug, Default, PartialEq)]
1061pub struct CisUnidirectionalParams {
1062    /// Transport latency, in the range [234, 8388607] microseconds
1063    ///
1064    /// This field is always present.
1065    pub transport_latency: Option<i64>,
1066    /// Burst number for transmissions in this direction.
1067    ///
1068    /// This field is always present.
1069    pub burst_number: Option<u8>,
1070    /// Flush timeout for each payload, in multiples of the ISO interval.
1071    ///
1072    /// This field is always present.
1073    pub flush_timeout: Option<u8>,
1074    #[doc(hidden)]
1075    pub __source_breaking: fidl::marker::SourceBreaking,
1076}
1077
1078impl fidl::Persistable for CisUnidirectionalParams {}
1079
1080#[derive(Clone, Debug, Default, PartialEq)]
1081pub struct CodecDelayGetCodecLocalDelayRangeRequest {
1082    /// Logical transport type being used. Currenly only supports LE transport mechanisms
1083    /// (CIS or BIS). Required.
1084    pub logical_transport_type: Option<fidl_fuchsia_bluetooth__common::LogicalTransportType>,
1085    /// Indicates direction of data flow. Required.
1086    pub data_direction: Option<fidl_fuchsia_bluetooth__common::DataDirection>,
1087    /// Codec being used over the air. Required.
1088    pub codec_attributes: Option<fidl_fuchsia_bluetooth__common::CodecAttributes>,
1089    #[doc(hidden)]
1090    pub __source_breaking: fidl::marker::SourceBreaking,
1091}
1092
1093impl fidl::Persistable for CodecDelayGetCodecLocalDelayRangeRequest {}
1094
1095#[derive(Clone, Debug, Default, PartialEq)]
1096pub struct CodecDelayGetCodecLocalDelayRangeResponse {
1097    /// Minimum controller delay for the specified configuration, in the range [0, 4] seconds.
1098    /// Always provided on success.
1099    pub min_controller_delay: Option<i64>,
1100    /// Maximum controller delay for the specified configuration, in the range [0, 4] seconds.
1101    /// Always provided on success.
1102    pub max_controller_delay: Option<i64>,
1103    #[doc(hidden)]
1104    pub __source_breaking: fidl::marker::SourceBreaking,
1105}
1106
1107impl fidl::Persistable for CodecDelayGetCodecLocalDelayRangeResponse {}
1108
1109#[derive(Clone, Debug, Default, PartialEq)]
1110pub struct ConnectedIsochronousGroupEstablishStreamsRequest {
1111    /// Required.
1112    pub cis_params: Option<Vec<CisParameters>>,
1113    #[doc(hidden)]
1114    pub __source_breaking: fidl::marker::SourceBreaking,
1115}
1116
1117impl fidl::Persistable for ConnectedIsochronousGroupEstablishStreamsRequest {}
1118
1119/// Represents parameters that are set on a per-connection basis by FIDL protocols that create
1120/// Low Energy connections.
1121#[derive(Clone, Debug, Default, PartialEq)]
1122pub struct ConnectionOptions {
1123    /// When true, the connection operates in bondable mode. This means pairing will form a bond,
1124    /// or persist across disconnections, if the peer is also in bondable mode. When not present,
1125    /// the connection defaults to bondable mode. When false, the connection operates in non-
1126    /// bondable mode, which means the local device only allows pairing that does not form a bond.
1127    pub bondable_mode: Option<bool>,
1128    /// When present, service discovery performed following the connection is restricted to primary
1129    /// services that match this field. Otherwise, by default all available services are discovered.
1130    pub service_filter: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1131    #[doc(hidden)]
1132    pub __source_breaking: fidl::marker::SourceBreaking,
1133}
1134
1135impl fidl::Persistable for ConnectionOptions {}
1136
1137#[derive(Clone, Debug, Default, PartialEq)]
1138pub struct ConnectionTransferPeriodicAdvertisingSyncRequest {
1139    /// Required.
1140    pub sync_id: Option<PeriodicAdvertisingSyncId>,
1141    /// Application specific data to send with the sync.
1142    /// Optional.
1143    /// Default: 0
1144    pub service_data: Option<u16>,
1145    #[doc(hidden)]
1146    pub __source_breaking: fidl::marker::SourceBreaking,
1147}
1148
1149impl fidl::Persistable for ConnectionTransferPeriodicAdvertisingSyncRequest {}
1150
1151#[derive(Clone, Debug, Default, PartialEq)]
1152pub struct Extended {
1153    #[doc(hidden)]
1154    pub __source_breaking: fidl::marker::SourceBreaking,
1155}
1156
1157impl fidl::Persistable for Extended {}
1158
1159/// Filter parameters for use during a scan. A discovered peer only matches the
1160/// filter if it satisfies all of the present filter parameters.
1161#[derive(Clone, Debug, Default, PartialEq)]
1162pub struct Filter {
1163    /// Filter based on advertised service UUID.
1164    pub service_uuid: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1165    /// Filter based on service data containing the given UUID.
1166    pub service_data_uuid: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1167    /// Filter based on a manufacturer identifier present in the manufacturer
1168    /// data. If this filter parameter is set, then the advertising payload must
1169    /// contain manufacturer specific data with the provided company identifier
1170    /// to satisfy this filter. Manufacturer identifiers can be found at
1171    /// https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/
1172    pub manufacturer_id: Option<u16>,
1173    /// Filter based on whether or not a device is connectable. For example, a
1174    /// client that is only interested in peripherals that it can connect to can
1175    /// set this to true. Similarly a client can scan only for broadcasters by
1176    /// setting this to false.
1177    pub connectable: Option<bool>,
1178    /// Filter results based on a portion of the advertised device name.
1179    /// Substring matches are allowed.
1180    pub name: Option<String>,
1181    /// Filter results based on the path loss of the radio wave. A device that
1182    /// matches this filter must satisfy the following:
1183    ///   1. Radio transmission power level and received signal strength must be
1184    ///      available for the path loss calculation;
1185    ///   2. The calculated path loss value must be less than, or equal to,
1186    ///      `max_path_loss`.
1187    ///
1188    /// NOTE: This field is calculated using the RSSI and TX Power information
1189    /// obtained from advertising and scan response data during a scan procedure.
1190    /// It should NOT be confused with information for an active connection
1191    /// obtained using the "Path Loss Reporting" feature.
1192    pub max_path_loss: Option<i8>,
1193    /// Filter based on a service solicitation by service UUID.
1194    /// Service solicitation is an invitation to a peer to connect if they
1195    /// provide a service we want to use.
1196    pub solicitation_uuid: Option<fidl_fuchsia_bluetooth__common::Uuid>,
1197    #[doc(hidden)]
1198    pub __source_breaking: fidl::marker::SourceBreaking,
1199}
1200
1201impl fidl::Persistable for Filter {}
1202
1203#[derive(Clone, Debug, Default, PartialEq)]
1204pub struct IsochronousStreamOnEstablishedRequest {
1205    /// A result of ZX_ERR_INTERNAL indicates that the controller received a request
1206    /// but was unable to establish the stream.
1207    pub result: Option<i32>,
1208    /// This field is always present if a stream was successfully established.
1209    pub established_params: Option<CisEstablishedParameters>,
1210    #[doc(hidden)]
1211    pub __source_breaking: fidl::marker::SourceBreaking,
1212}
1213
1214impl fidl::Persistable for IsochronousStreamOnEstablishedRequest {}
1215
1216#[derive(Clone, Debug, Default, PartialEq)]
1217pub struct IsochronousStreamSetupDataPathRequest {
1218    /// Directions in which data will flow.
1219    /// Required.
1220    pub data_direction: Option<fidl_fuchsia_bluetooth__common::DataDirection>,
1221    /// Specifies the coding format used over the air.
1222    /// Required.
1223    pub codec_attributes: Option<fidl_fuchsia_bluetooth__common::CodecAttributes>,
1224    /// The delay provided must be within the controller's supported range and should not
1225    /// exceed 4 seconds.
1226    /// Required.
1227    pub controller_delay: Option<i64>,
1228    #[doc(hidden)]
1229    pub __source_breaking: fidl::marker::SourceBreaking,
1230}
1231
1232impl fidl::Persistable for IsochronousStreamSetupDataPathRequest {}
1233
1234#[derive(Clone, Debug, Default, PartialEq)]
1235pub struct IsochronousStreamWriteRequest {
1236    /// The data frame itself.
1237    pub data: Option<Vec<u8>>,
1238    #[doc(hidden)]
1239    pub __source_breaking: fidl::marker::SourceBreaking,
1240}
1241
1242impl fidl::Persistable for IsochronousStreamWriteRequest {}
1243
1244#[derive(Clone, Debug, Default, PartialEq)]
1245pub struct IsochronousStreamReadResponse {
1246    /// The data frame itself.
1247    /// Required.
1248    pub data: Option<Vec<u8>>,
1249    /// The sequence number associated with the frame.
1250    /// Required.
1251    pub sequence_number: Option<u16>,
1252    /// Status flags of packet, as reported by the controller.
1253    /// Required.
1254    pub status_flag: Option<IsoPacketStatusFlag>,
1255    /// Reception timestamp, as reported by the controller.
1256    /// Optional.
1257    pub timestamp: Option<i64>,
1258    #[doc(hidden)]
1259    pub __source_breaking: fidl::marker::SourceBreaking,
1260}
1261
1262impl fidl::Persistable for IsochronousStreamReadResponse {}
1263
1264#[derive(Clone, Debug, Default, PartialEq)]
1265pub struct Legacy {
1266    #[doc(hidden)]
1267    pub __source_breaking: fidl::marker::SourceBreaking,
1268}
1269
1270impl fidl::Persistable for Legacy {}
1271
1272/// Represents a Bluetooth Low Energy peer that may act in the broadcaster, peripheral, or central
1273/// role. The peer's role depends on whether it is obtained from the Central or Peripheral protocol.
1274#[derive(Clone, Debug, Default, PartialEq)]
1275pub struct Peer {
1276    /// Uniquely identifies this peer on the current system.
1277    ///
1278    /// This field is always present.
1279    pub id: Option<fidl_fuchsia_bluetooth__common::PeerId>,
1280    /// Whether or not this peer is connectable. Non-connectable peers are typically in the LE
1281    /// broadcaster role.
1282    ///
1283    /// This field is always present.
1284    pub connectable: Option<bool>,
1285    /// The last observed signal strength of this peer. This field is only present for a peer that
1286    /// is broadcasting. The RSSI can be stale if the peer has not been advertising.
1287    ///
1288    /// NOTE: This field should NOT be confused with the "connection RSSI" of a peer that is currently
1289    /// connected to the system.
1290    pub rssi: Option<i8>,
1291    pub advertising_data: Option<AdvertisingData>,
1292    /// The name of this peer. The name is often obtained during a scan procedure and can get
1293    /// updated during the name discovery procedure following a connection.
1294    ///
1295    /// This field is present if the name is known.
1296    pub name: Option<String>,
1297    /// Information from advertising and scan response data broadcast by this peer. When present,
1298    /// this contains the advertising data last received from the peer.
1299    pub data: Option<ScanData>,
1300    /// Whether or not this peer is bonded.
1301    ///
1302    /// This field is always present.
1303    pub bonded: Option<bool>,
1304    /// The value of the system monotonic clock, measured at the time this peer
1305    /// was last updated (e.g. due to reception of an advertisement).
1306    ///
1307    /// This field is always present.
1308    pub last_updated: Option<i64>,
1309    /// Value of the Advertising SID.
1310    ///
1311    /// Range: 0x00 to 0x0F
1312    pub advertising_sid: Option<u8>,
1313    /// Interval of the periodic advertising.
1314    /// The presence of this field indicates that a periodic advertising train
1315    /// is associated with this advertisement.
1316    ///
1317    /// Range: 0x0006 to 0xFFFF
1318    /// Time: N × 1.25 ms
1319    pub periodic_advertising_interval: Option<u16>,
1320    #[doc(hidden)]
1321    pub __source_breaking: fidl::marker::SourceBreaking,
1322}
1323
1324impl fidl::Persistable for Peer {}
1325
1326#[derive(Clone, Debug, Default, PartialEq)]
1327pub struct PeriodicAdvertisingReport {
1328    /// The signal strength of the advertising report.
1329    pub rssi: Option<i8>,
1330    /// The advertising data payload sent with this report.
1331    pub data: Option<ScanData>,
1332    /// The event counter of the event that the advertising packet was received
1333    /// in. This can be used to reply to the report.
1334    pub event_counter: Option<u16>,
1335    /// The subevent number of the report. Only present if the packet was received in a subevent.
1336    pub subevent: Option<u8>,
1337    /// The timestamp when the report was received by the host.
1338    pub timestamp: Option<i64>,
1339    #[doc(hidden)]
1340    pub __source_breaking: fidl::marker::SourceBreaking,
1341}
1342
1343impl fidl::Persistable for PeriodicAdvertisingReport {}
1344
1345#[derive(Clone, Debug, Default, PartialEq)]
1346pub struct PeriodicAdvertisingSyncConfiguration {
1347    /// Filter out duplicate advertising reports.
1348    /// Optional.
1349    /// Default: true
1350    pub filter_duplicates: Option<bool>,
1351    #[doc(hidden)]
1352    pub __source_breaking: fidl::marker::SourceBreaking,
1353}
1354
1355impl fidl::Persistable for PeriodicAdvertisingSyncConfiguration {}
1356
1357#[derive(Clone, Debug, Default, PartialEq)]
1358pub struct PeriodicAdvertisingSyncOnEstablishedRequest {
1359    /// Used in Connection.TransferPeriodicAdvertisingSync.
1360    pub id: Option<PeriodicAdvertisingSyncId>,
1361    /// The number of subevents this periodic advertisement has.
1362    pub subevents_count: Option<u8>,
1363    pub peer_id: Option<fidl_fuchsia_bluetooth__common::PeerId>,
1364    /// Present for Sync transfers only. Application specific data received
1365    /// with the transfer.
1366    pub service_data: Option<u16>,
1367    pub advertising_sid: Option<u8>,
1368    pub phy: Option<PhysicalLayer>,
1369    /// Kept in interval units as profiles use this field unchanged.
1370    /// Range: 0x0006 to 0xFFFF
1371    /// Time: N × 1.25 ms
1372    pub periodic_advertising_interval: Option<u16>,
1373    #[doc(hidden)]
1374    pub __source_breaking: fidl::marker::SourceBreaking,
1375}
1376
1377impl fidl::Persistable for PeriodicAdvertisingSyncOnEstablishedRequest {}
1378
1379#[derive(Clone, Debug, Default, PartialEq)]
1380pub struct PeriodicAdvertisingSyncSyncToSubeventsRequest {
1381    /// A list of subevent numbers to sync to.
1382    pub subevents: Option<Vec<u8>>,
1383    #[doc(hidden)]
1384    pub __source_breaking: fidl::marker::SourceBreaking,
1385}
1386
1387impl fidl::Persistable for PeriodicAdvertisingSyncSyncToSubeventsRequest {}
1388
1389#[derive(Clone, Debug, Default, PartialEq)]
1390pub struct PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
1391    pub reports: Option<Vec<SyncReport>>,
1392    #[doc(hidden)]
1393    pub __source_breaking: fidl::marker::SourceBreaking,
1394}
1395
1396impl fidl::Persistable for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {}
1397
1398/// Information obtained from advertising and scan response data broadcast by a peer.
1399#[derive(Clone, Debug, Default, PartialEq)]
1400pub struct ScanData {
1401    /// The radio transmit power level reported by an advertising and/or scannable peer.
1402    ///
1403    /// NOTE: This field should NOT be confused with the "connection TX Power Level" of a peer that
1404    /// is currently connected to the system obtained via the "Transmit Power reporting" feature.
1405    pub tx_power: Option<i8>,
1406    /// The appearance of the device.
1407    pub appearance: Option<fidl_fuchsia_bluetooth__common::Appearance>,
1408    /// Service UUIDs.
1409    pub service_uuids: Option<Vec<fidl_fuchsia_bluetooth__common::Uuid>>,
1410    /// Service data entries.
1411    pub service_data: Option<Vec<ServiceData>>,
1412    /// Manufacturer-specific data entries.
1413    pub manufacturer_data: Option<Vec<ManufacturerData>>,
1414    /// String representing a URI to be advertised, as defined in [IETF STD 66](https://tools.ietf.org/html/std66).
1415    /// Each entry should be a UTF-8 string including the scheme. For more information, see
1416    /// https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for allowed schemes;
1417    /// NOTE: Bluetooth advertising compresses schemas over the air to save space. See
1418    /// https://www.bluetooth.com/specifications/assigned-numbers/uri-scheme-name-string-mapping.
1419    pub uris: Option<Vec<String>>,
1420    /// The monotonic time when this scan data was received.
1421    pub timestamp: Option<i64>,
1422    /// Identifies the peer as belonging to a Coordinated Set.
1423    /// Resolution and generation of this parameter is defined in the
1424    /// Coordinated Set Identification Service Specification.
1425    pub resolvable_set_identifier: Option<[u8; 6]>,
1426    /// The broadcast name string can be used by a user interface on a scanning
1427    /// device that displays information on the available broadcast sources.
1428    ///
1429    /// Multiple devices with the same Broadcast Name may be transmitting the
1430    /// same data, allowing devices to choose one.  At least 4 unicode characters
1431    /// long and no more than 32 characters.
1432    ///
1433    /// Defined in the Public Broadcast Profile specification.
1434    pub broadcast_name: Option<String>,
1435    #[doc(hidden)]
1436    pub __source_breaking: fidl::marker::SourceBreaking,
1437}
1438
1439impl fidl::Persistable for ScanData {}
1440
1441/// Parameters used during a scan.
1442#[derive(Clone, Debug, Default, PartialEq)]
1443pub struct ScanOptions {
1444    /// List of filters for use during a scan. A peripheral that satisfies any
1445    /// of these filters will be reported. At least 1 filter must be specified.
1446    /// While not recommended, clients that require that all peripherals be
1447    /// reported can specify an empty filter.
1448    pub filters: Option<Vec<Filter>>,
1449    #[doc(hidden)]
1450    pub __source_breaking: fidl::marker::SourceBreaking,
1451}
1452
1453impl fidl::Persistable for ScanOptions {}
1454
1455#[derive(Clone, Debug)]
1456pub enum AdvertisingProcedure {
1457    /// Advertise using legacy advertising packets. All devices should be able
1458    /// to discover this type of packet.
1459    Legacy(Legacy),
1460    /// Advertise using extended advertising packets. Extended advertising
1461    /// packets allow for a much larger amount of data to be advertised than
1462    /// legacy advertising packets (31 bytes vs 251 bytes per PDU). Extended
1463    /// advertising packets support up to 1,650 bytes in an advertisement chain,
1464    /// but they are only discoverable by newer devices using Bluetooth 5.0+.
1465    ///
1466    /// Extended advertising packets are not supported by all
1467    /// products. PeripheralError::NOT_SUPPORTED will be returned if requested
1468    /// and not supported.
1469    Extended(Extended),
1470    #[doc(hidden)]
1471    __SourceBreaking { unknown_ordinal: u64 },
1472}
1473
1474/// Pattern that matches an unknown `AdvertisingProcedure` member.
1475#[macro_export]
1476macro_rules! AdvertisingProcedureUnknown {
1477    () => {
1478        _
1479    };
1480}
1481
1482// Custom PartialEq so that unknown variants are not equal to themselves.
1483impl PartialEq for AdvertisingProcedure {
1484    fn eq(&self, other: &Self) -> bool {
1485        match (self, other) {
1486            (Self::Legacy(x), Self::Legacy(y)) => *x == *y,
1487            (Self::Extended(x), Self::Extended(y)) => *x == *y,
1488            _ => false,
1489        }
1490    }
1491}
1492
1493impl AdvertisingProcedure {
1494    #[inline]
1495    pub fn ordinal(&self) -> u64 {
1496        match *self {
1497            Self::Legacy(_) => 1,
1498            Self::Extended(_) => 2,
1499            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1500        }
1501    }
1502
1503    #[inline]
1504    pub fn unknown_variant_for_testing() -> Self {
1505        Self::__SourceBreaking { unknown_ordinal: 0 }
1506    }
1507
1508    #[inline]
1509    pub fn is_unknown(&self) -> bool {
1510        match self {
1511            Self::__SourceBreaking { .. } => true,
1512            _ => false,
1513        }
1514    }
1515}
1516
1517impl fidl::Persistable for AdvertisingProcedure {}
1518
1519#[derive(Clone, Debug)]
1520pub enum SyncReport {
1521    PeriodicAdvertisingReport(PeriodicAdvertisingReport),
1522    BroadcastIsochronousGroupInfoReport(BroadcastIsochronousGroupInfoReport),
1523    #[doc(hidden)]
1524    __SourceBreaking {
1525        unknown_ordinal: u64,
1526    },
1527}
1528
1529/// Pattern that matches an unknown `SyncReport` member.
1530#[macro_export]
1531macro_rules! SyncReportUnknown {
1532    () => {
1533        _
1534    };
1535}
1536
1537// Custom PartialEq so that unknown variants are not equal to themselves.
1538impl PartialEq for SyncReport {
1539    fn eq(&self, other: &Self) -> bool {
1540        match (self, other) {
1541            (Self::PeriodicAdvertisingReport(x), Self::PeriodicAdvertisingReport(y)) => *x == *y,
1542            (
1543                Self::BroadcastIsochronousGroupInfoReport(x),
1544                Self::BroadcastIsochronousGroupInfoReport(y),
1545            ) => *x == *y,
1546            _ => false,
1547        }
1548    }
1549}
1550
1551impl SyncReport {
1552    #[inline]
1553    pub fn ordinal(&self) -> u64 {
1554        match *self {
1555            Self::PeriodicAdvertisingReport(_) => 1,
1556            Self::BroadcastIsochronousGroupInfoReport(_) => 2,
1557            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1558        }
1559    }
1560
1561    #[inline]
1562    pub fn unknown_variant_for_testing() -> Self {
1563        Self::__SourceBreaking { unknown_ordinal: 0 }
1564    }
1565
1566    #[inline]
1567    pub fn is_unknown(&self) -> bool {
1568        match self {
1569            Self::__SourceBreaking { .. } => true,
1570            _ => false,
1571        }
1572    }
1573}
1574
1575impl fidl::Persistable for SyncReport {}
1576
1577pub mod advertised_peripheral_ordinals {
1578    pub const ON_CONNECTED: u64 = 0x607b7716457eb178;
1579}
1580
1581pub mod advertising_handle_ordinals {}
1582
1583pub mod central_ordinals {
1584    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1585    pub const SCAN: u64 = 0x41f7121798dfe15f;
1586    pub const CONNECT: u64 = 0x31a3065f2a6913c4;
1587    pub const SYNC_TO_PERIODIC_ADVERTISING: u64 = 0x1db6df126a00c5b9;
1588    pub const CREATE_CONNECTED_ISOCHRONOUS_GROUP: u64 = 0x60323e70ae22e13;
1589    pub const GET_PERIPHERALS: u64 = 0x37ba777499c683a8;
1590    pub const GET_PERIPHERAL: u64 = 0x97f5a2f2d9c13da;
1591    pub const START_SCAN: u64 = 0xeb4cf0cd0e1132b;
1592    pub const STOP_SCAN: u64 = 0x5f79ee6a0bb037a0;
1593    pub const CONNECT_PERIPHERAL: u64 = 0x714d6c32d066d75a;
1594    pub const DISCONNECT_PERIPHERAL: u64 = 0xa9430da197362fd;
1595    pub const ON_SCAN_STATE_CHANGED: u64 = 0x5f8edc23cad04d3f;
1596    pub const ON_DEVICE_DISCOVERED: u64 = 0x708dadf20d66db6;
1597    pub const ON_PERIPHERAL_DISCONNECTED: u64 = 0x4e4c6b979b2126df;
1598}
1599
1600pub mod channel_listener_ordinals {
1601    pub const ACCEPT: u64 = 0x6f535bd36b20fc7b;
1602}
1603
1604pub mod channel_listener_registry_ordinals {
1605    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1606}
1607
1608pub mod codec_delay_ordinals {
1609    pub const GET_CODEC_LOCAL_DELAY_RANGE: u64 = 0x1cf34fdeed80b4d;
1610}
1611
1612pub mod connected_isochronous_group_ordinals {
1613    pub const ESTABLISH_STREAMS: u64 = 0xc7296c5edb4dacc;
1614    pub const REMOVE: u64 = 0xbed433babd20503;
1615}
1616
1617pub mod connection_ordinals {
1618    pub const GET_CODEC_LOCAL_DELAY_RANGE: u64 = 0x1cf34fdeed80b4d;
1619    pub const REQUEST_GATT_CLIENT: u64 = 0x2a670e0fec6ccc6b;
1620    pub const ACCEPT_CIS: u64 = 0x7e6338c237088144;
1621    pub const CONNECT_L2CAP: u64 = 0x12351316feaebce9;
1622    pub const TRANSFER_PERIODIC_ADVERTISING_SYNC: u64 = 0x1117a10b5ba1e219;
1623    pub const ACCEPT_PERIODIC_ADVERTISING_SYNC_TRANSFER: u64 = 0x441a31a7effa7e2b;
1624}
1625
1626pub mod isochronous_stream_ordinals {
1627    pub const ON_ESTABLISHED: u64 = 0x341c50e9d10f3421;
1628    pub const SETUP_DATA_PATH: u64 = 0x7ec1e2b9cc6d2fbe;
1629    pub const READ: u64 = 0x6d7d8b4950ed3a32;
1630    pub const WRITE: u64 = 0x5282e90b667d0d43;
1631}
1632
1633pub mod periodic_advertising_sync_ordinals {
1634    pub const ON_ESTABLISHED: u64 = 0x4a5c307761c40fdc;
1635    pub const ON_ERROR: u64 = 0x1c051673126ce4a;
1636    pub const WATCH_ADVERTISING_REPORT: u64 = 0x2ea610fea0e7d337;
1637    pub const SYNC_TO_SUBEVENTS: u64 = 0x653c5dab1f1d80ed;
1638    pub const CANCEL: u64 = 0xd617c037eaf5d92;
1639}
1640
1641pub mod peripheral_ordinals {
1642    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1643    pub const ADVERTISE: u64 = 0x2d9ec9260c32c17f;
1644    pub const START_ADVERTISING: u64 = 0x5875c1c575f00f7d;
1645    pub const ON_PEER_CONNECTED: u64 = 0x16135d464299e356;
1646}
1647
1648pub mod privileged_peripheral_ordinals {
1649    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1650    pub const ADVERTISE: u64 = 0x2d9ec9260c32c17f;
1651    pub const START_ADVERTISING: u64 = 0x5875c1c575f00f7d;
1652    pub const ON_PEER_CONNECTED: u64 = 0x16135d464299e356;
1653}
1654
1655pub mod scan_result_watcher_ordinals {
1656    pub const WATCH: u64 = 0x713a122e949f301a;
1657}
1658
1659mod internal {
1660    use super::*;
1661    unsafe impl fidl::encoding::TypeMarker for AdvertisingModeHint {
1662        type Owned = Self;
1663
1664        #[inline(always)]
1665        fn inline_align(_context: fidl::encoding::Context) -> usize {
1666            std::mem::align_of::<u8>()
1667        }
1668
1669        #[inline(always)]
1670        fn inline_size(_context: fidl::encoding::Context) -> usize {
1671            std::mem::size_of::<u8>()
1672        }
1673
1674        #[inline(always)]
1675        fn encode_is_copy() -> bool {
1676            true
1677        }
1678
1679        #[inline(always)]
1680        fn decode_is_copy() -> bool {
1681            false
1682        }
1683    }
1684
1685    impl fidl::encoding::ValueTypeMarker for AdvertisingModeHint {
1686        type Borrowed<'a> = Self;
1687        #[inline(always)]
1688        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1689            *value
1690        }
1691    }
1692
1693    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1694        for AdvertisingModeHint
1695    {
1696        #[inline]
1697        unsafe fn encode(
1698            self,
1699            encoder: &mut fidl::encoding::Encoder<'_, D>,
1700            offset: usize,
1701            _depth: fidl::encoding::Depth,
1702        ) -> fidl::Result<()> {
1703            encoder.debug_check_bounds::<Self>(offset);
1704            encoder.write_num(self.into_primitive(), offset);
1705            Ok(())
1706        }
1707    }
1708
1709    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingModeHint {
1710        #[inline(always)]
1711        fn new_empty() -> Self {
1712            Self::VeryFast
1713        }
1714
1715        #[inline]
1716        unsafe fn decode(
1717            &mut self,
1718            decoder: &mut fidl::encoding::Decoder<'_, D>,
1719            offset: usize,
1720            _depth: fidl::encoding::Depth,
1721        ) -> fidl::Result<()> {
1722            decoder.debug_check_bounds::<Self>(offset);
1723            let prim = decoder.read_num::<u8>(offset);
1724
1725            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1726            Ok(())
1727        }
1728    }
1729    unsafe impl fidl::encoding::TypeMarker for CentralError {
1730        type Owned = Self;
1731
1732        #[inline(always)]
1733        fn inline_align(_context: fidl::encoding::Context) -> usize {
1734            std::mem::align_of::<u32>()
1735        }
1736
1737        #[inline(always)]
1738        fn inline_size(_context: fidl::encoding::Context) -> usize {
1739            std::mem::size_of::<u32>()
1740        }
1741
1742        #[inline(always)]
1743        fn encode_is_copy() -> bool {
1744            true
1745        }
1746
1747        #[inline(always)]
1748        fn decode_is_copy() -> bool {
1749            false
1750        }
1751    }
1752
1753    impl fidl::encoding::ValueTypeMarker for CentralError {
1754        type Borrowed<'a> = Self;
1755        #[inline(always)]
1756        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1757            *value
1758        }
1759    }
1760
1761    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CentralError {
1762        #[inline]
1763        unsafe fn encode(
1764            self,
1765            encoder: &mut fidl::encoding::Encoder<'_, D>,
1766            offset: usize,
1767            _depth: fidl::encoding::Depth,
1768        ) -> fidl::Result<()> {
1769            encoder.debug_check_bounds::<Self>(offset);
1770            encoder.write_num(self.into_primitive(), offset);
1771            Ok(())
1772        }
1773    }
1774
1775    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CentralError {
1776        #[inline(always)]
1777        fn new_empty() -> Self {
1778            Self::Aborted
1779        }
1780
1781        #[inline]
1782        unsafe fn decode(
1783            &mut self,
1784            decoder: &mut fidl::encoding::Decoder<'_, D>,
1785            offset: usize,
1786            _depth: fidl::encoding::Depth,
1787        ) -> fidl::Result<()> {
1788            decoder.debug_check_bounds::<Self>(offset);
1789            let prim = decoder.read_num::<u32>(offset);
1790
1791            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1792            Ok(())
1793        }
1794    }
1795    unsafe impl fidl::encoding::TypeMarker for CigFramingOptions {
1796        type Owned = Self;
1797
1798        #[inline(always)]
1799        fn inline_align(_context: fidl::encoding::Context) -> usize {
1800            std::mem::align_of::<u32>()
1801        }
1802
1803        #[inline(always)]
1804        fn inline_size(_context: fidl::encoding::Context) -> usize {
1805            std::mem::size_of::<u32>()
1806        }
1807
1808        #[inline(always)]
1809        fn encode_is_copy() -> bool {
1810            true
1811        }
1812
1813        #[inline(always)]
1814        fn decode_is_copy() -> bool {
1815            false
1816        }
1817    }
1818
1819    impl fidl::encoding::ValueTypeMarker for CigFramingOptions {
1820        type Borrowed<'a> = Self;
1821        #[inline(always)]
1822        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1823            *value
1824        }
1825    }
1826
1827    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1828        for CigFramingOptions
1829    {
1830        #[inline]
1831        unsafe fn encode(
1832            self,
1833            encoder: &mut fidl::encoding::Encoder<'_, D>,
1834            offset: usize,
1835            _depth: fidl::encoding::Depth,
1836        ) -> fidl::Result<()> {
1837            encoder.debug_check_bounds::<Self>(offset);
1838            encoder.write_num(self.into_primitive(), offset);
1839            Ok(())
1840        }
1841    }
1842
1843    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigFramingOptions {
1844        #[inline(always)]
1845        fn new_empty() -> Self {
1846            Self::Unframed
1847        }
1848
1849        #[inline]
1850        unsafe fn decode(
1851            &mut self,
1852            decoder: &mut fidl::encoding::Decoder<'_, D>,
1853            offset: usize,
1854            _depth: fidl::encoding::Depth,
1855        ) -> fidl::Result<()> {
1856            decoder.debug_check_bounds::<Self>(offset);
1857            let prim = decoder.read_num::<u32>(offset);
1858
1859            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1860            Ok(())
1861        }
1862    }
1863    unsafe impl fidl::encoding::TypeMarker for CigPacking {
1864        type Owned = Self;
1865
1866        #[inline(always)]
1867        fn inline_align(_context: fidl::encoding::Context) -> usize {
1868            std::mem::align_of::<u32>()
1869        }
1870
1871        #[inline(always)]
1872        fn inline_size(_context: fidl::encoding::Context) -> usize {
1873            std::mem::size_of::<u32>()
1874        }
1875
1876        #[inline(always)]
1877        fn encode_is_copy() -> bool {
1878            false
1879        }
1880
1881        #[inline(always)]
1882        fn decode_is_copy() -> bool {
1883            false
1884        }
1885    }
1886
1887    impl fidl::encoding::ValueTypeMarker for CigPacking {
1888        type Borrowed<'a> = Self;
1889        #[inline(always)]
1890        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1891            *value
1892        }
1893    }
1894
1895    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CigPacking {
1896        #[inline]
1897        unsafe fn encode(
1898            self,
1899            encoder: &mut fidl::encoding::Encoder<'_, D>,
1900            offset: usize,
1901            _depth: fidl::encoding::Depth,
1902        ) -> fidl::Result<()> {
1903            encoder.debug_check_bounds::<Self>(offset);
1904            encoder.write_num(self.into_primitive(), offset);
1905            Ok(())
1906        }
1907    }
1908
1909    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigPacking {
1910        #[inline(always)]
1911        fn new_empty() -> Self {
1912            Self::unknown()
1913        }
1914
1915        #[inline]
1916        unsafe fn decode(
1917            &mut self,
1918            decoder: &mut fidl::encoding::Decoder<'_, D>,
1919            offset: usize,
1920            _depth: fidl::encoding::Depth,
1921        ) -> fidl::Result<()> {
1922            decoder.debug_check_bounds::<Self>(offset);
1923            let prim = decoder.read_num::<u32>(offset);
1924
1925            *self = Self::from_primitive_allow_unknown(prim);
1926            Ok(())
1927        }
1928    }
1929    unsafe impl fidl::encoding::TypeMarker for CreateCigError {
1930        type Owned = Self;
1931
1932        #[inline(always)]
1933        fn inline_align(_context: fidl::encoding::Context) -> usize {
1934            std::mem::align_of::<u32>()
1935        }
1936
1937        #[inline(always)]
1938        fn inline_size(_context: fidl::encoding::Context) -> usize {
1939            std::mem::size_of::<u32>()
1940        }
1941
1942        #[inline(always)]
1943        fn encode_is_copy() -> bool {
1944            false
1945        }
1946
1947        #[inline(always)]
1948        fn decode_is_copy() -> bool {
1949            false
1950        }
1951    }
1952
1953    impl fidl::encoding::ValueTypeMarker for CreateCigError {
1954        type Borrowed<'a> = Self;
1955        #[inline(always)]
1956        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1957            *value
1958        }
1959    }
1960
1961    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CreateCigError {
1962        #[inline]
1963        unsafe fn encode(
1964            self,
1965            encoder: &mut fidl::encoding::Encoder<'_, D>,
1966            offset: usize,
1967            _depth: fidl::encoding::Depth,
1968        ) -> fidl::Result<()> {
1969            encoder.debug_check_bounds::<Self>(offset);
1970            encoder.write_num(self.into_primitive(), offset);
1971            Ok(())
1972        }
1973    }
1974
1975    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CreateCigError {
1976        #[inline(always)]
1977        fn new_empty() -> Self {
1978            Self::unknown()
1979        }
1980
1981        #[inline]
1982        unsafe fn decode(
1983            &mut self,
1984            decoder: &mut fidl::encoding::Decoder<'_, D>,
1985            offset: usize,
1986            _depth: fidl::encoding::Depth,
1987        ) -> fidl::Result<()> {
1988            decoder.debug_check_bounds::<Self>(offset);
1989            let prim = decoder.read_num::<u32>(offset);
1990
1991            *self = Self::from_primitive_allow_unknown(prim);
1992            Ok(())
1993        }
1994    }
1995    unsafe impl fidl::encoding::TypeMarker for EstablishStreamsError {
1996        type Owned = Self;
1997
1998        #[inline(always)]
1999        fn inline_align(_context: fidl::encoding::Context) -> usize {
2000            std::mem::align_of::<u32>()
2001        }
2002
2003        #[inline(always)]
2004        fn inline_size(_context: fidl::encoding::Context) -> usize {
2005            std::mem::size_of::<u32>()
2006        }
2007
2008        #[inline(always)]
2009        fn encode_is_copy() -> bool {
2010            false
2011        }
2012
2013        #[inline(always)]
2014        fn decode_is_copy() -> bool {
2015            false
2016        }
2017    }
2018
2019    impl fidl::encoding::ValueTypeMarker for EstablishStreamsError {
2020        type Borrowed<'a> = Self;
2021        #[inline(always)]
2022        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2023            *value
2024        }
2025    }
2026
2027    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2028        for EstablishStreamsError
2029    {
2030        #[inline]
2031        unsafe fn encode(
2032            self,
2033            encoder: &mut fidl::encoding::Encoder<'_, D>,
2034            offset: usize,
2035            _depth: fidl::encoding::Depth,
2036        ) -> fidl::Result<()> {
2037            encoder.debug_check_bounds::<Self>(offset);
2038            encoder.write_num(self.into_primitive(), offset);
2039            Ok(())
2040        }
2041    }
2042
2043    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EstablishStreamsError {
2044        #[inline(always)]
2045        fn new_empty() -> Self {
2046            Self::unknown()
2047        }
2048
2049        #[inline]
2050        unsafe fn decode(
2051            &mut self,
2052            decoder: &mut fidl::encoding::Decoder<'_, D>,
2053            offset: usize,
2054            _depth: fidl::encoding::Depth,
2055        ) -> fidl::Result<()> {
2056            decoder.debug_check_bounds::<Self>(offset);
2057            let prim = decoder.read_num::<u32>(offset);
2058
2059            *self = Self::from_primitive_allow_unknown(prim);
2060            Ok(())
2061        }
2062    }
2063    unsafe impl fidl::encoding::TypeMarker for IsoPacketStatusFlag {
2064        type Owned = Self;
2065
2066        #[inline(always)]
2067        fn inline_align(_context: fidl::encoding::Context) -> usize {
2068            std::mem::align_of::<u8>()
2069        }
2070
2071        #[inline(always)]
2072        fn inline_size(_context: fidl::encoding::Context) -> usize {
2073            std::mem::size_of::<u8>()
2074        }
2075
2076        #[inline(always)]
2077        fn encode_is_copy() -> bool {
2078            true
2079        }
2080
2081        #[inline(always)]
2082        fn decode_is_copy() -> bool {
2083            false
2084        }
2085    }
2086
2087    impl fidl::encoding::ValueTypeMarker for IsoPacketStatusFlag {
2088        type Borrowed<'a> = Self;
2089        #[inline(always)]
2090        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2091            *value
2092        }
2093    }
2094
2095    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2096        for IsoPacketStatusFlag
2097    {
2098        #[inline]
2099        unsafe fn encode(
2100            self,
2101            encoder: &mut fidl::encoding::Encoder<'_, D>,
2102            offset: usize,
2103            _depth: fidl::encoding::Depth,
2104        ) -> fidl::Result<()> {
2105            encoder.debug_check_bounds::<Self>(offset);
2106            encoder.write_num(self.into_primitive(), offset);
2107            Ok(())
2108        }
2109    }
2110
2111    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IsoPacketStatusFlag {
2112        #[inline(always)]
2113        fn new_empty() -> Self {
2114            Self::ValidData
2115        }
2116
2117        #[inline]
2118        unsafe fn decode(
2119            &mut self,
2120            decoder: &mut fidl::encoding::Decoder<'_, D>,
2121            offset: usize,
2122            _depth: fidl::encoding::Depth,
2123        ) -> fidl::Result<()> {
2124            decoder.debug_check_bounds::<Self>(offset);
2125            let prim = decoder.read_num::<u8>(offset);
2126
2127            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2128            Ok(())
2129        }
2130    }
2131    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncError {
2132        type Owned = Self;
2133
2134        #[inline(always)]
2135        fn inline_align(_context: fidl::encoding::Context) -> usize {
2136            std::mem::align_of::<u32>()
2137        }
2138
2139        #[inline(always)]
2140        fn inline_size(_context: fidl::encoding::Context) -> usize {
2141            std::mem::size_of::<u32>()
2142        }
2143
2144        #[inline(always)]
2145        fn encode_is_copy() -> bool {
2146            false
2147        }
2148
2149        #[inline(always)]
2150        fn decode_is_copy() -> bool {
2151            false
2152        }
2153    }
2154
2155    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncError {
2156        type Borrowed<'a> = Self;
2157        #[inline(always)]
2158        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2159            *value
2160        }
2161    }
2162
2163    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2164        for PeriodicAdvertisingSyncError
2165    {
2166        #[inline]
2167        unsafe fn encode(
2168            self,
2169            encoder: &mut fidl::encoding::Encoder<'_, D>,
2170            offset: usize,
2171            _depth: fidl::encoding::Depth,
2172        ) -> fidl::Result<()> {
2173            encoder.debug_check_bounds::<Self>(offset);
2174            encoder.write_num(self.into_primitive(), offset);
2175            Ok(())
2176        }
2177    }
2178
2179    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2180        for PeriodicAdvertisingSyncError
2181    {
2182        #[inline(always)]
2183        fn new_empty() -> Self {
2184            Self::unknown()
2185        }
2186
2187        #[inline]
2188        unsafe fn decode(
2189            &mut self,
2190            decoder: &mut fidl::encoding::Decoder<'_, D>,
2191            offset: usize,
2192            _depth: fidl::encoding::Depth,
2193        ) -> fidl::Result<()> {
2194            decoder.debug_check_bounds::<Self>(offset);
2195            let prim = decoder.read_num::<u32>(offset);
2196
2197            *self = Self::from_primitive_allow_unknown(prim);
2198            Ok(())
2199        }
2200    }
2201    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncTransferError {
2202        type Owned = Self;
2203
2204        #[inline(always)]
2205        fn inline_align(_context: fidl::encoding::Context) -> usize {
2206            std::mem::align_of::<u32>()
2207        }
2208
2209        #[inline(always)]
2210        fn inline_size(_context: fidl::encoding::Context) -> usize {
2211            std::mem::size_of::<u32>()
2212        }
2213
2214        #[inline(always)]
2215        fn encode_is_copy() -> bool {
2216            false
2217        }
2218
2219        #[inline(always)]
2220        fn decode_is_copy() -> bool {
2221            false
2222        }
2223    }
2224
2225    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncTransferError {
2226        type Borrowed<'a> = Self;
2227        #[inline(always)]
2228        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2229            *value
2230        }
2231    }
2232
2233    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2234        for PeriodicAdvertisingSyncTransferError
2235    {
2236        #[inline]
2237        unsafe fn encode(
2238            self,
2239            encoder: &mut fidl::encoding::Encoder<'_, D>,
2240            offset: usize,
2241            _depth: fidl::encoding::Depth,
2242        ) -> fidl::Result<()> {
2243            encoder.debug_check_bounds::<Self>(offset);
2244            encoder.write_num(self.into_primitive(), offset);
2245            Ok(())
2246        }
2247    }
2248
2249    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2250        for PeriodicAdvertisingSyncTransferError
2251    {
2252        #[inline(always)]
2253        fn new_empty() -> Self {
2254            Self::unknown()
2255        }
2256
2257        #[inline]
2258        unsafe fn decode(
2259            &mut self,
2260            decoder: &mut fidl::encoding::Decoder<'_, D>,
2261            offset: usize,
2262            _depth: fidl::encoding::Depth,
2263        ) -> fidl::Result<()> {
2264            decoder.debug_check_bounds::<Self>(offset);
2265            let prim = decoder.read_num::<u32>(offset);
2266
2267            *self = Self::from_primitive_allow_unknown(prim);
2268            Ok(())
2269        }
2270    }
2271    unsafe impl fidl::encoding::TypeMarker for PeripheralError {
2272        type Owned = Self;
2273
2274        #[inline(always)]
2275        fn inline_align(_context: fidl::encoding::Context) -> usize {
2276            std::mem::align_of::<u32>()
2277        }
2278
2279        #[inline(always)]
2280        fn inline_size(_context: fidl::encoding::Context) -> usize {
2281            std::mem::size_of::<u32>()
2282        }
2283
2284        #[inline(always)]
2285        fn encode_is_copy() -> bool {
2286            true
2287        }
2288
2289        #[inline(always)]
2290        fn decode_is_copy() -> bool {
2291            false
2292        }
2293    }
2294
2295    impl fidl::encoding::ValueTypeMarker for PeripheralError {
2296        type Borrowed<'a> = Self;
2297        #[inline(always)]
2298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2299            *value
2300        }
2301    }
2302
2303    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2304        for PeripheralError
2305    {
2306        #[inline]
2307        unsafe fn encode(
2308            self,
2309            encoder: &mut fidl::encoding::Encoder<'_, D>,
2310            offset: usize,
2311            _depth: fidl::encoding::Depth,
2312        ) -> fidl::Result<()> {
2313            encoder.debug_check_bounds::<Self>(offset);
2314            encoder.write_num(self.into_primitive(), offset);
2315            Ok(())
2316        }
2317    }
2318
2319    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeripheralError {
2320        #[inline(always)]
2321        fn new_empty() -> Self {
2322            Self::NotSupported
2323        }
2324
2325        #[inline]
2326        unsafe fn decode(
2327            &mut self,
2328            decoder: &mut fidl::encoding::Decoder<'_, D>,
2329            offset: usize,
2330            _depth: fidl::encoding::Depth,
2331        ) -> fidl::Result<()> {
2332            decoder.debug_check_bounds::<Self>(offset);
2333            let prim = decoder.read_num::<u32>(offset);
2334
2335            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2336            Ok(())
2337        }
2338    }
2339    unsafe impl fidl::encoding::TypeMarker for PhysicalLayer {
2340        type Owned = Self;
2341
2342        #[inline(always)]
2343        fn inline_align(_context: fidl::encoding::Context) -> usize {
2344            std::mem::align_of::<u8>()
2345        }
2346
2347        #[inline(always)]
2348        fn inline_size(_context: fidl::encoding::Context) -> usize {
2349            std::mem::size_of::<u8>()
2350        }
2351
2352        #[inline(always)]
2353        fn encode_is_copy() -> bool {
2354            false
2355        }
2356
2357        #[inline(always)]
2358        fn decode_is_copy() -> bool {
2359            false
2360        }
2361    }
2362
2363    impl fidl::encoding::ValueTypeMarker for PhysicalLayer {
2364        type Borrowed<'a> = Self;
2365        #[inline(always)]
2366        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2367            *value
2368        }
2369    }
2370
2371    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PhysicalLayer {
2372        #[inline]
2373        unsafe fn encode(
2374            self,
2375            encoder: &mut fidl::encoding::Encoder<'_, D>,
2376            offset: usize,
2377            _depth: fidl::encoding::Depth,
2378        ) -> fidl::Result<()> {
2379            encoder.debug_check_bounds::<Self>(offset);
2380            encoder.write_num(self.into_primitive(), offset);
2381            Ok(())
2382        }
2383    }
2384
2385    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PhysicalLayer {
2386        #[inline(always)]
2387        fn new_empty() -> Self {
2388            Self::unknown()
2389        }
2390
2391        #[inline]
2392        unsafe fn decode(
2393            &mut self,
2394            decoder: &mut fidl::encoding::Decoder<'_, D>,
2395            offset: usize,
2396            _depth: fidl::encoding::Depth,
2397        ) -> fidl::Result<()> {
2398            decoder.debug_check_bounds::<Self>(offset);
2399            let prim = decoder.read_num::<u8>(offset);
2400
2401            *self = Self::from_primitive_allow_unknown(prim);
2402            Ok(())
2403        }
2404    }
2405
2406    impl fidl::encoding::ValueTypeMarker for AdvertisingDataDeprecated {
2407        type Borrowed<'a> = &'a Self;
2408        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2409            value
2410        }
2411    }
2412
2413    unsafe impl fidl::encoding::TypeMarker for AdvertisingDataDeprecated {
2414        type Owned = Self;
2415
2416        #[inline(always)]
2417        fn inline_align(_context: fidl::encoding::Context) -> usize {
2418            8
2419        }
2420
2421        #[inline(always)]
2422        fn inline_size(_context: fidl::encoding::Context) -> usize {
2423            112
2424        }
2425    }
2426
2427    unsafe impl<D: fidl::encoding::ResourceDialect>
2428        fidl::encoding::Encode<AdvertisingDataDeprecated, D> for &AdvertisingDataDeprecated
2429    {
2430        #[inline]
2431        unsafe fn encode(
2432            self,
2433            encoder: &mut fidl::encoding::Encoder<'_, D>,
2434            offset: usize,
2435            _depth: fidl::encoding::Depth,
2436        ) -> fidl::Result<()> {
2437            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2438            // Delegate to tuple encoding.
2439            fidl::encoding::Encode::<AdvertisingDataDeprecated, D>::encode(
2440                (
2441                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2442                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_power_level),
2443                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.appearance),
2444                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
2445                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data),
2446                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_specific_data),
2447                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.solicited_service_uuids),
2448                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>> as fidl::encoding::ValueTypeMarker>::borrow(&self.uris),
2449                ),
2450                encoder, offset, _depth
2451            )
2452        }
2453    }
2454    unsafe impl<
2455        D: fidl::encoding::ResourceDialect,
2456        T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
2457        T1: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
2458        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>, D>,
2459        T3: fidl::encoding::Encode<
2460                fidl::encoding::Optional<
2461                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2462                >,
2463                D,
2464            >,
2465        T4: fidl::encoding::Encode<
2466                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2467                D,
2468            >,
2469        T5: fidl::encoding::Encode<
2470                fidl::encoding::Optional<
2471                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2472                >,
2473                D,
2474            >,
2475        T6: fidl::encoding::Encode<
2476                fidl::encoding::Optional<
2477                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2478                >,
2479                D,
2480            >,
2481        T7: fidl::encoding::Encode<
2482                fidl::encoding::Optional<
2483                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2484                >,
2485                D,
2486            >,
2487    > fidl::encoding::Encode<AdvertisingDataDeprecated, D> for (T0, T1, T2, T3, T4, T5, T6, T7)
2488    {
2489        #[inline]
2490        unsafe fn encode(
2491            self,
2492            encoder: &mut fidl::encoding::Encoder<'_, D>,
2493            offset: usize,
2494            depth: fidl::encoding::Depth,
2495        ) -> fidl::Result<()> {
2496            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2497            // Zero out padding regions. There's no need to apply masks
2498            // because the unmasked parts will be overwritten by fields.
2499            // Write the fields.
2500            self.0.encode(encoder, offset + 0, depth)?;
2501            self.1.encode(encoder, offset + 16, depth)?;
2502            self.2.encode(encoder, offset + 24, depth)?;
2503            self.3.encode(encoder, offset + 32, depth)?;
2504            self.4.encode(encoder, offset + 48, depth)?;
2505            self.5.encode(encoder, offset + 64, depth)?;
2506            self.6.encode(encoder, offset + 80, depth)?;
2507            self.7.encode(encoder, offset + 96, depth)?;
2508            Ok(())
2509        }
2510    }
2511
2512    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2513        for AdvertisingDataDeprecated
2514    {
2515        #[inline(always)]
2516        fn new_empty() -> Self {
2517            Self {
2518                name: fidl::new_empty!(
2519                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2520                    D
2521                ),
2522                tx_power_level: fidl::new_empty!(
2523                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2524                    D
2525                ),
2526                appearance: fidl::new_empty!(
2527                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2528                    D
2529                ),
2530                service_uuids: fidl::new_empty!(
2531                    fidl::encoding::Optional<
2532                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2533                    >,
2534                    D
2535                ),
2536                service_data: fidl::new_empty!(
2537                    fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2538                    D
2539                ),
2540                manufacturer_specific_data: fidl::new_empty!(
2541                    fidl::encoding::Optional<
2542                        fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2543                    >,
2544                    D
2545                ),
2546                solicited_service_uuids: fidl::new_empty!(
2547                    fidl::encoding::Optional<
2548                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2549                    >,
2550                    D
2551                ),
2552                uris: fidl::new_empty!(
2553                    fidl::encoding::Optional<
2554                        fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2555                    >,
2556                    D
2557                ),
2558            }
2559        }
2560
2561        #[inline]
2562        unsafe fn decode(
2563            &mut self,
2564            decoder: &mut fidl::encoding::Decoder<'_, D>,
2565            offset: usize,
2566            _depth: fidl::encoding::Depth,
2567        ) -> fidl::Result<()> {
2568            decoder.debug_check_bounds::<Self>(offset);
2569            // Verify that padding bytes are zero.
2570            fidl::decode!(
2571                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2572                D,
2573                &mut self.name,
2574                decoder,
2575                offset + 0,
2576                _depth
2577            )?;
2578            fidl::decode!(
2579                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2580                D,
2581                &mut self.tx_power_level,
2582                decoder,
2583                offset + 16,
2584                _depth
2585            )?;
2586            fidl::decode!(
2587                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2588                D,
2589                &mut self.appearance,
2590                decoder,
2591                offset + 24,
2592                _depth
2593            )?;
2594            fidl::decode!(
2595                fidl::encoding::Optional<
2596                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2597                >,
2598                D,
2599                &mut self.service_uuids,
2600                decoder,
2601                offset + 32,
2602                _depth
2603            )?;
2604            fidl::decode!(
2605                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2606                D,
2607                &mut self.service_data,
2608                decoder,
2609                offset + 48,
2610                _depth
2611            )?;
2612            fidl::decode!(
2613                fidl::encoding::Optional<
2614                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2615                >,
2616                D,
2617                &mut self.manufacturer_specific_data,
2618                decoder,
2619                offset + 64,
2620                _depth
2621            )?;
2622            fidl::decode!(
2623                fidl::encoding::Optional<
2624                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2625                >,
2626                D,
2627                &mut self.solicited_service_uuids,
2628                decoder,
2629                offset + 80,
2630                _depth
2631            )?;
2632            fidl::decode!(
2633                fidl::encoding::Optional<
2634                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2635                >,
2636                D,
2637                &mut self.uris,
2638                decoder,
2639                offset + 96,
2640                _depth
2641            )?;
2642            Ok(())
2643        }
2644    }
2645
2646    impl fidl::encoding::ValueTypeMarker for CentralConnectPeripheralResponse {
2647        type Borrowed<'a> = &'a Self;
2648        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2649            value
2650        }
2651    }
2652
2653    unsafe impl fidl::encoding::TypeMarker for CentralConnectPeripheralResponse {
2654        type Owned = Self;
2655
2656        #[inline(always)]
2657        fn inline_align(_context: fidl::encoding::Context) -> usize {
2658            8
2659        }
2660
2661        #[inline(always)]
2662        fn inline_size(_context: fidl::encoding::Context) -> usize {
2663            8
2664        }
2665    }
2666
2667    unsafe impl<D: fidl::encoding::ResourceDialect>
2668        fidl::encoding::Encode<CentralConnectPeripheralResponse, D>
2669        for &CentralConnectPeripheralResponse
2670    {
2671        #[inline]
2672        unsafe fn encode(
2673            self,
2674            encoder: &mut fidl::encoding::Encoder<'_, D>,
2675            offset: usize,
2676            _depth: fidl::encoding::Depth,
2677        ) -> fidl::Result<()> {
2678            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2679            // Delegate to tuple encoding.
2680            fidl::encoding::Encode::<CentralConnectPeripheralResponse, D>::encode(
2681                (
2682                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2683                ),
2684                encoder, offset, _depth
2685            )
2686        }
2687    }
2688    unsafe impl<
2689        D: fidl::encoding::ResourceDialect,
2690        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2691    > fidl::encoding::Encode<CentralConnectPeripheralResponse, D> for (T0,)
2692    {
2693        #[inline]
2694        unsafe fn encode(
2695            self,
2696            encoder: &mut fidl::encoding::Encoder<'_, D>,
2697            offset: usize,
2698            depth: fidl::encoding::Depth,
2699        ) -> fidl::Result<()> {
2700            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2701            // Zero out padding regions. There's no need to apply masks
2702            // because the unmasked parts will be overwritten by fields.
2703            // Write the fields.
2704            self.0.encode(encoder, offset + 0, depth)?;
2705            Ok(())
2706        }
2707    }
2708
2709    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2710        for CentralConnectPeripheralResponse
2711    {
2712        #[inline(always)]
2713        fn new_empty() -> Self {
2714            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2715        }
2716
2717        #[inline]
2718        unsafe fn decode(
2719            &mut self,
2720            decoder: &mut fidl::encoding::Decoder<'_, D>,
2721            offset: usize,
2722            _depth: fidl::encoding::Depth,
2723        ) -> fidl::Result<()> {
2724            decoder.debug_check_bounds::<Self>(offset);
2725            // Verify that padding bytes are zero.
2726            fidl::decode!(
2727                fidl_fuchsia_bluetooth__common::Status,
2728                D,
2729                &mut self.status,
2730                decoder,
2731                offset + 0,
2732                _depth
2733            )?;
2734            Ok(())
2735        }
2736    }
2737
2738    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralRequest {
2739        type Borrowed<'a> = &'a Self;
2740        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2741            value
2742        }
2743    }
2744
2745    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralRequest {
2746        type Owned = Self;
2747
2748        #[inline(always)]
2749        fn inline_align(_context: fidl::encoding::Context) -> usize {
2750            8
2751        }
2752
2753        #[inline(always)]
2754        fn inline_size(_context: fidl::encoding::Context) -> usize {
2755            16
2756        }
2757    }
2758
2759    unsafe impl<D: fidl::encoding::ResourceDialect>
2760        fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D>
2761        for &CentralDisconnectPeripheralRequest
2762    {
2763        #[inline]
2764        unsafe fn encode(
2765            self,
2766            encoder: &mut fidl::encoding::Encoder<'_, D>,
2767            offset: usize,
2768            _depth: fidl::encoding::Depth,
2769        ) -> fidl::Result<()> {
2770            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2771            // Delegate to tuple encoding.
2772            fidl::encoding::Encode::<CentralDisconnectPeripheralRequest, D>::encode(
2773                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2774                    &self.identifier,
2775                ),),
2776                encoder,
2777                offset,
2778                _depth,
2779            )
2780        }
2781    }
2782    unsafe impl<
2783        D: fidl::encoding::ResourceDialect,
2784        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2785    > fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D> for (T0,)
2786    {
2787        #[inline]
2788        unsafe fn encode(
2789            self,
2790            encoder: &mut fidl::encoding::Encoder<'_, D>,
2791            offset: usize,
2792            depth: fidl::encoding::Depth,
2793        ) -> fidl::Result<()> {
2794            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2795            // Zero out padding regions. There's no need to apply masks
2796            // because the unmasked parts will be overwritten by fields.
2797            // Write the fields.
2798            self.0.encode(encoder, offset + 0, depth)?;
2799            Ok(())
2800        }
2801    }
2802
2803    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2804        for CentralDisconnectPeripheralRequest
2805    {
2806        #[inline(always)]
2807        fn new_empty() -> Self {
2808            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2809        }
2810
2811        #[inline]
2812        unsafe fn decode(
2813            &mut self,
2814            decoder: &mut fidl::encoding::Decoder<'_, D>,
2815            offset: usize,
2816            _depth: fidl::encoding::Depth,
2817        ) -> fidl::Result<()> {
2818            decoder.debug_check_bounds::<Self>(offset);
2819            // Verify that padding bytes are zero.
2820            fidl::decode!(
2821                fidl::encoding::BoundedString<16>,
2822                D,
2823                &mut self.identifier,
2824                decoder,
2825                offset + 0,
2826                _depth
2827            )?;
2828            Ok(())
2829        }
2830    }
2831
2832    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralResponse {
2833        type Borrowed<'a> = &'a Self;
2834        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2835            value
2836        }
2837    }
2838
2839    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralResponse {
2840        type Owned = Self;
2841
2842        #[inline(always)]
2843        fn inline_align(_context: fidl::encoding::Context) -> usize {
2844            8
2845        }
2846
2847        #[inline(always)]
2848        fn inline_size(_context: fidl::encoding::Context) -> usize {
2849            8
2850        }
2851    }
2852
2853    unsafe impl<D: fidl::encoding::ResourceDialect>
2854        fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D>
2855        for &CentralDisconnectPeripheralResponse
2856    {
2857        #[inline]
2858        unsafe fn encode(
2859            self,
2860            encoder: &mut fidl::encoding::Encoder<'_, D>,
2861            offset: usize,
2862            _depth: fidl::encoding::Depth,
2863        ) -> fidl::Result<()> {
2864            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2865            // Delegate to tuple encoding.
2866            fidl::encoding::Encode::<CentralDisconnectPeripheralResponse, D>::encode(
2867                (
2868                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2869                ),
2870                encoder, offset, _depth
2871            )
2872        }
2873    }
2874    unsafe impl<
2875        D: fidl::encoding::ResourceDialect,
2876        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2877    > fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D> for (T0,)
2878    {
2879        #[inline]
2880        unsafe fn encode(
2881            self,
2882            encoder: &mut fidl::encoding::Encoder<'_, D>,
2883            offset: usize,
2884            depth: fidl::encoding::Depth,
2885        ) -> fidl::Result<()> {
2886            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2887            // Zero out padding regions. There's no need to apply masks
2888            // because the unmasked parts will be overwritten by fields.
2889            // Write the fields.
2890            self.0.encode(encoder, offset + 0, depth)?;
2891            Ok(())
2892        }
2893    }
2894
2895    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2896        for CentralDisconnectPeripheralResponse
2897    {
2898        #[inline(always)]
2899        fn new_empty() -> Self {
2900            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2901        }
2902
2903        #[inline]
2904        unsafe fn decode(
2905            &mut self,
2906            decoder: &mut fidl::encoding::Decoder<'_, D>,
2907            offset: usize,
2908            _depth: fidl::encoding::Depth,
2909        ) -> fidl::Result<()> {
2910            decoder.debug_check_bounds::<Self>(offset);
2911            // Verify that padding bytes are zero.
2912            fidl::decode!(
2913                fidl_fuchsia_bluetooth__common::Status,
2914                D,
2915                &mut self.status,
2916                decoder,
2917                offset + 0,
2918                _depth
2919            )?;
2920            Ok(())
2921        }
2922    }
2923
2924    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralRequest {
2925        type Borrowed<'a> = &'a Self;
2926        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2927            value
2928        }
2929    }
2930
2931    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralRequest {
2932        type Owned = Self;
2933
2934        #[inline(always)]
2935        fn inline_align(_context: fidl::encoding::Context) -> usize {
2936            8
2937        }
2938
2939        #[inline(always)]
2940        fn inline_size(_context: fidl::encoding::Context) -> usize {
2941            16
2942        }
2943    }
2944
2945    unsafe impl<D: fidl::encoding::ResourceDialect>
2946        fidl::encoding::Encode<CentralGetPeripheralRequest, D> for &CentralGetPeripheralRequest
2947    {
2948        #[inline]
2949        unsafe fn encode(
2950            self,
2951            encoder: &mut fidl::encoding::Encoder<'_, D>,
2952            offset: usize,
2953            _depth: fidl::encoding::Depth,
2954        ) -> fidl::Result<()> {
2955            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
2956            // Delegate to tuple encoding.
2957            fidl::encoding::Encode::<CentralGetPeripheralRequest, D>::encode(
2958                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2959                    &self.identifier,
2960                ),),
2961                encoder,
2962                offset,
2963                _depth,
2964            )
2965        }
2966    }
2967    unsafe impl<
2968        D: fidl::encoding::ResourceDialect,
2969        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2970    > fidl::encoding::Encode<CentralGetPeripheralRequest, D> for (T0,)
2971    {
2972        #[inline]
2973        unsafe fn encode(
2974            self,
2975            encoder: &mut fidl::encoding::Encoder<'_, D>,
2976            offset: usize,
2977            depth: fidl::encoding::Depth,
2978        ) -> fidl::Result<()> {
2979            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
2980            // Zero out padding regions. There's no need to apply masks
2981            // because the unmasked parts will be overwritten by fields.
2982            // Write the fields.
2983            self.0.encode(encoder, offset + 0, depth)?;
2984            Ok(())
2985        }
2986    }
2987
2988    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2989        for CentralGetPeripheralRequest
2990    {
2991        #[inline(always)]
2992        fn new_empty() -> Self {
2993            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2994        }
2995
2996        #[inline]
2997        unsafe fn decode(
2998            &mut self,
2999            decoder: &mut fidl::encoding::Decoder<'_, D>,
3000            offset: usize,
3001            _depth: fidl::encoding::Depth,
3002        ) -> fidl::Result<()> {
3003            decoder.debug_check_bounds::<Self>(offset);
3004            // Verify that padding bytes are zero.
3005            fidl::decode!(
3006                fidl::encoding::BoundedString<16>,
3007                D,
3008                &mut self.identifier,
3009                decoder,
3010                offset + 0,
3011                _depth
3012            )?;
3013            Ok(())
3014        }
3015    }
3016
3017    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralResponse {
3018        type Borrowed<'a> = &'a Self;
3019        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3020            value
3021        }
3022    }
3023
3024    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralResponse {
3025        type Owned = Self;
3026
3027        #[inline(always)]
3028        fn inline_align(_context: fidl::encoding::Context) -> usize {
3029            8
3030        }
3031
3032        #[inline(always)]
3033        fn inline_size(_context: fidl::encoding::Context) -> usize {
3034            8
3035        }
3036    }
3037
3038    unsafe impl<D: fidl::encoding::ResourceDialect>
3039        fidl::encoding::Encode<CentralGetPeripheralResponse, D> for &CentralGetPeripheralResponse
3040    {
3041        #[inline]
3042        unsafe fn encode(
3043            self,
3044            encoder: &mut fidl::encoding::Encoder<'_, D>,
3045            offset: usize,
3046            _depth: fidl::encoding::Depth,
3047        ) -> fidl::Result<()> {
3048            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3049            // Delegate to tuple encoding.
3050            fidl::encoding::Encode::<CentralGetPeripheralResponse, D>::encode(
3051                (<fidl::encoding::Boxed<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(
3052                    &self.peripheral,
3053                ),),
3054                encoder,
3055                offset,
3056                _depth,
3057            )
3058        }
3059    }
3060    unsafe impl<
3061        D: fidl::encoding::ResourceDialect,
3062        T0: fidl::encoding::Encode<fidl::encoding::Boxed<RemoteDevice>, D>,
3063    > fidl::encoding::Encode<CentralGetPeripheralResponse, D> for (T0,)
3064    {
3065        #[inline]
3066        unsafe fn encode(
3067            self,
3068            encoder: &mut fidl::encoding::Encoder<'_, D>,
3069            offset: usize,
3070            depth: fidl::encoding::Depth,
3071        ) -> fidl::Result<()> {
3072            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3073            // Zero out padding regions. There's no need to apply masks
3074            // because the unmasked parts will be overwritten by fields.
3075            // Write the fields.
3076            self.0.encode(encoder, offset + 0, depth)?;
3077            Ok(())
3078        }
3079    }
3080
3081    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3082        for CentralGetPeripheralResponse
3083    {
3084        #[inline(always)]
3085        fn new_empty() -> Self {
3086            Self { peripheral: fidl::new_empty!(fidl::encoding::Boxed<RemoteDevice>, D) }
3087        }
3088
3089        #[inline]
3090        unsafe fn decode(
3091            &mut self,
3092            decoder: &mut fidl::encoding::Decoder<'_, D>,
3093            offset: usize,
3094            _depth: fidl::encoding::Depth,
3095        ) -> fidl::Result<()> {
3096            decoder.debug_check_bounds::<Self>(offset);
3097            // Verify that padding bytes are zero.
3098            fidl::decode!(
3099                fidl::encoding::Boxed<RemoteDevice>,
3100                D,
3101                &mut self.peripheral,
3102                decoder,
3103                offset + 0,
3104                _depth
3105            )?;
3106            Ok(())
3107        }
3108    }
3109
3110    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsRequest {
3111        type Borrowed<'a> = &'a Self;
3112        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3113            value
3114        }
3115    }
3116
3117    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsRequest {
3118        type Owned = Self;
3119
3120        #[inline(always)]
3121        fn inline_align(_context: fidl::encoding::Context) -> usize {
3122            8
3123        }
3124
3125        #[inline(always)]
3126        fn inline_size(_context: fidl::encoding::Context) -> usize {
3127            16
3128        }
3129    }
3130
3131    unsafe impl<D: fidl::encoding::ResourceDialect>
3132        fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for &CentralGetPeripheralsRequest
3133    {
3134        #[inline]
3135        unsafe fn encode(
3136            self,
3137            encoder: &mut fidl::encoding::Encoder<'_, D>,
3138            offset: usize,
3139            _depth: fidl::encoding::Depth,
3140        ) -> fidl::Result<()> {
3141            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3142            // Delegate to tuple encoding.
3143            fidl::encoding::Encode::<CentralGetPeripheralsRequest, D>::encode(
3144                (<fidl::encoding::Optional<
3145                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3146                > as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),),
3147                encoder,
3148                offset,
3149                _depth,
3150            )
3151        }
3152    }
3153    unsafe impl<
3154        D: fidl::encoding::ResourceDialect,
3155        T0: fidl::encoding::Encode<
3156                fidl::encoding::Optional<
3157                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3158                >,
3159                D,
3160            >,
3161    > fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for (T0,)
3162    {
3163        #[inline]
3164        unsafe fn encode(
3165            self,
3166            encoder: &mut fidl::encoding::Encoder<'_, D>,
3167            offset: usize,
3168            depth: fidl::encoding::Depth,
3169        ) -> fidl::Result<()> {
3170            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3171            // Zero out padding regions. There's no need to apply masks
3172            // because the unmasked parts will be overwritten by fields.
3173            // Write the fields.
3174            self.0.encode(encoder, offset + 0, depth)?;
3175            Ok(())
3176        }
3177    }
3178
3179    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3180        for CentralGetPeripheralsRequest
3181    {
3182        #[inline(always)]
3183        fn new_empty() -> Self {
3184            Self {
3185                service_uuids: fidl::new_empty!(
3186                    fidl::encoding::Optional<
3187                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3188                    >,
3189                    D
3190                ),
3191            }
3192        }
3193
3194        #[inline]
3195        unsafe fn decode(
3196            &mut self,
3197            decoder: &mut fidl::encoding::Decoder<'_, D>,
3198            offset: usize,
3199            _depth: fidl::encoding::Depth,
3200        ) -> fidl::Result<()> {
3201            decoder.debug_check_bounds::<Self>(offset);
3202            // Verify that padding bytes are zero.
3203            fidl::decode!(
3204                fidl::encoding::Optional<
3205                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3206                >,
3207                D,
3208                &mut self.service_uuids,
3209                decoder,
3210                offset + 0,
3211                _depth
3212            )?;
3213            Ok(())
3214        }
3215    }
3216
3217    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsResponse {
3218        type Borrowed<'a> = &'a Self;
3219        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3220            value
3221        }
3222    }
3223
3224    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsResponse {
3225        type Owned = Self;
3226
3227        #[inline(always)]
3228        fn inline_align(_context: fidl::encoding::Context) -> usize {
3229            8
3230        }
3231
3232        #[inline(always)]
3233        fn inline_size(_context: fidl::encoding::Context) -> usize {
3234            16
3235        }
3236    }
3237
3238    unsafe impl<D: fidl::encoding::ResourceDialect>
3239        fidl::encoding::Encode<CentralGetPeripheralsResponse, D>
3240        for &CentralGetPeripheralsResponse
3241    {
3242        #[inline]
3243        unsafe fn encode(
3244            self,
3245            encoder: &mut fidl::encoding::Encoder<'_, D>,
3246            offset: usize,
3247            _depth: fidl::encoding::Depth,
3248        ) -> fidl::Result<()> {
3249            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3250            // Delegate to tuple encoding.
3251            fidl::encoding::Encode::<CentralGetPeripheralsResponse, D>::encode(
3252                (
3253                    <fidl::encoding::UnboundedVector<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(&self.peripherals),
3254                ),
3255                encoder, offset, _depth
3256            )
3257        }
3258    }
3259    unsafe impl<
3260        D: fidl::encoding::ResourceDialect,
3261        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<RemoteDevice>, D>,
3262    > fidl::encoding::Encode<CentralGetPeripheralsResponse, D> for (T0,)
3263    {
3264        #[inline]
3265        unsafe fn encode(
3266            self,
3267            encoder: &mut fidl::encoding::Encoder<'_, D>,
3268            offset: usize,
3269            depth: fidl::encoding::Depth,
3270        ) -> fidl::Result<()> {
3271            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3272            // Zero out padding regions. There's no need to apply masks
3273            // because the unmasked parts will be overwritten by fields.
3274            // Write the fields.
3275            self.0.encode(encoder, offset + 0, depth)?;
3276            Ok(())
3277        }
3278    }
3279
3280    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3281        for CentralGetPeripheralsResponse
3282    {
3283        #[inline(always)]
3284        fn new_empty() -> Self {
3285            Self { peripherals: fidl::new_empty!(fidl::encoding::UnboundedVector<RemoteDevice>, D) }
3286        }
3287
3288        #[inline]
3289        unsafe fn decode(
3290            &mut self,
3291            decoder: &mut fidl::encoding::Decoder<'_, D>,
3292            offset: usize,
3293            _depth: fidl::encoding::Depth,
3294        ) -> fidl::Result<()> {
3295            decoder.debug_check_bounds::<Self>(offset);
3296            // Verify that padding bytes are zero.
3297            fidl::decode!(
3298                fidl::encoding::UnboundedVector<RemoteDevice>,
3299                D,
3300                &mut self.peripherals,
3301                decoder,
3302                offset + 0,
3303                _depth
3304            )?;
3305            Ok(())
3306        }
3307    }
3308
3309    impl fidl::encoding::ValueTypeMarker for CentralOnDeviceDiscoveredRequest {
3310        type Borrowed<'a> = &'a Self;
3311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3312            value
3313        }
3314    }
3315
3316    unsafe impl fidl::encoding::TypeMarker for CentralOnDeviceDiscoveredRequest {
3317        type Owned = Self;
3318
3319        #[inline(always)]
3320        fn inline_align(_context: fidl::encoding::Context) -> usize {
3321            8
3322        }
3323
3324        #[inline(always)]
3325        fn inline_size(_context: fidl::encoding::Context) -> usize {
3326            40
3327        }
3328    }
3329
3330    unsafe impl<D: fidl::encoding::ResourceDialect>
3331        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D>
3332        for &CentralOnDeviceDiscoveredRequest
3333    {
3334        #[inline]
3335        unsafe fn encode(
3336            self,
3337            encoder: &mut fidl::encoding::Encoder<'_, D>,
3338            offset: usize,
3339            _depth: fidl::encoding::Depth,
3340        ) -> fidl::Result<()> {
3341            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3342            // Delegate to tuple encoding.
3343            fidl::encoding::Encode::<CentralOnDeviceDiscoveredRequest, D>::encode(
3344                (<RemoteDevice as fidl::encoding::ValueTypeMarker>::borrow(&self.device),),
3345                encoder,
3346                offset,
3347                _depth,
3348            )
3349        }
3350    }
3351    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RemoteDevice, D>>
3352        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D> for (T0,)
3353    {
3354        #[inline]
3355        unsafe fn encode(
3356            self,
3357            encoder: &mut fidl::encoding::Encoder<'_, D>,
3358            offset: usize,
3359            depth: fidl::encoding::Depth,
3360        ) -> fidl::Result<()> {
3361            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3362            // Zero out padding regions. There's no need to apply masks
3363            // because the unmasked parts will be overwritten by fields.
3364            // Write the fields.
3365            self.0.encode(encoder, offset + 0, depth)?;
3366            Ok(())
3367        }
3368    }
3369
3370    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3371        for CentralOnDeviceDiscoveredRequest
3372    {
3373        #[inline(always)]
3374        fn new_empty() -> Self {
3375            Self { device: fidl::new_empty!(RemoteDevice, D) }
3376        }
3377
3378        #[inline]
3379        unsafe fn decode(
3380            &mut self,
3381            decoder: &mut fidl::encoding::Decoder<'_, D>,
3382            offset: usize,
3383            _depth: fidl::encoding::Depth,
3384        ) -> fidl::Result<()> {
3385            decoder.debug_check_bounds::<Self>(offset);
3386            // Verify that padding bytes are zero.
3387            fidl::decode!(RemoteDevice, D, &mut self.device, decoder, offset + 0, _depth)?;
3388            Ok(())
3389        }
3390    }
3391
3392    impl fidl::encoding::ValueTypeMarker for CentralOnPeripheralDisconnectedRequest {
3393        type Borrowed<'a> = &'a Self;
3394        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3395            value
3396        }
3397    }
3398
3399    unsafe impl fidl::encoding::TypeMarker for CentralOnPeripheralDisconnectedRequest {
3400        type Owned = Self;
3401
3402        #[inline(always)]
3403        fn inline_align(_context: fidl::encoding::Context) -> usize {
3404            8
3405        }
3406
3407        #[inline(always)]
3408        fn inline_size(_context: fidl::encoding::Context) -> usize {
3409            16
3410        }
3411    }
3412
3413    unsafe impl<D: fidl::encoding::ResourceDialect>
3414        fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D>
3415        for &CentralOnPeripheralDisconnectedRequest
3416    {
3417        #[inline]
3418        unsafe fn encode(
3419            self,
3420            encoder: &mut fidl::encoding::Encoder<'_, D>,
3421            offset: usize,
3422            _depth: fidl::encoding::Depth,
3423        ) -> fidl::Result<()> {
3424            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3425            // Delegate to tuple encoding.
3426            fidl::encoding::Encode::<CentralOnPeripheralDisconnectedRequest, D>::encode(
3427                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
3428                    &self.identifier,
3429                ),),
3430                encoder,
3431                offset,
3432                _depth,
3433            )
3434        }
3435    }
3436    unsafe impl<
3437        D: fidl::encoding::ResourceDialect,
3438        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
3439    > fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D> for (T0,)
3440    {
3441        #[inline]
3442        unsafe fn encode(
3443            self,
3444            encoder: &mut fidl::encoding::Encoder<'_, D>,
3445            offset: usize,
3446            depth: fidl::encoding::Depth,
3447        ) -> fidl::Result<()> {
3448            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3449            // Zero out padding regions. There's no need to apply masks
3450            // because the unmasked parts will be overwritten by fields.
3451            // Write the fields.
3452            self.0.encode(encoder, offset + 0, depth)?;
3453            Ok(())
3454        }
3455    }
3456
3457    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3458        for CentralOnPeripheralDisconnectedRequest
3459    {
3460        #[inline(always)]
3461        fn new_empty() -> Self {
3462            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
3463        }
3464
3465        #[inline]
3466        unsafe fn decode(
3467            &mut self,
3468            decoder: &mut fidl::encoding::Decoder<'_, D>,
3469            offset: usize,
3470            _depth: fidl::encoding::Depth,
3471        ) -> fidl::Result<()> {
3472            decoder.debug_check_bounds::<Self>(offset);
3473            // Verify that padding bytes are zero.
3474            fidl::decode!(
3475                fidl::encoding::BoundedString<16>,
3476                D,
3477                &mut self.identifier,
3478                decoder,
3479                offset + 0,
3480                _depth
3481            )?;
3482            Ok(())
3483        }
3484    }
3485
3486    impl fidl::encoding::ValueTypeMarker for CentralOnScanStateChangedRequest {
3487        type Borrowed<'a> = &'a Self;
3488        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3489            value
3490        }
3491    }
3492
3493    unsafe impl fidl::encoding::TypeMarker for CentralOnScanStateChangedRequest {
3494        type Owned = Self;
3495
3496        #[inline(always)]
3497        fn inline_align(_context: fidl::encoding::Context) -> usize {
3498            1
3499        }
3500
3501        #[inline(always)]
3502        fn inline_size(_context: fidl::encoding::Context) -> usize {
3503            1
3504        }
3505    }
3506
3507    unsafe impl<D: fidl::encoding::ResourceDialect>
3508        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D>
3509        for &CentralOnScanStateChangedRequest
3510    {
3511        #[inline]
3512        unsafe fn encode(
3513            self,
3514            encoder: &mut fidl::encoding::Encoder<'_, D>,
3515            offset: usize,
3516            _depth: fidl::encoding::Depth,
3517        ) -> fidl::Result<()> {
3518            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3519            // Delegate to tuple encoding.
3520            fidl::encoding::Encode::<CentralOnScanStateChangedRequest, D>::encode(
3521                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.scanning),),
3522                encoder,
3523                offset,
3524                _depth,
3525            )
3526        }
3527    }
3528    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
3529        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D> for (T0,)
3530    {
3531        #[inline]
3532        unsafe fn encode(
3533            self,
3534            encoder: &mut fidl::encoding::Encoder<'_, D>,
3535            offset: usize,
3536            depth: fidl::encoding::Depth,
3537        ) -> fidl::Result<()> {
3538            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3539            // Zero out padding regions. There's no need to apply masks
3540            // because the unmasked parts will be overwritten by fields.
3541            // Write the fields.
3542            self.0.encode(encoder, offset + 0, depth)?;
3543            Ok(())
3544        }
3545    }
3546
3547    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3548        for CentralOnScanStateChangedRequest
3549    {
3550        #[inline(always)]
3551        fn new_empty() -> Self {
3552            Self { scanning: fidl::new_empty!(bool, D) }
3553        }
3554
3555        #[inline]
3556        unsafe fn decode(
3557            &mut self,
3558            decoder: &mut fidl::encoding::Decoder<'_, D>,
3559            offset: usize,
3560            _depth: fidl::encoding::Depth,
3561        ) -> fidl::Result<()> {
3562            decoder.debug_check_bounds::<Self>(offset);
3563            // Verify that padding bytes are zero.
3564            fidl::decode!(bool, D, &mut self.scanning, decoder, offset + 0, _depth)?;
3565            Ok(())
3566        }
3567    }
3568
3569    impl fidl::encoding::ValueTypeMarker for CentralStartScanRequest {
3570        type Borrowed<'a> = &'a Self;
3571        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3572            value
3573        }
3574    }
3575
3576    unsafe impl fidl::encoding::TypeMarker for CentralStartScanRequest {
3577        type Owned = Self;
3578
3579        #[inline(always)]
3580        fn inline_align(_context: fidl::encoding::Context) -> usize {
3581            8
3582        }
3583
3584        #[inline(always)]
3585        fn inline_size(_context: fidl::encoding::Context) -> usize {
3586            8
3587        }
3588    }
3589
3590    unsafe impl<D: fidl::encoding::ResourceDialect>
3591        fidl::encoding::Encode<CentralStartScanRequest, D> for &CentralStartScanRequest
3592    {
3593        #[inline]
3594        unsafe fn encode(
3595            self,
3596            encoder: &mut fidl::encoding::Encoder<'_, D>,
3597            offset: usize,
3598            _depth: fidl::encoding::Depth,
3599        ) -> fidl::Result<()> {
3600            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3601            // Delegate to tuple encoding.
3602            fidl::encoding::Encode::<CentralStartScanRequest, D>::encode(
3603                (<fidl::encoding::Boxed<ScanFilter> as fidl::encoding::ValueTypeMarker>::borrow(
3604                    &self.filter,
3605                ),),
3606                encoder,
3607                offset,
3608                _depth,
3609            )
3610        }
3611    }
3612    unsafe impl<
3613        D: fidl::encoding::ResourceDialect,
3614        T0: fidl::encoding::Encode<fidl::encoding::Boxed<ScanFilter>, D>,
3615    > fidl::encoding::Encode<CentralStartScanRequest, D> for (T0,)
3616    {
3617        #[inline]
3618        unsafe fn encode(
3619            self,
3620            encoder: &mut fidl::encoding::Encoder<'_, D>,
3621            offset: usize,
3622            depth: fidl::encoding::Depth,
3623        ) -> fidl::Result<()> {
3624            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3625            // Zero out padding regions. There's no need to apply masks
3626            // because the unmasked parts will be overwritten by fields.
3627            // Write the fields.
3628            self.0.encode(encoder, offset + 0, depth)?;
3629            Ok(())
3630        }
3631    }
3632
3633    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3634        for CentralStartScanRequest
3635    {
3636        #[inline(always)]
3637        fn new_empty() -> Self {
3638            Self { filter: fidl::new_empty!(fidl::encoding::Boxed<ScanFilter>, D) }
3639        }
3640
3641        #[inline]
3642        unsafe fn decode(
3643            &mut self,
3644            decoder: &mut fidl::encoding::Decoder<'_, D>,
3645            offset: usize,
3646            _depth: fidl::encoding::Depth,
3647        ) -> fidl::Result<()> {
3648            decoder.debug_check_bounds::<Self>(offset);
3649            // Verify that padding bytes are zero.
3650            fidl::decode!(
3651                fidl::encoding::Boxed<ScanFilter>,
3652                D,
3653                &mut self.filter,
3654                decoder,
3655                offset + 0,
3656                _depth
3657            )?;
3658            Ok(())
3659        }
3660    }
3661
3662    impl fidl::encoding::ValueTypeMarker for CentralStartScanResponse {
3663        type Borrowed<'a> = &'a Self;
3664        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3665            value
3666        }
3667    }
3668
3669    unsafe impl fidl::encoding::TypeMarker for CentralStartScanResponse {
3670        type Owned = Self;
3671
3672        #[inline(always)]
3673        fn inline_align(_context: fidl::encoding::Context) -> usize {
3674            8
3675        }
3676
3677        #[inline(always)]
3678        fn inline_size(_context: fidl::encoding::Context) -> usize {
3679            8
3680        }
3681    }
3682
3683    unsafe impl<D: fidl::encoding::ResourceDialect>
3684        fidl::encoding::Encode<CentralStartScanResponse, D> for &CentralStartScanResponse
3685    {
3686        #[inline]
3687        unsafe fn encode(
3688            self,
3689            encoder: &mut fidl::encoding::Encoder<'_, D>,
3690            offset: usize,
3691            _depth: fidl::encoding::Depth,
3692        ) -> fidl::Result<()> {
3693            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3694            // Delegate to tuple encoding.
3695            fidl::encoding::Encode::<CentralStartScanResponse, D>::encode(
3696                (
3697                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
3698                ),
3699                encoder, offset, _depth
3700            )
3701        }
3702    }
3703    unsafe impl<
3704        D: fidl::encoding::ResourceDialect,
3705        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
3706    > fidl::encoding::Encode<CentralStartScanResponse, D> for (T0,)
3707    {
3708        #[inline]
3709        unsafe fn encode(
3710            self,
3711            encoder: &mut fidl::encoding::Encoder<'_, D>,
3712            offset: usize,
3713            depth: fidl::encoding::Depth,
3714        ) -> fidl::Result<()> {
3715            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3716            // Zero out padding regions. There's no need to apply masks
3717            // because the unmasked parts will be overwritten by fields.
3718            // Write the fields.
3719            self.0.encode(encoder, offset + 0, depth)?;
3720            Ok(())
3721        }
3722    }
3723
3724    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3725        for CentralStartScanResponse
3726    {
3727        #[inline(always)]
3728        fn new_empty() -> Self {
3729            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
3730        }
3731
3732        #[inline]
3733        unsafe fn decode(
3734            &mut self,
3735            decoder: &mut fidl::encoding::Decoder<'_, D>,
3736            offset: usize,
3737            _depth: fidl::encoding::Depth,
3738        ) -> fidl::Result<()> {
3739            decoder.debug_check_bounds::<Self>(offset);
3740            // Verify that padding bytes are zero.
3741            fidl::decode!(
3742                fidl_fuchsia_bluetooth__common::Status,
3743                D,
3744                &mut self.status,
3745                decoder,
3746                offset + 0,
3747                _depth
3748            )?;
3749            Ok(())
3750        }
3751    }
3752
3753    impl fidl::encoding::ValueTypeMarker for ManufacturerData {
3754        type Borrowed<'a> = &'a Self;
3755        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3756            value
3757        }
3758    }
3759
3760    unsafe impl fidl::encoding::TypeMarker for ManufacturerData {
3761        type Owned = Self;
3762
3763        #[inline(always)]
3764        fn inline_align(_context: fidl::encoding::Context) -> usize {
3765            8
3766        }
3767
3768        #[inline(always)]
3769        fn inline_size(_context: fidl::encoding::Context) -> usize {
3770            24
3771        }
3772    }
3773
3774    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ManufacturerData, D>
3775        for &ManufacturerData
3776    {
3777        #[inline]
3778        unsafe fn encode(
3779            self,
3780            encoder: &mut fidl::encoding::Encoder<'_, D>,
3781            offset: usize,
3782            _depth: fidl::encoding::Depth,
3783        ) -> fidl::Result<()> {
3784            encoder.debug_check_bounds::<ManufacturerData>(offset);
3785            // Delegate to tuple encoding.
3786            fidl::encoding::Encode::<ManufacturerData, D>::encode(
3787                (
3788                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3789                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(
3790                        &self.data,
3791                    ),
3792                ),
3793                encoder,
3794                offset,
3795                _depth,
3796            )
3797        }
3798    }
3799    unsafe impl<
3800        D: fidl::encoding::ResourceDialect,
3801        T0: fidl::encoding::Encode<u16, D>,
3802        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
3803    > fidl::encoding::Encode<ManufacturerData, D> for (T0, T1)
3804    {
3805        #[inline]
3806        unsafe fn encode(
3807            self,
3808            encoder: &mut fidl::encoding::Encoder<'_, D>,
3809            offset: usize,
3810            depth: fidl::encoding::Depth,
3811        ) -> fidl::Result<()> {
3812            encoder.debug_check_bounds::<ManufacturerData>(offset);
3813            // Zero out padding regions. There's no need to apply masks
3814            // because the unmasked parts will be overwritten by fields.
3815            unsafe {
3816                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3817                (ptr as *mut u64).write_unaligned(0);
3818            }
3819            // Write the fields.
3820            self.0.encode(encoder, offset + 0, depth)?;
3821            self.1.encode(encoder, offset + 8, depth)?;
3822            Ok(())
3823        }
3824    }
3825
3826    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ManufacturerData {
3827        #[inline(always)]
3828        fn new_empty() -> Self {
3829            Self {
3830                company_id: fidl::new_empty!(u16, D),
3831                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
3832            }
3833        }
3834
3835        #[inline]
3836        unsafe fn decode(
3837            &mut self,
3838            decoder: &mut fidl::encoding::Decoder<'_, D>,
3839            offset: usize,
3840            _depth: fidl::encoding::Depth,
3841        ) -> fidl::Result<()> {
3842            decoder.debug_check_bounds::<Self>(offset);
3843            // Verify that padding bytes are zero.
3844            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3845            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3846            let mask = 0xffffffffffff0000u64;
3847            let maskedval = padval & mask;
3848            if maskedval != 0 {
3849                return Err(fidl::Error::NonZeroPadding {
3850                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3851                });
3852            }
3853            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3854            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 8, _depth)?;
3855            Ok(())
3856        }
3857    }
3858
3859    impl fidl::encoding::ValueTypeMarker for ManufacturerSpecificDataEntry {
3860        type Borrowed<'a> = &'a Self;
3861        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3862            value
3863        }
3864    }
3865
3866    unsafe impl fidl::encoding::TypeMarker for ManufacturerSpecificDataEntry {
3867        type Owned = Self;
3868
3869        #[inline(always)]
3870        fn inline_align(_context: fidl::encoding::Context) -> usize {
3871            8
3872        }
3873
3874        #[inline(always)]
3875        fn inline_size(_context: fidl::encoding::Context) -> usize {
3876            24
3877        }
3878    }
3879
3880    unsafe impl<D: fidl::encoding::ResourceDialect>
3881        fidl::encoding::Encode<ManufacturerSpecificDataEntry, D>
3882        for &ManufacturerSpecificDataEntry
3883    {
3884        #[inline]
3885        unsafe fn encode(
3886            self,
3887            encoder: &mut fidl::encoding::Encoder<'_, D>,
3888            offset: usize,
3889            _depth: fidl::encoding::Depth,
3890        ) -> fidl::Result<()> {
3891            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3892            // Delegate to tuple encoding.
3893            fidl::encoding::Encode::<ManufacturerSpecificDataEntry, D>::encode(
3894                (
3895                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3896                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
3897                ),
3898                encoder, offset, _depth
3899            )
3900        }
3901    }
3902    unsafe impl<
3903        D: fidl::encoding::ResourceDialect,
3904        T0: fidl::encoding::Encode<u16, D>,
3905        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3906    > fidl::encoding::Encode<ManufacturerSpecificDataEntry, D> for (T0, T1)
3907    {
3908        #[inline]
3909        unsafe fn encode(
3910            self,
3911            encoder: &mut fidl::encoding::Encoder<'_, D>,
3912            offset: usize,
3913            depth: fidl::encoding::Depth,
3914        ) -> fidl::Result<()> {
3915            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3916            // Zero out padding regions. There's no need to apply masks
3917            // because the unmasked parts will be overwritten by fields.
3918            unsafe {
3919                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3920                (ptr as *mut u64).write_unaligned(0);
3921            }
3922            // Write the fields.
3923            self.0.encode(encoder, offset + 0, depth)?;
3924            self.1.encode(encoder, offset + 8, depth)?;
3925            Ok(())
3926        }
3927    }
3928
3929    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3930        for ManufacturerSpecificDataEntry
3931    {
3932        #[inline(always)]
3933        fn new_empty() -> Self {
3934            Self {
3935                company_id: fidl::new_empty!(u16, D),
3936                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3937            }
3938        }
3939
3940        #[inline]
3941        unsafe fn decode(
3942            &mut self,
3943            decoder: &mut fidl::encoding::Decoder<'_, D>,
3944            offset: usize,
3945            _depth: fidl::encoding::Depth,
3946        ) -> fidl::Result<()> {
3947            decoder.debug_check_bounds::<Self>(offset);
3948            // Verify that padding bytes are zero.
3949            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3950            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3951            let mask = 0xffffffffffff0000u64;
3952            let maskedval = padval & mask;
3953            if maskedval != 0 {
3954                return Err(fidl::Error::NonZeroPadding {
3955                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3956                });
3957            }
3958            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3959            fidl::decode!(
3960                fidl::encoding::UnboundedVector<u8>,
3961                D,
3962                &mut self.data,
3963                decoder,
3964                offset + 8,
3965                _depth
3966            )?;
3967            Ok(())
3968        }
3969    }
3970
3971    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncId {
3972        type Borrowed<'a> = &'a Self;
3973        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3974            value
3975        }
3976    }
3977
3978    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncId {
3979        type Owned = Self;
3980
3981        #[inline(always)]
3982        fn inline_align(_context: fidl::encoding::Context) -> usize {
3983            8
3984        }
3985
3986        #[inline(always)]
3987        fn inline_size(_context: fidl::encoding::Context) -> usize {
3988            8
3989        }
3990        #[inline(always)]
3991        fn encode_is_copy() -> bool {
3992            true
3993        }
3994
3995        #[inline(always)]
3996        fn decode_is_copy() -> bool {
3997            true
3998        }
3999    }
4000
4001    unsafe impl<D: fidl::encoding::ResourceDialect>
4002        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for &PeriodicAdvertisingSyncId
4003    {
4004        #[inline]
4005        unsafe fn encode(
4006            self,
4007            encoder: &mut fidl::encoding::Encoder<'_, D>,
4008            offset: usize,
4009            _depth: fidl::encoding::Depth,
4010        ) -> fidl::Result<()> {
4011            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4012            unsafe {
4013                // Copy the object into the buffer.
4014                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4015                (buf_ptr as *mut PeriodicAdvertisingSyncId)
4016                    .write_unaligned((self as *const PeriodicAdvertisingSyncId).read());
4017                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4018                // done second because the memcpy will write garbage to these bytes.
4019            }
4020            Ok(())
4021        }
4022    }
4023    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
4024        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for (T0,)
4025    {
4026        #[inline]
4027        unsafe fn encode(
4028            self,
4029            encoder: &mut fidl::encoding::Encoder<'_, D>,
4030            offset: usize,
4031            depth: fidl::encoding::Depth,
4032        ) -> fidl::Result<()> {
4033            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4034            // Zero out padding regions. There's no need to apply masks
4035            // because the unmasked parts will be overwritten by fields.
4036            // Write the fields.
4037            self.0.encode(encoder, offset + 0, depth)?;
4038            Ok(())
4039        }
4040    }
4041
4042    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4043        for PeriodicAdvertisingSyncId
4044    {
4045        #[inline(always)]
4046        fn new_empty() -> Self {
4047            Self { value: fidl::new_empty!(u64, D) }
4048        }
4049
4050        #[inline]
4051        unsafe fn decode(
4052            &mut self,
4053            decoder: &mut fidl::encoding::Decoder<'_, D>,
4054            offset: usize,
4055            _depth: fidl::encoding::Depth,
4056        ) -> fidl::Result<()> {
4057            decoder.debug_check_bounds::<Self>(offset);
4058            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4059            // Verify that padding bytes are zero.
4060            // Copy from the buffer into the object.
4061            unsafe {
4062                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
4063            }
4064            Ok(())
4065        }
4066    }
4067
4068    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4069        type Borrowed<'a> = &'a Self;
4070        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4071            value
4072        }
4073    }
4074
4075    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4076        type Owned = Self;
4077
4078        #[inline(always)]
4079        fn inline_align(_context: fidl::encoding::Context) -> usize {
4080            4
4081        }
4082
4083        #[inline(always)]
4084        fn inline_size(_context: fidl::encoding::Context) -> usize {
4085            4
4086        }
4087    }
4088
4089    unsafe impl<D: fidl::encoding::ResourceDialect>
4090        fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D>
4091        for &PeriodicAdvertisingSyncOnErrorRequest
4092    {
4093        #[inline]
4094        unsafe fn encode(
4095            self,
4096            encoder: &mut fidl::encoding::Encoder<'_, D>,
4097            offset: usize,
4098            _depth: fidl::encoding::Depth,
4099        ) -> fidl::Result<()> {
4100            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4101            // Delegate to tuple encoding.
4102            fidl::encoding::Encode::<PeriodicAdvertisingSyncOnErrorRequest, D>::encode(
4103                (<PeriodicAdvertisingSyncError as fidl::encoding::ValueTypeMarker>::borrow(
4104                    &self.error,
4105                ),),
4106                encoder,
4107                offset,
4108                _depth,
4109            )
4110        }
4111    }
4112    unsafe impl<
4113        D: fidl::encoding::ResourceDialect,
4114        T0: fidl::encoding::Encode<PeriodicAdvertisingSyncError, D>,
4115    > fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D> for (T0,)
4116    {
4117        #[inline]
4118        unsafe fn encode(
4119            self,
4120            encoder: &mut fidl::encoding::Encoder<'_, D>,
4121            offset: usize,
4122            depth: fidl::encoding::Depth,
4123        ) -> fidl::Result<()> {
4124            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4125            // Zero out padding regions. There's no need to apply masks
4126            // because the unmasked parts will be overwritten by fields.
4127            // Write the fields.
4128            self.0.encode(encoder, offset + 0, depth)?;
4129            Ok(())
4130        }
4131    }
4132
4133    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4134        for PeriodicAdvertisingSyncOnErrorRequest
4135    {
4136        #[inline(always)]
4137        fn new_empty() -> Self {
4138            Self { error: fidl::new_empty!(PeriodicAdvertisingSyncError, D) }
4139        }
4140
4141        #[inline]
4142        unsafe fn decode(
4143            &mut self,
4144            decoder: &mut fidl::encoding::Decoder<'_, D>,
4145            offset: usize,
4146            _depth: fidl::encoding::Depth,
4147        ) -> fidl::Result<()> {
4148            decoder.debug_check_bounds::<Self>(offset);
4149            // Verify that padding bytes are zero.
4150            fidl::decode!(
4151                PeriodicAdvertisingSyncError,
4152                D,
4153                &mut self.error,
4154                decoder,
4155                offset + 0,
4156                _depth
4157            )?;
4158            Ok(())
4159        }
4160    }
4161
4162    impl fidl::encoding::ValueTypeMarker for RemoteDevice {
4163        type Borrowed<'a> = &'a Self;
4164        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4165            value
4166        }
4167    }
4168
4169    unsafe impl fidl::encoding::TypeMarker for RemoteDevice {
4170        type Owned = Self;
4171
4172        #[inline(always)]
4173        fn inline_align(_context: fidl::encoding::Context) -> usize {
4174            8
4175        }
4176
4177        #[inline(always)]
4178        fn inline_size(_context: fidl::encoding::Context) -> usize {
4179            40
4180        }
4181    }
4182
4183    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RemoteDevice, D>
4184        for &RemoteDevice
4185    {
4186        #[inline]
4187        unsafe fn encode(
4188            self,
4189            encoder: &mut fidl::encoding::Encoder<'_, D>,
4190            offset: usize,
4191            _depth: fidl::encoding::Depth,
4192        ) -> fidl::Result<()> {
4193            encoder.debug_check_bounds::<RemoteDevice>(offset);
4194            // Delegate to tuple encoding.
4195            fidl::encoding::Encode::<RemoteDevice, D>::encode(
4196                (
4197                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(&self.identifier),
4198                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4199                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi),
4200                    <fidl::encoding::Boxed<AdvertisingDataDeprecated> as fidl::encoding::ValueTypeMarker>::borrow(&self.advertising_data),
4201                ),
4202                encoder, offset, _depth
4203            )
4204        }
4205    }
4206    unsafe impl<
4207        D: fidl::encoding::ResourceDialect,
4208        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
4209        T1: fidl::encoding::Encode<bool, D>,
4210        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4211        T3: fidl::encoding::Encode<fidl::encoding::Boxed<AdvertisingDataDeprecated>, D>,
4212    > fidl::encoding::Encode<RemoteDevice, D> for (T0, T1, T2, T3)
4213    {
4214        #[inline]
4215        unsafe fn encode(
4216            self,
4217            encoder: &mut fidl::encoding::Encoder<'_, D>,
4218            offset: usize,
4219            depth: fidl::encoding::Depth,
4220        ) -> fidl::Result<()> {
4221            encoder.debug_check_bounds::<RemoteDevice>(offset);
4222            // Zero out padding regions. There's no need to apply masks
4223            // because the unmasked parts will be overwritten by fields.
4224            unsafe {
4225                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4226                (ptr as *mut u64).write_unaligned(0);
4227            }
4228            // Write the fields.
4229            self.0.encode(encoder, offset + 0, depth)?;
4230            self.1.encode(encoder, offset + 16, depth)?;
4231            self.2.encode(encoder, offset + 24, depth)?;
4232            self.3.encode(encoder, offset + 32, depth)?;
4233            Ok(())
4234        }
4235    }
4236
4237    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RemoteDevice {
4238        #[inline(always)]
4239        fn new_empty() -> Self {
4240            Self {
4241                identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D),
4242                connectable: fidl::new_empty!(bool, D),
4243                rssi: fidl::new_empty!(
4244                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4245                    D
4246                ),
4247                advertising_data: fidl::new_empty!(
4248                    fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4249                    D
4250                ),
4251            }
4252        }
4253
4254        #[inline]
4255        unsafe fn decode(
4256            &mut self,
4257            decoder: &mut fidl::encoding::Decoder<'_, D>,
4258            offset: usize,
4259            _depth: fidl::encoding::Depth,
4260        ) -> fidl::Result<()> {
4261            decoder.debug_check_bounds::<Self>(offset);
4262            // Verify that padding bytes are zero.
4263            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4264            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4265            let mask = 0xffffffffffffff00u64;
4266            let maskedval = padval & mask;
4267            if maskedval != 0 {
4268                return Err(fidl::Error::NonZeroPadding {
4269                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4270                });
4271            }
4272            fidl::decode!(
4273                fidl::encoding::BoundedString<16>,
4274                D,
4275                &mut self.identifier,
4276                decoder,
4277                offset + 0,
4278                _depth
4279            )?;
4280            fidl::decode!(bool, D, &mut self.connectable, decoder, offset + 16, _depth)?;
4281            fidl::decode!(
4282                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4283                D,
4284                &mut self.rssi,
4285                decoder,
4286                offset + 24,
4287                _depth
4288            )?;
4289            fidl::decode!(
4290                fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4291                D,
4292                &mut self.advertising_data,
4293                decoder,
4294                offset + 32,
4295                _depth
4296            )?;
4297            Ok(())
4298        }
4299    }
4300
4301    impl fidl::encoding::ValueTypeMarker for ScanFilter {
4302        type Borrowed<'a> = &'a Self;
4303        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4304            value
4305        }
4306    }
4307
4308    unsafe impl fidl::encoding::TypeMarker for ScanFilter {
4309        type Owned = Self;
4310
4311        #[inline(always)]
4312        fn inline_align(_context: fidl::encoding::Context) -> usize {
4313            8
4314        }
4315
4316        #[inline(always)]
4317        fn inline_size(_context: fidl::encoding::Context) -> usize {
4318            72
4319        }
4320    }
4321
4322    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanFilter, D>
4323        for &ScanFilter
4324    {
4325        #[inline]
4326        unsafe fn encode(
4327            self,
4328            encoder: &mut fidl::encoding::Encoder<'_, D>,
4329            offset: usize,
4330            _depth: fidl::encoding::Depth,
4331        ) -> fidl::Result<()> {
4332            encoder.debug_check_bounds::<ScanFilter>(offset);
4333            // Delegate to tuple encoding.
4334            fidl::encoding::Encode::<ScanFilter, D>::encode(
4335                (
4336                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
4337                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data_uuids),
4338                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_identifier),
4339                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool> as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4340                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name_substring),
4341                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.max_path_loss),
4342                ),
4343                encoder, offset, _depth
4344            )
4345        }
4346    }
4347    unsafe impl<
4348        D: fidl::encoding::ResourceDialect,
4349        T0: fidl::encoding::Encode<
4350                fidl::encoding::Optional<
4351                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4352                >,
4353                D,
4354            >,
4355        T1: fidl::encoding::Encode<
4356                fidl::encoding::Optional<
4357                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4358                >,
4359                D,
4360            >,
4361        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>, D>,
4362        T3: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>, D>,
4363        T4: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
4364        T5: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4365    > fidl::encoding::Encode<ScanFilter, D> for (T0, T1, T2, T3, T4, T5)
4366    {
4367        #[inline]
4368        unsafe fn encode(
4369            self,
4370            encoder: &mut fidl::encoding::Encoder<'_, D>,
4371            offset: usize,
4372            depth: fidl::encoding::Depth,
4373        ) -> fidl::Result<()> {
4374            encoder.debug_check_bounds::<ScanFilter>(offset);
4375            // Zero out padding regions. There's no need to apply masks
4376            // because the unmasked parts will be overwritten by fields.
4377            // Write the fields.
4378            self.0.encode(encoder, offset + 0, depth)?;
4379            self.1.encode(encoder, offset + 16, depth)?;
4380            self.2.encode(encoder, offset + 32, depth)?;
4381            self.3.encode(encoder, offset + 40, depth)?;
4382            self.4.encode(encoder, offset + 48, depth)?;
4383            self.5.encode(encoder, offset + 64, depth)?;
4384            Ok(())
4385        }
4386    }
4387
4388    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanFilter {
4389        #[inline(always)]
4390        fn new_empty() -> Self {
4391            Self {
4392                service_uuids: fidl::new_empty!(
4393                    fidl::encoding::Optional<
4394                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4395                    >,
4396                    D
4397                ),
4398                service_data_uuids: fidl::new_empty!(
4399                    fidl::encoding::Optional<
4400                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4401                    >,
4402                    D
4403                ),
4404                manufacturer_identifier: fidl::new_empty!(
4405                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4406                    D
4407                ),
4408                connectable: fidl::new_empty!(
4409                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4410                    D
4411                ),
4412                name_substring: fidl::new_empty!(
4413                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4414                    D
4415                ),
4416                max_path_loss: fidl::new_empty!(
4417                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4418                    D
4419                ),
4420            }
4421        }
4422
4423        #[inline]
4424        unsafe fn decode(
4425            &mut self,
4426            decoder: &mut fidl::encoding::Decoder<'_, D>,
4427            offset: usize,
4428            _depth: fidl::encoding::Depth,
4429        ) -> fidl::Result<()> {
4430            decoder.debug_check_bounds::<Self>(offset);
4431            // Verify that padding bytes are zero.
4432            fidl::decode!(
4433                fidl::encoding::Optional<
4434                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4435                >,
4436                D,
4437                &mut self.service_uuids,
4438                decoder,
4439                offset + 0,
4440                _depth
4441            )?;
4442            fidl::decode!(
4443                fidl::encoding::Optional<
4444                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4445                >,
4446                D,
4447                &mut self.service_data_uuids,
4448                decoder,
4449                offset + 16,
4450                _depth
4451            )?;
4452            fidl::decode!(
4453                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4454                D,
4455                &mut self.manufacturer_identifier,
4456                decoder,
4457                offset + 32,
4458                _depth
4459            )?;
4460            fidl::decode!(
4461                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4462                D,
4463                &mut self.connectable,
4464                decoder,
4465                offset + 40,
4466                _depth
4467            )?;
4468            fidl::decode!(
4469                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4470                D,
4471                &mut self.name_substring,
4472                decoder,
4473                offset + 48,
4474                _depth
4475            )?;
4476            fidl::decode!(
4477                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4478                D,
4479                &mut self.max_path_loss,
4480                decoder,
4481                offset + 64,
4482                _depth
4483            )?;
4484            Ok(())
4485        }
4486    }
4487
4488    impl fidl::encoding::ValueTypeMarker for ScanResultWatcherWatchResponse {
4489        type Borrowed<'a> = &'a Self;
4490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4491            value
4492        }
4493    }
4494
4495    unsafe impl fidl::encoding::TypeMarker for ScanResultWatcherWatchResponse {
4496        type Owned = Self;
4497
4498        #[inline(always)]
4499        fn inline_align(_context: fidl::encoding::Context) -> usize {
4500            8
4501        }
4502
4503        #[inline(always)]
4504        fn inline_size(_context: fidl::encoding::Context) -> usize {
4505            16
4506        }
4507    }
4508
4509    unsafe impl<D: fidl::encoding::ResourceDialect>
4510        fidl::encoding::Encode<ScanResultWatcherWatchResponse, D>
4511        for &ScanResultWatcherWatchResponse
4512    {
4513        #[inline]
4514        unsafe fn encode(
4515            self,
4516            encoder: &mut fidl::encoding::Encoder<'_, D>,
4517            offset: usize,
4518            _depth: fidl::encoding::Depth,
4519        ) -> fidl::Result<()> {
4520            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4521            // Delegate to tuple encoding.
4522            fidl::encoding::Encode::<ScanResultWatcherWatchResponse, D>::encode(
4523                (
4524                    <fidl::encoding::UnboundedVector<Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.updated),
4525                ),
4526                encoder, offset, _depth
4527            )
4528        }
4529    }
4530    unsafe impl<
4531        D: fidl::encoding::ResourceDialect,
4532        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Peer>, D>,
4533    > fidl::encoding::Encode<ScanResultWatcherWatchResponse, D> for (T0,)
4534    {
4535        #[inline]
4536        unsafe fn encode(
4537            self,
4538            encoder: &mut fidl::encoding::Encoder<'_, D>,
4539            offset: usize,
4540            depth: fidl::encoding::Depth,
4541        ) -> fidl::Result<()> {
4542            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4543            // Zero out padding regions. There's no need to apply masks
4544            // because the unmasked parts will be overwritten by fields.
4545            // Write the fields.
4546            self.0.encode(encoder, offset + 0, depth)?;
4547            Ok(())
4548        }
4549    }
4550
4551    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4552        for ScanResultWatcherWatchResponse
4553    {
4554        #[inline(always)]
4555        fn new_empty() -> Self {
4556            Self { updated: fidl::new_empty!(fidl::encoding::UnboundedVector<Peer>, D) }
4557        }
4558
4559        #[inline]
4560        unsafe fn decode(
4561            &mut self,
4562            decoder: &mut fidl::encoding::Decoder<'_, D>,
4563            offset: usize,
4564            _depth: fidl::encoding::Depth,
4565        ) -> fidl::Result<()> {
4566            decoder.debug_check_bounds::<Self>(offset);
4567            // Verify that padding bytes are zero.
4568            fidl::decode!(
4569                fidl::encoding::UnboundedVector<Peer>,
4570                D,
4571                &mut self.updated,
4572                decoder,
4573                offset + 0,
4574                _depth
4575            )?;
4576            Ok(())
4577        }
4578    }
4579
4580    impl fidl::encoding::ValueTypeMarker for ServiceData {
4581        type Borrowed<'a> = &'a Self;
4582        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4583            value
4584        }
4585    }
4586
4587    unsafe impl fidl::encoding::TypeMarker for ServiceData {
4588        type Owned = Self;
4589
4590        #[inline(always)]
4591        fn inline_align(_context: fidl::encoding::Context) -> usize {
4592            8
4593        }
4594
4595        #[inline(always)]
4596        fn inline_size(_context: fidl::encoding::Context) -> usize {
4597            32
4598        }
4599    }
4600
4601    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceData, D>
4602        for &ServiceData
4603    {
4604        #[inline]
4605        unsafe fn encode(
4606            self,
4607            encoder: &mut fidl::encoding::Encoder<'_, D>,
4608            offset: usize,
4609            _depth: fidl::encoding::Depth,
4610        ) -> fidl::Result<()> {
4611            encoder.debug_check_bounds::<ServiceData>(offset);
4612            // Delegate to tuple encoding.
4613            fidl::encoding::Encode::<ServiceData, D>::encode(
4614                (
4615                    <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4616                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4617                ),
4618                encoder, offset, _depth
4619            )
4620        }
4621    }
4622    unsafe impl<
4623        D: fidl::encoding::ResourceDialect,
4624        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Uuid, D>,
4625        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
4626    > fidl::encoding::Encode<ServiceData, D> for (T0, T1)
4627    {
4628        #[inline]
4629        unsafe fn encode(
4630            self,
4631            encoder: &mut fidl::encoding::Encoder<'_, D>,
4632            offset: usize,
4633            depth: fidl::encoding::Depth,
4634        ) -> fidl::Result<()> {
4635            encoder.debug_check_bounds::<ServiceData>(offset);
4636            // Zero out padding regions. There's no need to apply masks
4637            // because the unmasked parts will be overwritten by fields.
4638            // Write the fields.
4639            self.0.encode(encoder, offset + 0, depth)?;
4640            self.1.encode(encoder, offset + 16, depth)?;
4641            Ok(())
4642        }
4643    }
4644
4645    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceData {
4646        #[inline(always)]
4647        fn new_empty() -> Self {
4648            Self {
4649                uuid: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D),
4650                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
4651            }
4652        }
4653
4654        #[inline]
4655        unsafe fn decode(
4656            &mut self,
4657            decoder: &mut fidl::encoding::Decoder<'_, D>,
4658            offset: usize,
4659            _depth: fidl::encoding::Depth,
4660        ) -> fidl::Result<()> {
4661            decoder.debug_check_bounds::<Self>(offset);
4662            // Verify that padding bytes are zero.
4663            fidl::decode!(
4664                fidl_fuchsia_bluetooth__common::Uuid,
4665                D,
4666                &mut self.uuid,
4667                decoder,
4668                offset + 0,
4669                _depth
4670            )?;
4671            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 16, _depth)?;
4672            Ok(())
4673        }
4674    }
4675
4676    impl fidl::encoding::ValueTypeMarker for ServiceDataEntry {
4677        type Borrowed<'a> = &'a Self;
4678        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4679            value
4680        }
4681    }
4682
4683    unsafe impl fidl::encoding::TypeMarker for ServiceDataEntry {
4684        type Owned = Self;
4685
4686        #[inline(always)]
4687        fn inline_align(_context: fidl::encoding::Context) -> usize {
4688            8
4689        }
4690
4691        #[inline(always)]
4692        fn inline_size(_context: fidl::encoding::Context) -> usize {
4693            32
4694        }
4695    }
4696
4697    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceDataEntry, D>
4698        for &ServiceDataEntry
4699    {
4700        #[inline]
4701        unsafe fn encode(
4702            self,
4703            encoder: &mut fidl::encoding::Encoder<'_, D>,
4704            offset: usize,
4705            _depth: fidl::encoding::Depth,
4706        ) -> fidl::Result<()> {
4707            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4708            // Delegate to tuple encoding.
4709            fidl::encoding::Encode::<ServiceDataEntry, D>::encode(
4710                (
4711                    <fidl::encoding::BoundedString<36> as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4712                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4713                ),
4714                encoder, offset, _depth
4715            )
4716        }
4717    }
4718    unsafe impl<
4719        D: fidl::encoding::ResourceDialect,
4720        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<36>, D>,
4721        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4722    > fidl::encoding::Encode<ServiceDataEntry, D> for (T0, T1)
4723    {
4724        #[inline]
4725        unsafe fn encode(
4726            self,
4727            encoder: &mut fidl::encoding::Encoder<'_, D>,
4728            offset: usize,
4729            depth: fidl::encoding::Depth,
4730        ) -> fidl::Result<()> {
4731            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4732            // Zero out padding regions. There's no need to apply masks
4733            // because the unmasked parts will be overwritten by fields.
4734            // Write the fields.
4735            self.0.encode(encoder, offset + 0, depth)?;
4736            self.1.encode(encoder, offset + 16, depth)?;
4737            Ok(())
4738        }
4739    }
4740
4741    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceDataEntry {
4742        #[inline(always)]
4743        fn new_empty() -> Self {
4744            Self {
4745                uuid: fidl::new_empty!(fidl::encoding::BoundedString<36>, D),
4746                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4747            }
4748        }
4749
4750        #[inline]
4751        unsafe fn decode(
4752            &mut self,
4753            decoder: &mut fidl::encoding::Decoder<'_, D>,
4754            offset: usize,
4755            _depth: fidl::encoding::Depth,
4756        ) -> fidl::Result<()> {
4757            decoder.debug_check_bounds::<Self>(offset);
4758            // Verify that padding bytes are zero.
4759            fidl::decode!(
4760                fidl::encoding::BoundedString<36>,
4761                D,
4762                &mut self.uuid,
4763                decoder,
4764                offset + 0,
4765                _depth
4766            )?;
4767            fidl::decode!(
4768                fidl::encoding::UnboundedVector<u8>,
4769                D,
4770                &mut self.data,
4771                decoder,
4772                offset + 16,
4773                _depth
4774            )?;
4775            Ok(())
4776        }
4777    }
4778
4779    impl AcceptedChannelParameters {
4780        #[inline(always)]
4781        fn max_ordinal_present(&self) -> u64 {
4782            if let Some(_) = self.max_packet_size {
4783                return 2;
4784            }
4785            if let Some(_) = self.accepted_channel_modes {
4786                return 1;
4787            }
4788            0
4789        }
4790    }
4791
4792    impl fidl::encoding::ValueTypeMarker for AcceptedChannelParameters {
4793        type Borrowed<'a> = &'a Self;
4794        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4795            value
4796        }
4797    }
4798
4799    unsafe impl fidl::encoding::TypeMarker for AcceptedChannelParameters {
4800        type Owned = Self;
4801
4802        #[inline(always)]
4803        fn inline_align(_context: fidl::encoding::Context) -> usize {
4804            8
4805        }
4806
4807        #[inline(always)]
4808        fn inline_size(_context: fidl::encoding::Context) -> usize {
4809            16
4810        }
4811    }
4812
4813    unsafe impl<D: fidl::encoding::ResourceDialect>
4814        fidl::encoding::Encode<AcceptedChannelParameters, D> for &AcceptedChannelParameters
4815    {
4816        unsafe fn encode(
4817            self,
4818            encoder: &mut fidl::encoding::Encoder<'_, D>,
4819            offset: usize,
4820            mut depth: fidl::encoding::Depth,
4821        ) -> fidl::Result<()> {
4822            encoder.debug_check_bounds::<AcceptedChannelParameters>(offset);
4823            // Vector header
4824            let max_ordinal: u64 = self.max_ordinal_present();
4825            encoder.write_num(max_ordinal, offset);
4826            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4827            // Calling encoder.out_of_line_offset(0) is not allowed.
4828            if max_ordinal == 0 {
4829                return Ok(());
4830            }
4831            depth.increment()?;
4832            let envelope_size = 8;
4833            let bytes_len = max_ordinal as usize * envelope_size;
4834            #[allow(unused_variables)]
4835            let offset = encoder.out_of_line_offset(bytes_len);
4836            let mut _prev_end_offset: usize = 0;
4837            if 1 > max_ordinal {
4838                return Ok(());
4839            }
4840
4841            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4842            // are envelope_size bytes.
4843            let cur_offset: usize = (1 - 1) * envelope_size;
4844
4845            // Zero reserved fields.
4846            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4847
4848            // Safety:
4849            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4850            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4851            //   envelope_size bytes, there is always sufficient room.
4852            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>, D>(
4853            self.accepted_channel_modes.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode> as fidl::encoding::ValueTypeMarker>::borrow),
4854            encoder, offset + cur_offset, depth
4855        )?;
4856
4857            _prev_end_offset = cur_offset + envelope_size;
4858            if 2 > max_ordinal {
4859                return Ok(());
4860            }
4861
4862            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4863            // are envelope_size bytes.
4864            let cur_offset: usize = (2 - 1) * envelope_size;
4865
4866            // Zero reserved fields.
4867            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4868
4869            // Safety:
4870            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4871            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4872            //   envelope_size bytes, there is always sufficient room.
4873            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4874                self.max_packet_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4875                encoder,
4876                offset + cur_offset,
4877                depth,
4878            )?;
4879
4880            _prev_end_offset = cur_offset + envelope_size;
4881
4882            Ok(())
4883        }
4884    }
4885
4886    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4887        for AcceptedChannelParameters
4888    {
4889        #[inline(always)]
4890        fn new_empty() -> Self {
4891            Self::default()
4892        }
4893
4894        unsafe fn decode(
4895            &mut self,
4896            decoder: &mut fidl::encoding::Decoder<'_, D>,
4897            offset: usize,
4898            mut depth: fidl::encoding::Depth,
4899        ) -> fidl::Result<()> {
4900            decoder.debug_check_bounds::<Self>(offset);
4901            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4902                None => return Err(fidl::Error::NotNullable),
4903                Some(len) => len,
4904            };
4905            // Calling decoder.out_of_line_offset(0) is not allowed.
4906            if len == 0 {
4907                return Ok(());
4908            };
4909            depth.increment()?;
4910            let envelope_size = 8;
4911            let bytes_len = len * envelope_size;
4912            let offset = decoder.out_of_line_offset(bytes_len)?;
4913            // Decode the envelope for each type.
4914            let mut _next_ordinal_to_read = 0;
4915            let mut next_offset = offset;
4916            let end_offset = offset + bytes_len;
4917            _next_ordinal_to_read += 1;
4918            if next_offset >= end_offset {
4919                return Ok(());
4920            }
4921
4922            // Decode unknown envelopes for gaps in ordinals.
4923            while _next_ordinal_to_read < 1 {
4924                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4925                _next_ordinal_to_read += 1;
4926                next_offset += envelope_size;
4927            }
4928
4929            let next_out_of_line = decoder.next_out_of_line();
4930            let handles_before = decoder.remaining_handles();
4931            if let Some((inlined, num_bytes, num_handles)) =
4932                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4933            {
4934                let member_inline_size = <fidl::encoding::UnboundedVector<
4935                    fidl_fuchsia_bluetooth__common::ChannelMode,
4936                > as fidl::encoding::TypeMarker>::inline_size(
4937                    decoder.context
4938                );
4939                if inlined != (member_inline_size <= 4) {
4940                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4941                }
4942                let inner_offset;
4943                let mut inner_depth = depth.clone();
4944                if inlined {
4945                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4946                    inner_offset = next_offset;
4947                } else {
4948                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4949                    inner_depth.increment()?;
4950                }
4951                let val_ref = self.accepted_channel_modes.get_or_insert_with(|| {
4952                    fidl::new_empty!(
4953                        fidl::encoding::UnboundedVector<
4954                            fidl_fuchsia_bluetooth__common::ChannelMode,
4955                        >,
4956                        D
4957                    )
4958                });
4959                fidl::decode!(
4960                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>,
4961                    D,
4962                    val_ref,
4963                    decoder,
4964                    inner_offset,
4965                    inner_depth
4966                )?;
4967                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4968                {
4969                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4970                }
4971                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4972                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4973                }
4974            }
4975
4976            next_offset += envelope_size;
4977            _next_ordinal_to_read += 1;
4978            if next_offset >= end_offset {
4979                return Ok(());
4980            }
4981
4982            // Decode unknown envelopes for gaps in ordinals.
4983            while _next_ordinal_to_read < 2 {
4984                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4985                _next_ordinal_to_read += 1;
4986                next_offset += envelope_size;
4987            }
4988
4989            let next_out_of_line = decoder.next_out_of_line();
4990            let handles_before = decoder.remaining_handles();
4991            if let Some((inlined, num_bytes, num_handles)) =
4992                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4993            {
4994                let member_inline_size =
4995                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4996                if inlined != (member_inline_size <= 4) {
4997                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4998                }
4999                let inner_offset;
5000                let mut inner_depth = depth.clone();
5001                if inlined {
5002                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5003                    inner_offset = next_offset;
5004                } else {
5005                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5006                    inner_depth.increment()?;
5007                }
5008                let val_ref = self.max_packet_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
5009                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5010                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5011                {
5012                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5013                }
5014                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5015                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5016                }
5017            }
5018
5019            next_offset += envelope_size;
5020
5021            // Decode the remaining unknown envelopes.
5022            while next_offset < end_offset {
5023                _next_ordinal_to_read += 1;
5024                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5025                next_offset += envelope_size;
5026            }
5027
5028            Ok(())
5029        }
5030    }
5031
5032    impl AdvertisingData {
5033        #[inline(always)]
5034        fn max_ordinal_present(&self) -> u64 {
5035            if let Some(_) = self.broadcast_name {
5036                return 10;
5037            }
5038            if let Some(_) = self.resolvable_set_identifier {
5039                return 9;
5040            }
5041            if let Some(_) = self.include_tx_power_level {
5042                return 8;
5043            }
5044            if let Some(_) = self.uris {
5045                return 7;
5046            }
5047            if let Some(_) = self.manufacturer_data {
5048                return 6;
5049            }
5050            if let Some(_) = self.service_data {
5051                return 5;
5052            }
5053            if let Some(_) = self.service_uuids {
5054                return 4;
5055            }
5056            if let Some(_) = self.tx_power_level {
5057                return 3;
5058            }
5059            if let Some(_) = self.appearance {
5060                return 2;
5061            }
5062            if let Some(_) = self.name {
5063                return 1;
5064            }
5065            0
5066        }
5067    }
5068
5069    impl fidl::encoding::ValueTypeMarker for AdvertisingData {
5070        type Borrowed<'a> = &'a Self;
5071        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5072            value
5073        }
5074    }
5075
5076    unsafe impl fidl::encoding::TypeMarker for AdvertisingData {
5077        type Owned = Self;
5078
5079        #[inline(always)]
5080        fn inline_align(_context: fidl::encoding::Context) -> usize {
5081            8
5082        }
5083
5084        #[inline(always)]
5085        fn inline_size(_context: fidl::encoding::Context) -> usize {
5086            16
5087        }
5088    }
5089
5090    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingData, D>
5091        for &AdvertisingData
5092    {
5093        unsafe fn encode(
5094            self,
5095            encoder: &mut fidl::encoding::Encoder<'_, D>,
5096            offset: usize,
5097            mut depth: fidl::encoding::Depth,
5098        ) -> fidl::Result<()> {
5099            encoder.debug_check_bounds::<AdvertisingData>(offset);
5100            // Vector header
5101            let max_ordinal: u64 = self.max_ordinal_present();
5102            encoder.write_num(max_ordinal, offset);
5103            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5104            // Calling encoder.out_of_line_offset(0) is not allowed.
5105            if max_ordinal == 0 {
5106                return Ok(());
5107            }
5108            depth.increment()?;
5109            let envelope_size = 8;
5110            let bytes_len = max_ordinal as usize * envelope_size;
5111            #[allow(unused_variables)]
5112            let offset = encoder.out_of_line_offset(bytes_len);
5113            let mut _prev_end_offset: usize = 0;
5114            if 1 > max_ordinal {
5115                return Ok(());
5116            }
5117
5118            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5119            // are envelope_size bytes.
5120            let cur_offset: usize = (1 - 1) * envelope_size;
5121
5122            // Zero reserved fields.
5123            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5124
5125            // Safety:
5126            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5127            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5128            //   envelope_size bytes, there is always sufficient room.
5129            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
5130                self.name.as_ref().map(
5131                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
5132                ),
5133                encoder,
5134                offset + cur_offset,
5135                depth,
5136            )?;
5137
5138            _prev_end_offset = cur_offset + envelope_size;
5139            if 2 > max_ordinal {
5140                return Ok(());
5141            }
5142
5143            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5144            // are envelope_size bytes.
5145            let cur_offset: usize = (2 - 1) * envelope_size;
5146
5147            // Zero reserved fields.
5148            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5149
5150            // Safety:
5151            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5152            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5153            //   envelope_size bytes, there is always sufficient room.
5154            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
5155            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
5156            encoder, offset + cur_offset, depth
5157        )?;
5158
5159            _prev_end_offset = cur_offset + envelope_size;
5160            if 3 > max_ordinal {
5161                return Ok(());
5162            }
5163
5164            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5165            // are envelope_size bytes.
5166            let cur_offset: usize = (3 - 1) * envelope_size;
5167
5168            // Zero reserved fields.
5169            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5170
5171            // Safety:
5172            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5173            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5174            //   envelope_size bytes, there is always sufficient room.
5175            fidl::encoding::encode_in_envelope_optional::<i8, D>(
5176                self.tx_power_level.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5177                encoder,
5178                offset + cur_offset,
5179                depth,
5180            )?;
5181
5182            _prev_end_offset = cur_offset + envelope_size;
5183            if 4 > max_ordinal {
5184                return Ok(());
5185            }
5186
5187            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5188            // are envelope_size bytes.
5189            let cur_offset: usize = (4 - 1) * envelope_size;
5190
5191            // Zero reserved fields.
5192            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5193
5194            // Safety:
5195            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5196            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5197            //   envelope_size bytes, there is always sufficient room.
5198            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
5199            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
5200            encoder, offset + cur_offset, depth
5201        )?;
5202
5203            _prev_end_offset = cur_offset + envelope_size;
5204            if 5 > max_ordinal {
5205                return Ok(());
5206            }
5207
5208            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5209            // are envelope_size bytes.
5210            let cur_offset: usize = (5 - 1) * envelope_size;
5211
5212            // Zero reserved fields.
5213            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5214
5215            // Safety:
5216            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5217            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5218            //   envelope_size bytes, there is always sufficient room.
5219            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
5220            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
5221            encoder, offset + cur_offset, depth
5222        )?;
5223
5224            _prev_end_offset = cur_offset + envelope_size;
5225            if 6 > max_ordinal {
5226                return Ok(());
5227            }
5228
5229            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5230            // are envelope_size bytes.
5231            let cur_offset: usize = (6 - 1) * envelope_size;
5232
5233            // Zero reserved fields.
5234            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5235
5236            // Safety:
5237            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5238            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5239            //   envelope_size bytes, there is always sufficient room.
5240            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
5241            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
5242            encoder, offset + cur_offset, depth
5243        )?;
5244
5245            _prev_end_offset = cur_offset + envelope_size;
5246            if 7 > max_ordinal {
5247                return Ok(());
5248            }
5249
5250            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5251            // are envelope_size bytes.
5252            let cur_offset: usize = (7 - 1) * envelope_size;
5253
5254            // Zero reserved fields.
5255            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5256
5257            // Safety:
5258            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5259            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5260            //   envelope_size bytes, there is always sufficient room.
5261            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
5262            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
5263            encoder, offset + cur_offset, depth
5264        )?;
5265
5266            _prev_end_offset = cur_offset + envelope_size;
5267            if 8 > max_ordinal {
5268                return Ok(());
5269            }
5270
5271            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5272            // are envelope_size bytes.
5273            let cur_offset: usize = (8 - 1) * envelope_size;
5274
5275            // Zero reserved fields.
5276            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5277
5278            // Safety:
5279            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5280            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5281            //   envelope_size bytes, there is always sufficient room.
5282            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5283                self.include_tx_power_level
5284                    .as_ref()
5285                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5286                encoder,
5287                offset + cur_offset,
5288                depth,
5289            )?;
5290
5291            _prev_end_offset = cur_offset + envelope_size;
5292            if 9 > max_ordinal {
5293                return Ok(());
5294            }
5295
5296            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5297            // are envelope_size bytes.
5298            let cur_offset: usize = (9 - 1) * envelope_size;
5299
5300            // Zero reserved fields.
5301            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5302
5303            // Safety:
5304            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5305            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5306            //   envelope_size bytes, there is always sufficient room.
5307            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5308                self.resolvable_set_identifier
5309                    .as_ref()
5310                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5311                encoder,
5312                offset + cur_offset,
5313                depth,
5314            )?;
5315
5316            _prev_end_offset = cur_offset + envelope_size;
5317            if 10 > max_ordinal {
5318                return Ok(());
5319            }
5320
5321            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5322            // are envelope_size bytes.
5323            let cur_offset: usize = (10 - 1) * envelope_size;
5324
5325            // Zero reserved fields.
5326            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5327
5328            // Safety:
5329            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5330            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5331            //   envelope_size bytes, there is always sufficient room.
5332            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5333                self.broadcast_name.as_ref().map(
5334                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5335                ),
5336                encoder,
5337                offset + cur_offset,
5338                depth,
5339            )?;
5340
5341            _prev_end_offset = cur_offset + envelope_size;
5342
5343            Ok(())
5344        }
5345    }
5346
5347    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingData {
5348        #[inline(always)]
5349        fn new_empty() -> Self {
5350            Self::default()
5351        }
5352
5353        unsafe fn decode(
5354            &mut self,
5355            decoder: &mut fidl::encoding::Decoder<'_, D>,
5356            offset: usize,
5357            mut depth: fidl::encoding::Depth,
5358        ) -> fidl::Result<()> {
5359            decoder.debug_check_bounds::<Self>(offset);
5360            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5361                None => return Err(fidl::Error::NotNullable),
5362                Some(len) => len,
5363            };
5364            // Calling decoder.out_of_line_offset(0) is not allowed.
5365            if len == 0 {
5366                return Ok(());
5367            };
5368            depth.increment()?;
5369            let envelope_size = 8;
5370            let bytes_len = len * envelope_size;
5371            let offset = decoder.out_of_line_offset(bytes_len)?;
5372            // Decode the envelope for each type.
5373            let mut _next_ordinal_to_read = 0;
5374            let mut next_offset = offset;
5375            let end_offset = offset + bytes_len;
5376            _next_ordinal_to_read += 1;
5377            if next_offset >= end_offset {
5378                return Ok(());
5379            }
5380
5381            // Decode unknown envelopes for gaps in ordinals.
5382            while _next_ordinal_to_read < 1 {
5383                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5384                _next_ordinal_to_read += 1;
5385                next_offset += envelope_size;
5386            }
5387
5388            let next_out_of_line = decoder.next_out_of_line();
5389            let handles_before = decoder.remaining_handles();
5390            if let Some((inlined, num_bytes, num_handles)) =
5391                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5392            {
5393                let member_inline_size =
5394                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
5395                        decoder.context,
5396                    );
5397                if inlined != (member_inline_size <= 4) {
5398                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5399                }
5400                let inner_offset;
5401                let mut inner_depth = depth.clone();
5402                if inlined {
5403                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5404                    inner_offset = next_offset;
5405                } else {
5406                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5407                    inner_depth.increment()?;
5408                }
5409                let val_ref = self
5410                    .name
5411                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
5412                fidl::decode!(
5413                    fidl::encoding::BoundedString<248>,
5414                    D,
5415                    val_ref,
5416                    decoder,
5417                    inner_offset,
5418                    inner_depth
5419                )?;
5420                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5421                {
5422                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5423                }
5424                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5425                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5426                }
5427            }
5428
5429            next_offset += envelope_size;
5430            _next_ordinal_to_read += 1;
5431            if next_offset >= end_offset {
5432                return Ok(());
5433            }
5434
5435            // Decode unknown envelopes for gaps in ordinals.
5436            while _next_ordinal_to_read < 2 {
5437                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5438                _next_ordinal_to_read += 1;
5439                next_offset += envelope_size;
5440            }
5441
5442            let next_out_of_line = decoder.next_out_of_line();
5443            let handles_before = decoder.remaining_handles();
5444            if let Some((inlined, num_bytes, num_handles)) =
5445                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5446            {
5447                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5448                if inlined != (member_inline_size <= 4) {
5449                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5450                }
5451                let inner_offset;
5452                let mut inner_depth = depth.clone();
5453                if inlined {
5454                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5455                    inner_offset = next_offset;
5456                } else {
5457                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5458                    inner_depth.increment()?;
5459                }
5460                let val_ref = self.appearance.get_or_insert_with(|| {
5461                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
5462                });
5463                fidl::decode!(
5464                    fidl_fuchsia_bluetooth__common::Appearance,
5465                    D,
5466                    val_ref,
5467                    decoder,
5468                    inner_offset,
5469                    inner_depth
5470                )?;
5471                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5472                {
5473                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5474                }
5475                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5476                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5477                }
5478            }
5479
5480            next_offset += envelope_size;
5481            _next_ordinal_to_read += 1;
5482            if next_offset >= end_offset {
5483                return Ok(());
5484            }
5485
5486            // Decode unknown envelopes for gaps in ordinals.
5487            while _next_ordinal_to_read < 3 {
5488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5489                _next_ordinal_to_read += 1;
5490                next_offset += envelope_size;
5491            }
5492
5493            let next_out_of_line = decoder.next_out_of_line();
5494            let handles_before = decoder.remaining_handles();
5495            if let Some((inlined, num_bytes, num_handles)) =
5496                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5497            {
5498                let member_inline_size =
5499                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5500                if inlined != (member_inline_size <= 4) {
5501                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5502                }
5503                let inner_offset;
5504                let mut inner_depth = depth.clone();
5505                if inlined {
5506                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5507                    inner_offset = next_offset;
5508                } else {
5509                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5510                    inner_depth.increment()?;
5511                }
5512                let val_ref = self.tx_power_level.get_or_insert_with(|| fidl::new_empty!(i8, D));
5513                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5514                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5515                {
5516                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5517                }
5518                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5519                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5520                }
5521            }
5522
5523            next_offset += envelope_size;
5524            _next_ordinal_to_read += 1;
5525            if next_offset >= end_offset {
5526                return Ok(());
5527            }
5528
5529            // Decode unknown envelopes for gaps in ordinals.
5530            while _next_ordinal_to_read < 4 {
5531                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5532                _next_ordinal_to_read += 1;
5533                next_offset += envelope_size;
5534            }
5535
5536            let next_out_of_line = decoder.next_out_of_line();
5537            let handles_before = decoder.remaining_handles();
5538            if let Some((inlined, num_bytes, num_handles)) =
5539                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5540            {
5541                let member_inline_size = <fidl::encoding::UnboundedVector<
5542                    fidl_fuchsia_bluetooth__common::Uuid,
5543                > as fidl::encoding::TypeMarker>::inline_size(
5544                    decoder.context
5545                );
5546                if inlined != (member_inline_size <= 4) {
5547                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5548                }
5549                let inner_offset;
5550                let mut inner_depth = depth.clone();
5551                if inlined {
5552                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5553                    inner_offset = next_offset;
5554                } else {
5555                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5556                    inner_depth.increment()?;
5557                }
5558                let val_ref = self.service_uuids.get_or_insert_with(|| {
5559                    fidl::new_empty!(
5560                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5561                        D
5562                    )
5563                });
5564                fidl::decode!(
5565                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5566                    D,
5567                    val_ref,
5568                    decoder,
5569                    inner_offset,
5570                    inner_depth
5571                )?;
5572                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5573                {
5574                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5575                }
5576                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5577                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5578                }
5579            }
5580
5581            next_offset += envelope_size;
5582            _next_ordinal_to_read += 1;
5583            if next_offset >= end_offset {
5584                return Ok(());
5585            }
5586
5587            // Decode unknown envelopes for gaps in ordinals.
5588            while _next_ordinal_to_read < 5 {
5589                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5590                _next_ordinal_to_read += 1;
5591                next_offset += envelope_size;
5592            }
5593
5594            let next_out_of_line = decoder.next_out_of_line();
5595            let handles_before = decoder.remaining_handles();
5596            if let Some((inlined, num_bytes, num_handles)) =
5597                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5598            {
5599                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5600                if inlined != (member_inline_size <= 4) {
5601                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5602                }
5603                let inner_offset;
5604                let mut inner_depth = depth.clone();
5605                if inlined {
5606                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5607                    inner_offset = next_offset;
5608                } else {
5609                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5610                    inner_depth.increment()?;
5611                }
5612                let val_ref = self.service_data.get_or_insert_with(|| {
5613                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
5614                });
5615                fidl::decode!(
5616                    fidl::encoding::UnboundedVector<ServiceData>,
5617                    D,
5618                    val_ref,
5619                    decoder,
5620                    inner_offset,
5621                    inner_depth
5622                )?;
5623                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5624                {
5625                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5626                }
5627                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5628                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5629                }
5630            }
5631
5632            next_offset += envelope_size;
5633            _next_ordinal_to_read += 1;
5634            if next_offset >= end_offset {
5635                return Ok(());
5636            }
5637
5638            // Decode unknown envelopes for gaps in ordinals.
5639            while _next_ordinal_to_read < 6 {
5640                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5641                _next_ordinal_to_read += 1;
5642                next_offset += envelope_size;
5643            }
5644
5645            let next_out_of_line = decoder.next_out_of_line();
5646            let handles_before = decoder.remaining_handles();
5647            if let Some((inlined, num_bytes, num_handles)) =
5648                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5649            {
5650                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5651                if inlined != (member_inline_size <= 4) {
5652                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5653                }
5654                let inner_offset;
5655                let mut inner_depth = depth.clone();
5656                if inlined {
5657                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5658                    inner_offset = next_offset;
5659                } else {
5660                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5661                    inner_depth.increment()?;
5662                }
5663                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
5664                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
5665                });
5666                fidl::decode!(
5667                    fidl::encoding::UnboundedVector<ManufacturerData>,
5668                    D,
5669                    val_ref,
5670                    decoder,
5671                    inner_offset,
5672                    inner_depth
5673                )?;
5674                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5675                {
5676                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5677                }
5678                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5679                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5680                }
5681            }
5682
5683            next_offset += envelope_size;
5684            _next_ordinal_to_read += 1;
5685            if next_offset >= end_offset {
5686                return Ok(());
5687            }
5688
5689            // Decode unknown envelopes for gaps in ordinals.
5690            while _next_ordinal_to_read < 7 {
5691                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5692                _next_ordinal_to_read += 1;
5693                next_offset += envelope_size;
5694            }
5695
5696            let next_out_of_line = decoder.next_out_of_line();
5697            let handles_before = decoder.remaining_handles();
5698            if let Some((inlined, num_bytes, num_handles)) =
5699                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5700            {
5701                let member_inline_size = <fidl::encoding::UnboundedVector<
5702                    fidl::encoding::BoundedString<278>,
5703                > as fidl::encoding::TypeMarker>::inline_size(
5704                    decoder.context
5705                );
5706                if inlined != (member_inline_size <= 4) {
5707                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5708                }
5709                let inner_offset;
5710                let mut inner_depth = depth.clone();
5711                if inlined {
5712                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5713                    inner_offset = next_offset;
5714                } else {
5715                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5716                    inner_depth.increment()?;
5717                }
5718                let val_ref = self.uris.get_or_insert_with(|| {
5719                    fidl::new_empty!(
5720                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5721                        D
5722                    )
5723                });
5724                fidl::decode!(
5725                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5726                    D,
5727                    val_ref,
5728                    decoder,
5729                    inner_offset,
5730                    inner_depth
5731                )?;
5732                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5733                {
5734                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5735                }
5736                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5737                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5738                }
5739            }
5740
5741            next_offset += envelope_size;
5742            _next_ordinal_to_read += 1;
5743            if next_offset >= end_offset {
5744                return Ok(());
5745            }
5746
5747            // Decode unknown envelopes for gaps in ordinals.
5748            while _next_ordinal_to_read < 8 {
5749                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5750                _next_ordinal_to_read += 1;
5751                next_offset += envelope_size;
5752            }
5753
5754            let next_out_of_line = decoder.next_out_of_line();
5755            let handles_before = decoder.remaining_handles();
5756            if let Some((inlined, num_bytes, num_handles)) =
5757                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5758            {
5759                let member_inline_size =
5760                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5761                if inlined != (member_inline_size <= 4) {
5762                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5763                }
5764                let inner_offset;
5765                let mut inner_depth = depth.clone();
5766                if inlined {
5767                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5768                    inner_offset = next_offset;
5769                } else {
5770                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5771                    inner_depth.increment()?;
5772                }
5773                let val_ref =
5774                    self.include_tx_power_level.get_or_insert_with(|| fidl::new_empty!(bool, D));
5775                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5777                {
5778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5779                }
5780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5782                }
5783            }
5784
5785            next_offset += envelope_size;
5786            _next_ordinal_to_read += 1;
5787            if next_offset >= end_offset {
5788                return Ok(());
5789            }
5790
5791            // Decode unknown envelopes for gaps in ordinals.
5792            while _next_ordinal_to_read < 9 {
5793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5794                _next_ordinal_to_read += 1;
5795                next_offset += envelope_size;
5796            }
5797
5798            let next_out_of_line = decoder.next_out_of_line();
5799            let handles_before = decoder.remaining_handles();
5800            if let Some((inlined, num_bytes, num_handles)) =
5801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5802            {
5803                let member_inline_size =
5804                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5805                        decoder.context,
5806                    );
5807                if inlined != (member_inline_size <= 4) {
5808                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5809                }
5810                let inner_offset;
5811                let mut inner_depth = depth.clone();
5812                if inlined {
5813                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5814                    inner_offset = next_offset;
5815                } else {
5816                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5817                    inner_depth.increment()?;
5818                }
5819                let val_ref = self
5820                    .resolvable_set_identifier
5821                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5822                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5823                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5824                {
5825                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5826                }
5827                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5828                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5829                }
5830            }
5831
5832            next_offset += envelope_size;
5833            _next_ordinal_to_read += 1;
5834            if next_offset >= end_offset {
5835                return Ok(());
5836            }
5837
5838            // Decode unknown envelopes for gaps in ordinals.
5839            while _next_ordinal_to_read < 10 {
5840                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5841                _next_ordinal_to_read += 1;
5842                next_offset += envelope_size;
5843            }
5844
5845            let next_out_of_line = decoder.next_out_of_line();
5846            let handles_before = decoder.remaining_handles();
5847            if let Some((inlined, num_bytes, num_handles)) =
5848                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5849            {
5850                let member_inline_size =
5851                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5852                        decoder.context,
5853                    );
5854                if inlined != (member_inline_size <= 4) {
5855                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5856                }
5857                let inner_offset;
5858                let mut inner_depth = depth.clone();
5859                if inlined {
5860                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5861                    inner_offset = next_offset;
5862                } else {
5863                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5864                    inner_depth.increment()?;
5865                }
5866                let val_ref = self
5867                    .broadcast_name
5868                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5869                fidl::decode!(
5870                    fidl::encoding::BoundedString<128>,
5871                    D,
5872                    val_ref,
5873                    decoder,
5874                    inner_offset,
5875                    inner_depth
5876                )?;
5877                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5878                {
5879                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5880                }
5881                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5882                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5883                }
5884            }
5885
5886            next_offset += envelope_size;
5887
5888            // Decode the remaining unknown envelopes.
5889            while next_offset < end_offset {
5890                _next_ordinal_to_read += 1;
5891                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5892                next_offset += envelope_size;
5893            }
5894
5895            Ok(())
5896        }
5897    }
5898
5899    impl AdvertisingParameters {
5900        #[inline(always)]
5901        fn max_ordinal_present(&self) -> u64 {
5902            if let Some(_) = self.address_type {
5903                return 7;
5904            }
5905            if let Some(_) = self.advertising_procedure {
5906                return 6;
5907            }
5908            if let Some(_) = self.connection_options {
5909                return 5;
5910            }
5911            if let Some(_) = self.connectable {
5912                return 4;
5913            }
5914            if let Some(_) = self.mode_hint {
5915                return 3;
5916            }
5917            if let Some(_) = self.scan_response {
5918                return 2;
5919            }
5920            if let Some(_) = self.data {
5921                return 1;
5922            }
5923            0
5924        }
5925    }
5926
5927    impl fidl::encoding::ValueTypeMarker for AdvertisingParameters {
5928        type Borrowed<'a> = &'a Self;
5929        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5930            value
5931        }
5932    }
5933
5934    unsafe impl fidl::encoding::TypeMarker for AdvertisingParameters {
5935        type Owned = Self;
5936
5937        #[inline(always)]
5938        fn inline_align(_context: fidl::encoding::Context) -> usize {
5939            8
5940        }
5941
5942        #[inline(always)]
5943        fn inline_size(_context: fidl::encoding::Context) -> usize {
5944            16
5945        }
5946    }
5947
5948    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingParameters, D>
5949        for &AdvertisingParameters
5950    {
5951        unsafe fn encode(
5952            self,
5953            encoder: &mut fidl::encoding::Encoder<'_, D>,
5954            offset: usize,
5955            mut depth: fidl::encoding::Depth,
5956        ) -> fidl::Result<()> {
5957            encoder.debug_check_bounds::<AdvertisingParameters>(offset);
5958            // Vector header
5959            let max_ordinal: u64 = self.max_ordinal_present();
5960            encoder.write_num(max_ordinal, offset);
5961            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5962            // Calling encoder.out_of_line_offset(0) is not allowed.
5963            if max_ordinal == 0 {
5964                return Ok(());
5965            }
5966            depth.increment()?;
5967            let envelope_size = 8;
5968            let bytes_len = max_ordinal as usize * envelope_size;
5969            #[allow(unused_variables)]
5970            let offset = encoder.out_of_line_offset(bytes_len);
5971            let mut _prev_end_offset: usize = 0;
5972            if 1 > max_ordinal {
5973                return Ok(());
5974            }
5975
5976            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5977            // are envelope_size bytes.
5978            let cur_offset: usize = (1 - 1) * envelope_size;
5979
5980            // Zero reserved fields.
5981            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5982
5983            // Safety:
5984            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5985            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5986            //   envelope_size bytes, there is always sufficient room.
5987            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
5988                self.data
5989                    .as_ref()
5990                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
5991                encoder,
5992                offset + cur_offset,
5993                depth,
5994            )?;
5995
5996            _prev_end_offset = cur_offset + envelope_size;
5997            if 2 > max_ordinal {
5998                return Ok(());
5999            }
6000
6001            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6002            // are envelope_size bytes.
6003            let cur_offset: usize = (2 - 1) * envelope_size;
6004
6005            // Zero reserved fields.
6006            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6007
6008            // Safety:
6009            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6010            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6011            //   envelope_size bytes, there is always sufficient room.
6012            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6013                self.scan_response
6014                    .as_ref()
6015                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6016                encoder,
6017                offset + cur_offset,
6018                depth,
6019            )?;
6020
6021            _prev_end_offset = cur_offset + envelope_size;
6022            if 3 > max_ordinal {
6023                return Ok(());
6024            }
6025
6026            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6027            // are envelope_size bytes.
6028            let cur_offset: usize = (3 - 1) * envelope_size;
6029
6030            // Zero reserved fields.
6031            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6032
6033            // Safety:
6034            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6035            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6036            //   envelope_size bytes, there is always sufficient room.
6037            fidl::encoding::encode_in_envelope_optional::<AdvertisingModeHint, D>(
6038                self.mode_hint
6039                    .as_ref()
6040                    .map(<AdvertisingModeHint as fidl::encoding::ValueTypeMarker>::borrow),
6041                encoder,
6042                offset + cur_offset,
6043                depth,
6044            )?;
6045
6046            _prev_end_offset = cur_offset + envelope_size;
6047            if 4 > max_ordinal {
6048                return Ok(());
6049            }
6050
6051            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6052            // are envelope_size bytes.
6053            let cur_offset: usize = (4 - 1) * envelope_size;
6054
6055            // Zero reserved fields.
6056            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6057
6058            // Safety:
6059            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6060            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6061            //   envelope_size bytes, there is always sufficient room.
6062            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6063                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6064                encoder,
6065                offset + cur_offset,
6066                depth,
6067            )?;
6068
6069            _prev_end_offset = cur_offset + envelope_size;
6070            if 5 > max_ordinal {
6071                return Ok(());
6072            }
6073
6074            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6075            // are envelope_size bytes.
6076            let cur_offset: usize = (5 - 1) * envelope_size;
6077
6078            // Zero reserved fields.
6079            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6080
6081            // Safety:
6082            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6083            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6084            //   envelope_size bytes, there is always sufficient room.
6085            fidl::encoding::encode_in_envelope_optional::<ConnectionOptions, D>(
6086                self.connection_options
6087                    .as_ref()
6088                    .map(<ConnectionOptions as fidl::encoding::ValueTypeMarker>::borrow),
6089                encoder,
6090                offset + cur_offset,
6091                depth,
6092            )?;
6093
6094            _prev_end_offset = cur_offset + envelope_size;
6095            if 6 > max_ordinal {
6096                return Ok(());
6097            }
6098
6099            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6100            // are envelope_size bytes.
6101            let cur_offset: usize = (6 - 1) * envelope_size;
6102
6103            // Zero reserved fields.
6104            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6105
6106            // Safety:
6107            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6108            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6109            //   envelope_size bytes, there is always sufficient room.
6110            fidl::encoding::encode_in_envelope_optional::<AdvertisingProcedure, D>(
6111                self.advertising_procedure
6112                    .as_ref()
6113                    .map(<AdvertisingProcedure as fidl::encoding::ValueTypeMarker>::borrow),
6114                encoder,
6115                offset + cur_offset,
6116                depth,
6117            )?;
6118
6119            _prev_end_offset = cur_offset + envelope_size;
6120            if 7 > max_ordinal {
6121                return Ok(());
6122            }
6123
6124            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6125            // are envelope_size bytes.
6126            let cur_offset: usize = (7 - 1) * envelope_size;
6127
6128            // Zero reserved fields.
6129            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6130
6131            // Safety:
6132            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6133            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6134            //   envelope_size bytes, there is always sufficient room.
6135            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AddressType, D>(
6136            self.address_type.as_ref().map(<fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
6137            encoder, offset + cur_offset, depth
6138        )?;
6139
6140            _prev_end_offset = cur_offset + envelope_size;
6141
6142            Ok(())
6143        }
6144    }
6145
6146    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingParameters {
6147        #[inline(always)]
6148        fn new_empty() -> Self {
6149            Self::default()
6150        }
6151
6152        unsafe fn decode(
6153            &mut self,
6154            decoder: &mut fidl::encoding::Decoder<'_, D>,
6155            offset: usize,
6156            mut depth: fidl::encoding::Depth,
6157        ) -> fidl::Result<()> {
6158            decoder.debug_check_bounds::<Self>(offset);
6159            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6160                None => return Err(fidl::Error::NotNullable),
6161                Some(len) => len,
6162            };
6163            // Calling decoder.out_of_line_offset(0) is not allowed.
6164            if len == 0 {
6165                return Ok(());
6166            };
6167            depth.increment()?;
6168            let envelope_size = 8;
6169            let bytes_len = len * envelope_size;
6170            let offset = decoder.out_of_line_offset(bytes_len)?;
6171            // Decode the envelope for each type.
6172            let mut _next_ordinal_to_read = 0;
6173            let mut next_offset = offset;
6174            let end_offset = offset + bytes_len;
6175            _next_ordinal_to_read += 1;
6176            if next_offset >= end_offset {
6177                return Ok(());
6178            }
6179
6180            // Decode unknown envelopes for gaps in ordinals.
6181            while _next_ordinal_to_read < 1 {
6182                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6183                _next_ordinal_to_read += 1;
6184                next_offset += envelope_size;
6185            }
6186
6187            let next_out_of_line = decoder.next_out_of_line();
6188            let handles_before = decoder.remaining_handles();
6189            if let Some((inlined, num_bytes, num_handles)) =
6190                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6191            {
6192                let member_inline_size =
6193                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6194                if inlined != (member_inline_size <= 4) {
6195                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6196                }
6197                let inner_offset;
6198                let mut inner_depth = depth.clone();
6199                if inlined {
6200                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6201                    inner_offset = next_offset;
6202                } else {
6203                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6204                    inner_depth.increment()?;
6205                }
6206                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6207                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6208                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6209                {
6210                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6211                }
6212                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6213                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6214                }
6215            }
6216
6217            next_offset += envelope_size;
6218            _next_ordinal_to_read += 1;
6219            if next_offset >= end_offset {
6220                return Ok(());
6221            }
6222
6223            // Decode unknown envelopes for gaps in ordinals.
6224            while _next_ordinal_to_read < 2 {
6225                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6226                _next_ordinal_to_read += 1;
6227                next_offset += envelope_size;
6228            }
6229
6230            let next_out_of_line = decoder.next_out_of_line();
6231            let handles_before = decoder.remaining_handles();
6232            if let Some((inlined, num_bytes, num_handles)) =
6233                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6234            {
6235                let member_inline_size =
6236                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6237                if inlined != (member_inline_size <= 4) {
6238                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6239                }
6240                let inner_offset;
6241                let mut inner_depth = depth.clone();
6242                if inlined {
6243                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6244                    inner_offset = next_offset;
6245                } else {
6246                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6247                    inner_depth.increment()?;
6248                }
6249                let val_ref =
6250                    self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6251                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6252                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6253                {
6254                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6255                }
6256                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6257                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6258                }
6259            }
6260
6261            next_offset += envelope_size;
6262            _next_ordinal_to_read += 1;
6263            if next_offset >= end_offset {
6264                return Ok(());
6265            }
6266
6267            // Decode unknown envelopes for gaps in ordinals.
6268            while _next_ordinal_to_read < 3 {
6269                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6270                _next_ordinal_to_read += 1;
6271                next_offset += envelope_size;
6272            }
6273
6274            let next_out_of_line = decoder.next_out_of_line();
6275            let handles_before = decoder.remaining_handles();
6276            if let Some((inlined, num_bytes, num_handles)) =
6277                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6278            {
6279                let member_inline_size =
6280                    <AdvertisingModeHint as fidl::encoding::TypeMarker>::inline_size(
6281                        decoder.context,
6282                    );
6283                if inlined != (member_inline_size <= 4) {
6284                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6285                }
6286                let inner_offset;
6287                let mut inner_depth = depth.clone();
6288                if inlined {
6289                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6290                    inner_offset = next_offset;
6291                } else {
6292                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6293                    inner_depth.increment()?;
6294                }
6295                let val_ref =
6296                    self.mode_hint.get_or_insert_with(|| fidl::new_empty!(AdvertisingModeHint, D));
6297                fidl::decode!(AdvertisingModeHint, D, val_ref, decoder, inner_offset, inner_depth)?;
6298                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6299                {
6300                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6301                }
6302                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6303                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6304                }
6305            }
6306
6307            next_offset += envelope_size;
6308            _next_ordinal_to_read += 1;
6309            if next_offset >= end_offset {
6310                return Ok(());
6311            }
6312
6313            // Decode unknown envelopes for gaps in ordinals.
6314            while _next_ordinal_to_read < 4 {
6315                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6316                _next_ordinal_to_read += 1;
6317                next_offset += envelope_size;
6318            }
6319
6320            let next_out_of_line = decoder.next_out_of_line();
6321            let handles_before = decoder.remaining_handles();
6322            if let Some((inlined, num_bytes, num_handles)) =
6323                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6324            {
6325                let member_inline_size =
6326                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6327                if inlined != (member_inline_size <= 4) {
6328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6329                }
6330                let inner_offset;
6331                let mut inner_depth = depth.clone();
6332                if inlined {
6333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6334                    inner_offset = next_offset;
6335                } else {
6336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6337                    inner_depth.increment()?;
6338                }
6339                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6340                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6341                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6342                {
6343                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6344                }
6345                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6346                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6347                }
6348            }
6349
6350            next_offset += envelope_size;
6351            _next_ordinal_to_read += 1;
6352            if next_offset >= end_offset {
6353                return Ok(());
6354            }
6355
6356            // Decode unknown envelopes for gaps in ordinals.
6357            while _next_ordinal_to_read < 5 {
6358                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6359                _next_ordinal_to_read += 1;
6360                next_offset += envelope_size;
6361            }
6362
6363            let next_out_of_line = decoder.next_out_of_line();
6364            let handles_before = decoder.remaining_handles();
6365            if let Some((inlined, num_bytes, num_handles)) =
6366                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6367            {
6368                let member_inline_size =
6369                    <ConnectionOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6370                if inlined != (member_inline_size <= 4) {
6371                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6372                }
6373                let inner_offset;
6374                let mut inner_depth = depth.clone();
6375                if inlined {
6376                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6377                    inner_offset = next_offset;
6378                } else {
6379                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6380                    inner_depth.increment()?;
6381                }
6382                let val_ref = self
6383                    .connection_options
6384                    .get_or_insert_with(|| fidl::new_empty!(ConnectionOptions, D));
6385                fidl::decode!(ConnectionOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
6386                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6387                {
6388                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6389                }
6390                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6391                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6392                }
6393            }
6394
6395            next_offset += envelope_size;
6396            _next_ordinal_to_read += 1;
6397            if next_offset >= end_offset {
6398                return Ok(());
6399            }
6400
6401            // Decode unknown envelopes for gaps in ordinals.
6402            while _next_ordinal_to_read < 6 {
6403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6404                _next_ordinal_to_read += 1;
6405                next_offset += envelope_size;
6406            }
6407
6408            let next_out_of_line = decoder.next_out_of_line();
6409            let handles_before = decoder.remaining_handles();
6410            if let Some((inlined, num_bytes, num_handles)) =
6411                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6412            {
6413                let member_inline_size =
6414                    <AdvertisingProcedure as fidl::encoding::TypeMarker>::inline_size(
6415                        decoder.context,
6416                    );
6417                if inlined != (member_inline_size <= 4) {
6418                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6419                }
6420                let inner_offset;
6421                let mut inner_depth = depth.clone();
6422                if inlined {
6423                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6424                    inner_offset = next_offset;
6425                } else {
6426                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6427                    inner_depth.increment()?;
6428                }
6429                let val_ref = self
6430                    .advertising_procedure
6431                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingProcedure, D));
6432                fidl::decode!(
6433                    AdvertisingProcedure,
6434                    D,
6435                    val_ref,
6436                    decoder,
6437                    inner_offset,
6438                    inner_depth
6439                )?;
6440                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6441                {
6442                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6443                }
6444                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6445                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6446                }
6447            }
6448
6449            next_offset += envelope_size;
6450            _next_ordinal_to_read += 1;
6451            if next_offset >= end_offset {
6452                return Ok(());
6453            }
6454
6455            // Decode unknown envelopes for gaps in ordinals.
6456            while _next_ordinal_to_read < 7 {
6457                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6458                _next_ordinal_to_read += 1;
6459                next_offset += envelope_size;
6460            }
6461
6462            let next_out_of_line = decoder.next_out_of_line();
6463            let handles_before = decoder.remaining_handles();
6464            if let Some((inlined, num_bytes, num_handles)) =
6465                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6466            {
6467                let member_inline_size = <fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6468                if inlined != (member_inline_size <= 4) {
6469                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6470                }
6471                let inner_offset;
6472                let mut inner_depth = depth.clone();
6473                if inlined {
6474                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6475                    inner_offset = next_offset;
6476                } else {
6477                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6478                    inner_depth.increment()?;
6479                }
6480                let val_ref = self.address_type.get_or_insert_with(|| {
6481                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::AddressType, D)
6482                });
6483                fidl::decode!(
6484                    fidl_fuchsia_bluetooth__common::AddressType,
6485                    D,
6486                    val_ref,
6487                    decoder,
6488                    inner_offset,
6489                    inner_depth
6490                )?;
6491                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6492                {
6493                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6494                }
6495                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6496                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6497                }
6498            }
6499
6500            next_offset += envelope_size;
6501
6502            // Decode the remaining unknown envelopes.
6503            while next_offset < end_offset {
6504                _next_ordinal_to_read += 1;
6505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6506                next_offset += envelope_size;
6507            }
6508
6509            Ok(())
6510        }
6511    }
6512
6513    impl BroadcastIsochronousGroupInfo {
6514        #[inline(always)]
6515        fn max_ordinal_present(&self) -> u64 {
6516            if let Some(_) = self.encryption {
6517                return 4;
6518            }
6519            if let Some(_) = self.phy {
6520                return 3;
6521            }
6522            if let Some(_) = self.max_sdu_size {
6523                return 2;
6524            }
6525            if let Some(_) = self.streams_count {
6526                return 1;
6527            }
6528            0
6529        }
6530    }
6531
6532    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfo {
6533        type Borrowed<'a> = &'a Self;
6534        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6535            value
6536        }
6537    }
6538
6539    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfo {
6540        type Owned = Self;
6541
6542        #[inline(always)]
6543        fn inline_align(_context: fidl::encoding::Context) -> usize {
6544            8
6545        }
6546
6547        #[inline(always)]
6548        fn inline_size(_context: fidl::encoding::Context) -> usize {
6549            16
6550        }
6551    }
6552
6553    unsafe impl<D: fidl::encoding::ResourceDialect>
6554        fidl::encoding::Encode<BroadcastIsochronousGroupInfo, D>
6555        for &BroadcastIsochronousGroupInfo
6556    {
6557        unsafe fn encode(
6558            self,
6559            encoder: &mut fidl::encoding::Encoder<'_, D>,
6560            offset: usize,
6561            mut depth: fidl::encoding::Depth,
6562        ) -> fidl::Result<()> {
6563            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfo>(offset);
6564            // Vector header
6565            let max_ordinal: u64 = self.max_ordinal_present();
6566            encoder.write_num(max_ordinal, offset);
6567            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6568            // Calling encoder.out_of_line_offset(0) is not allowed.
6569            if max_ordinal == 0 {
6570                return Ok(());
6571            }
6572            depth.increment()?;
6573            let envelope_size = 8;
6574            let bytes_len = max_ordinal as usize * envelope_size;
6575            #[allow(unused_variables)]
6576            let offset = encoder.out_of_line_offset(bytes_len);
6577            let mut _prev_end_offset: usize = 0;
6578            if 1 > max_ordinal {
6579                return Ok(());
6580            }
6581
6582            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6583            // are envelope_size bytes.
6584            let cur_offset: usize = (1 - 1) * envelope_size;
6585
6586            // Zero reserved fields.
6587            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6588
6589            // Safety:
6590            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6591            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6592            //   envelope_size bytes, there is always sufficient room.
6593            fidl::encoding::encode_in_envelope_optional::<u8, D>(
6594                self.streams_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6595                encoder,
6596                offset + cur_offset,
6597                depth,
6598            )?;
6599
6600            _prev_end_offset = cur_offset + envelope_size;
6601            if 2 > max_ordinal {
6602                return Ok(());
6603            }
6604
6605            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6606            // are envelope_size bytes.
6607            let cur_offset: usize = (2 - 1) * envelope_size;
6608
6609            // Zero reserved fields.
6610            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6611
6612            // Safety:
6613            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6614            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6615            //   envelope_size bytes, there is always sufficient room.
6616            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6617                self.max_sdu_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6618                encoder,
6619                offset + cur_offset,
6620                depth,
6621            )?;
6622
6623            _prev_end_offset = cur_offset + envelope_size;
6624            if 3 > max_ordinal {
6625                return Ok(());
6626            }
6627
6628            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6629            // are envelope_size bytes.
6630            let cur_offset: usize = (3 - 1) * envelope_size;
6631
6632            // Zero reserved fields.
6633            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6634
6635            // Safety:
6636            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6637            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6638            //   envelope_size bytes, there is always sufficient room.
6639            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
6640                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
6641                encoder,
6642                offset + cur_offset,
6643                depth,
6644            )?;
6645
6646            _prev_end_offset = cur_offset + envelope_size;
6647            if 4 > max_ordinal {
6648                return Ok(());
6649            }
6650
6651            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6652            // are envelope_size bytes.
6653            let cur_offset: usize = (4 - 1) * envelope_size;
6654
6655            // Zero reserved fields.
6656            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6657
6658            // Safety:
6659            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6660            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6661            //   envelope_size bytes, there is always sufficient room.
6662            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6663                self.encryption.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6664                encoder,
6665                offset + cur_offset,
6666                depth,
6667            )?;
6668
6669            _prev_end_offset = cur_offset + envelope_size;
6670
6671            Ok(())
6672        }
6673    }
6674
6675    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6676        for BroadcastIsochronousGroupInfo
6677    {
6678        #[inline(always)]
6679        fn new_empty() -> Self {
6680            Self::default()
6681        }
6682
6683        unsafe fn decode(
6684            &mut self,
6685            decoder: &mut fidl::encoding::Decoder<'_, D>,
6686            offset: usize,
6687            mut depth: fidl::encoding::Depth,
6688        ) -> fidl::Result<()> {
6689            decoder.debug_check_bounds::<Self>(offset);
6690            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6691                None => return Err(fidl::Error::NotNullable),
6692                Some(len) => len,
6693            };
6694            // Calling decoder.out_of_line_offset(0) is not allowed.
6695            if len == 0 {
6696                return Ok(());
6697            };
6698            depth.increment()?;
6699            let envelope_size = 8;
6700            let bytes_len = len * envelope_size;
6701            let offset = decoder.out_of_line_offset(bytes_len)?;
6702            // Decode the envelope for each type.
6703            let mut _next_ordinal_to_read = 0;
6704            let mut next_offset = offset;
6705            let end_offset = offset + bytes_len;
6706            _next_ordinal_to_read += 1;
6707            if next_offset >= end_offset {
6708                return Ok(());
6709            }
6710
6711            // Decode unknown envelopes for gaps in ordinals.
6712            while _next_ordinal_to_read < 1 {
6713                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6714                _next_ordinal_to_read += 1;
6715                next_offset += envelope_size;
6716            }
6717
6718            let next_out_of_line = decoder.next_out_of_line();
6719            let handles_before = decoder.remaining_handles();
6720            if let Some((inlined, num_bytes, num_handles)) =
6721                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6722            {
6723                let member_inline_size =
6724                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6725                if inlined != (member_inline_size <= 4) {
6726                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6727                }
6728                let inner_offset;
6729                let mut inner_depth = depth.clone();
6730                if inlined {
6731                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6732                    inner_offset = next_offset;
6733                } else {
6734                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6735                    inner_depth.increment()?;
6736                }
6737                let val_ref = self.streams_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
6738                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6739                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6740                {
6741                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6742                }
6743                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6744                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6745                }
6746            }
6747
6748            next_offset += envelope_size;
6749            _next_ordinal_to_read += 1;
6750            if next_offset >= end_offset {
6751                return Ok(());
6752            }
6753
6754            // Decode unknown envelopes for gaps in ordinals.
6755            while _next_ordinal_to_read < 2 {
6756                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6757                _next_ordinal_to_read += 1;
6758                next_offset += envelope_size;
6759            }
6760
6761            let next_out_of_line = decoder.next_out_of_line();
6762            let handles_before = decoder.remaining_handles();
6763            if let Some((inlined, num_bytes, num_handles)) =
6764                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6765            {
6766                let member_inline_size =
6767                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6768                if inlined != (member_inline_size <= 4) {
6769                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6770                }
6771                let inner_offset;
6772                let mut inner_depth = depth.clone();
6773                if inlined {
6774                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6775                    inner_offset = next_offset;
6776                } else {
6777                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6778                    inner_depth.increment()?;
6779                }
6780                let val_ref = self.max_sdu_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6781                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6782                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6783                {
6784                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6785                }
6786                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6787                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6788                }
6789            }
6790
6791            next_offset += envelope_size;
6792            _next_ordinal_to_read += 1;
6793            if next_offset >= end_offset {
6794                return Ok(());
6795            }
6796
6797            // Decode unknown envelopes for gaps in ordinals.
6798            while _next_ordinal_to_read < 3 {
6799                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6800                _next_ordinal_to_read += 1;
6801                next_offset += envelope_size;
6802            }
6803
6804            let next_out_of_line = decoder.next_out_of_line();
6805            let handles_before = decoder.remaining_handles();
6806            if let Some((inlined, num_bytes, num_handles)) =
6807                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6808            {
6809                let member_inline_size =
6810                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6811                if inlined != (member_inline_size <= 4) {
6812                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6813                }
6814                let inner_offset;
6815                let mut inner_depth = depth.clone();
6816                if inlined {
6817                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6818                    inner_offset = next_offset;
6819                } else {
6820                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6821                    inner_depth.increment()?;
6822                }
6823                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
6824                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
6825                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6826                {
6827                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6828                }
6829                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6830                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6831                }
6832            }
6833
6834            next_offset += envelope_size;
6835            _next_ordinal_to_read += 1;
6836            if next_offset >= end_offset {
6837                return Ok(());
6838            }
6839
6840            // Decode unknown envelopes for gaps in ordinals.
6841            while _next_ordinal_to_read < 4 {
6842                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6843                _next_ordinal_to_read += 1;
6844                next_offset += envelope_size;
6845            }
6846
6847            let next_out_of_line = decoder.next_out_of_line();
6848            let handles_before = decoder.remaining_handles();
6849            if let Some((inlined, num_bytes, num_handles)) =
6850                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6851            {
6852                let member_inline_size =
6853                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6854                if inlined != (member_inline_size <= 4) {
6855                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6856                }
6857                let inner_offset;
6858                let mut inner_depth = depth.clone();
6859                if inlined {
6860                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6861                    inner_offset = next_offset;
6862                } else {
6863                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6864                    inner_depth.increment()?;
6865                }
6866                let val_ref = self.encryption.get_or_insert_with(|| fidl::new_empty!(bool, D));
6867                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6868                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6869                {
6870                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6871                }
6872                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6873                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6874                }
6875            }
6876
6877            next_offset += envelope_size;
6878
6879            // Decode the remaining unknown envelopes.
6880            while next_offset < end_offset {
6881                _next_ordinal_to_read += 1;
6882                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6883                next_offset += envelope_size;
6884            }
6885
6886            Ok(())
6887        }
6888    }
6889
6890    impl BroadcastIsochronousGroupInfoReport {
6891        #[inline(always)]
6892        fn max_ordinal_present(&self) -> u64 {
6893            if let Some(_) = self.timestamp {
6894                return 2;
6895            }
6896            if let Some(_) = self.info {
6897                return 1;
6898            }
6899            0
6900        }
6901    }
6902
6903    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfoReport {
6904        type Borrowed<'a> = &'a Self;
6905        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6906            value
6907        }
6908    }
6909
6910    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfoReport {
6911        type Owned = Self;
6912
6913        #[inline(always)]
6914        fn inline_align(_context: fidl::encoding::Context) -> usize {
6915            8
6916        }
6917
6918        #[inline(always)]
6919        fn inline_size(_context: fidl::encoding::Context) -> usize {
6920            16
6921        }
6922    }
6923
6924    unsafe impl<D: fidl::encoding::ResourceDialect>
6925        fidl::encoding::Encode<BroadcastIsochronousGroupInfoReport, D>
6926        for &BroadcastIsochronousGroupInfoReport
6927    {
6928        unsafe fn encode(
6929            self,
6930            encoder: &mut fidl::encoding::Encoder<'_, D>,
6931            offset: usize,
6932            mut depth: fidl::encoding::Depth,
6933        ) -> fidl::Result<()> {
6934            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfoReport>(offset);
6935            // Vector header
6936            let max_ordinal: u64 = self.max_ordinal_present();
6937            encoder.write_num(max_ordinal, offset);
6938            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6939            // Calling encoder.out_of_line_offset(0) is not allowed.
6940            if max_ordinal == 0 {
6941                return Ok(());
6942            }
6943            depth.increment()?;
6944            let envelope_size = 8;
6945            let bytes_len = max_ordinal as usize * envelope_size;
6946            #[allow(unused_variables)]
6947            let offset = encoder.out_of_line_offset(bytes_len);
6948            let mut _prev_end_offset: usize = 0;
6949            if 1 > max_ordinal {
6950                return Ok(());
6951            }
6952
6953            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6954            // are envelope_size bytes.
6955            let cur_offset: usize = (1 - 1) * envelope_size;
6956
6957            // Zero reserved fields.
6958            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6959
6960            // Safety:
6961            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6962            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6963            //   envelope_size bytes, there is always sufficient room.
6964            fidl::encoding::encode_in_envelope_optional::<BroadcastIsochronousGroupInfo, D>(
6965                self.info.as_ref().map(
6966                    <BroadcastIsochronousGroupInfo as fidl::encoding::ValueTypeMarker>::borrow,
6967                ),
6968                encoder,
6969                offset + cur_offset,
6970                depth,
6971            )?;
6972
6973            _prev_end_offset = cur_offset + envelope_size;
6974            if 2 > max_ordinal {
6975                return Ok(());
6976            }
6977
6978            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6979            // are envelope_size bytes.
6980            let cur_offset: usize = (2 - 1) * envelope_size;
6981
6982            // Zero reserved fields.
6983            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6984
6985            // Safety:
6986            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6987            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6988            //   envelope_size bytes, there is always sufficient room.
6989            fidl::encoding::encode_in_envelope_optional::<i64, D>(
6990                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6991                encoder,
6992                offset + cur_offset,
6993                depth,
6994            )?;
6995
6996            _prev_end_offset = cur_offset + envelope_size;
6997
6998            Ok(())
6999        }
7000    }
7001
7002    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7003        for BroadcastIsochronousGroupInfoReport
7004    {
7005        #[inline(always)]
7006        fn new_empty() -> Self {
7007            Self::default()
7008        }
7009
7010        unsafe fn decode(
7011            &mut self,
7012            decoder: &mut fidl::encoding::Decoder<'_, D>,
7013            offset: usize,
7014            mut depth: fidl::encoding::Depth,
7015        ) -> fidl::Result<()> {
7016            decoder.debug_check_bounds::<Self>(offset);
7017            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7018                None => return Err(fidl::Error::NotNullable),
7019                Some(len) => len,
7020            };
7021            // Calling decoder.out_of_line_offset(0) is not allowed.
7022            if len == 0 {
7023                return Ok(());
7024            };
7025            depth.increment()?;
7026            let envelope_size = 8;
7027            let bytes_len = len * envelope_size;
7028            let offset = decoder.out_of_line_offset(bytes_len)?;
7029            // Decode the envelope for each type.
7030            let mut _next_ordinal_to_read = 0;
7031            let mut next_offset = offset;
7032            let end_offset = offset + bytes_len;
7033            _next_ordinal_to_read += 1;
7034            if next_offset >= end_offset {
7035                return Ok(());
7036            }
7037
7038            // Decode unknown envelopes for gaps in ordinals.
7039            while _next_ordinal_to_read < 1 {
7040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7041                _next_ordinal_to_read += 1;
7042                next_offset += envelope_size;
7043            }
7044
7045            let next_out_of_line = decoder.next_out_of_line();
7046            let handles_before = decoder.remaining_handles();
7047            if let Some((inlined, num_bytes, num_handles)) =
7048                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7049            {
7050                let member_inline_size =
7051                    <BroadcastIsochronousGroupInfo as fidl::encoding::TypeMarker>::inline_size(
7052                        decoder.context,
7053                    );
7054                if inlined != (member_inline_size <= 4) {
7055                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7056                }
7057                let inner_offset;
7058                let mut inner_depth = depth.clone();
7059                if inlined {
7060                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7061                    inner_offset = next_offset;
7062                } else {
7063                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7064                    inner_depth.increment()?;
7065                }
7066                let val_ref = self
7067                    .info
7068                    .get_or_insert_with(|| fidl::new_empty!(BroadcastIsochronousGroupInfo, D));
7069                fidl::decode!(
7070                    BroadcastIsochronousGroupInfo,
7071                    D,
7072                    val_ref,
7073                    decoder,
7074                    inner_offset,
7075                    inner_depth
7076                )?;
7077                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7078                {
7079                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7080                }
7081                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7082                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7083                }
7084            }
7085
7086            next_offset += envelope_size;
7087            _next_ordinal_to_read += 1;
7088            if next_offset >= end_offset {
7089                return Ok(());
7090            }
7091
7092            // Decode unknown envelopes for gaps in ordinals.
7093            while _next_ordinal_to_read < 2 {
7094                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7095                _next_ordinal_to_read += 1;
7096                next_offset += envelope_size;
7097            }
7098
7099            let next_out_of_line = decoder.next_out_of_line();
7100            let handles_before = decoder.remaining_handles();
7101            if let Some((inlined, num_bytes, num_handles)) =
7102                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7103            {
7104                let member_inline_size =
7105                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7106                if inlined != (member_inline_size <= 4) {
7107                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7108                }
7109                let inner_offset;
7110                let mut inner_depth = depth.clone();
7111                if inlined {
7112                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7113                    inner_offset = next_offset;
7114                } else {
7115                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7116                    inner_depth.increment()?;
7117                }
7118                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
7119                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7120                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7121                {
7122                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7123                }
7124                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7125                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7126                }
7127            }
7128
7129            next_offset += envelope_size;
7130
7131            // Decode the remaining unknown envelopes.
7132            while next_offset < end_offset {
7133                _next_ordinal_to_read += 1;
7134                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7135                next_offset += envelope_size;
7136            }
7137
7138            Ok(())
7139        }
7140    }
7141
7142    impl CentralCreateConnectedIsochronousGroupResponse {
7143        #[inline(always)]
7144        fn max_ordinal_present(&self) -> u64 {
7145            if let Some(_) = self.cig_id {
7146                return 1;
7147            }
7148            0
7149        }
7150    }
7151
7152    impl fidl::encoding::ValueTypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7153        type Borrowed<'a> = &'a Self;
7154        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7155            value
7156        }
7157    }
7158
7159    unsafe impl fidl::encoding::TypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7160        type Owned = Self;
7161
7162        #[inline(always)]
7163        fn inline_align(_context: fidl::encoding::Context) -> usize {
7164            8
7165        }
7166
7167        #[inline(always)]
7168        fn inline_size(_context: fidl::encoding::Context) -> usize {
7169            16
7170        }
7171    }
7172
7173    unsafe impl<D: fidl::encoding::ResourceDialect>
7174        fidl::encoding::Encode<CentralCreateConnectedIsochronousGroupResponse, D>
7175        for &CentralCreateConnectedIsochronousGroupResponse
7176    {
7177        unsafe fn encode(
7178            self,
7179            encoder: &mut fidl::encoding::Encoder<'_, D>,
7180            offset: usize,
7181            mut depth: fidl::encoding::Depth,
7182        ) -> fidl::Result<()> {
7183            encoder.debug_check_bounds::<CentralCreateConnectedIsochronousGroupResponse>(offset);
7184            // Vector header
7185            let max_ordinal: u64 = self.max_ordinal_present();
7186            encoder.write_num(max_ordinal, offset);
7187            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7188            // Calling encoder.out_of_line_offset(0) is not allowed.
7189            if max_ordinal == 0 {
7190                return Ok(());
7191            }
7192            depth.increment()?;
7193            let envelope_size = 8;
7194            let bytes_len = max_ordinal as usize * envelope_size;
7195            #[allow(unused_variables)]
7196            let offset = encoder.out_of_line_offset(bytes_len);
7197            let mut _prev_end_offset: usize = 0;
7198            if 1 > max_ordinal {
7199                return Ok(());
7200            }
7201
7202            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7203            // are envelope_size bytes.
7204            let cur_offset: usize = (1 - 1) * envelope_size;
7205
7206            // Zero reserved fields.
7207            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7208
7209            // Safety:
7210            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7211            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7212            //   envelope_size bytes, there is always sufficient room.
7213            fidl::encoding::encode_in_envelope_optional::<u8, D>(
7214                self.cig_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7215                encoder,
7216                offset + cur_offset,
7217                depth,
7218            )?;
7219
7220            _prev_end_offset = cur_offset + envelope_size;
7221
7222            Ok(())
7223        }
7224    }
7225
7226    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7227        for CentralCreateConnectedIsochronousGroupResponse
7228    {
7229        #[inline(always)]
7230        fn new_empty() -> Self {
7231            Self::default()
7232        }
7233
7234        unsafe fn decode(
7235            &mut self,
7236            decoder: &mut fidl::encoding::Decoder<'_, D>,
7237            offset: usize,
7238            mut depth: fidl::encoding::Depth,
7239        ) -> fidl::Result<()> {
7240            decoder.debug_check_bounds::<Self>(offset);
7241            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7242                None => return Err(fidl::Error::NotNullable),
7243                Some(len) => len,
7244            };
7245            // Calling decoder.out_of_line_offset(0) is not allowed.
7246            if len == 0 {
7247                return Ok(());
7248            };
7249            depth.increment()?;
7250            let envelope_size = 8;
7251            let bytes_len = len * envelope_size;
7252            let offset = decoder.out_of_line_offset(bytes_len)?;
7253            // Decode the envelope for each type.
7254            let mut _next_ordinal_to_read = 0;
7255            let mut next_offset = offset;
7256            let end_offset = offset + bytes_len;
7257            _next_ordinal_to_read += 1;
7258            if next_offset >= end_offset {
7259                return Ok(());
7260            }
7261
7262            // Decode unknown envelopes for gaps in ordinals.
7263            while _next_ordinal_to_read < 1 {
7264                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7265                _next_ordinal_to_read += 1;
7266                next_offset += envelope_size;
7267            }
7268
7269            let next_out_of_line = decoder.next_out_of_line();
7270            let handles_before = decoder.remaining_handles();
7271            if let Some((inlined, num_bytes, num_handles)) =
7272                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7273            {
7274                let member_inline_size =
7275                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7276                if inlined != (member_inline_size <= 4) {
7277                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7278                }
7279                let inner_offset;
7280                let mut inner_depth = depth.clone();
7281                if inlined {
7282                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7283                    inner_offset = next_offset;
7284                } else {
7285                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7286                    inner_depth.increment()?;
7287                }
7288                let val_ref = self.cig_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7289                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7290                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7291                {
7292                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7293                }
7294                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7295                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7296                }
7297            }
7298
7299            next_offset += envelope_size;
7300
7301            // Decode the remaining unknown envelopes.
7302            while next_offset < end_offset {
7303                _next_ordinal_to_read += 1;
7304                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7305                next_offset += envelope_size;
7306            }
7307
7308            Ok(())
7309        }
7310    }
7311
7312    impl ChannelListenerRegistryListenL2capResponse {
7313        #[inline(always)]
7314        fn max_ordinal_present(&self) -> u64 {
7315            if let Some(_) = self.psm {
7316                return 1;
7317            }
7318            0
7319        }
7320    }
7321
7322    impl fidl::encoding::ValueTypeMarker for ChannelListenerRegistryListenL2capResponse {
7323        type Borrowed<'a> = &'a Self;
7324        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7325            value
7326        }
7327    }
7328
7329    unsafe impl fidl::encoding::TypeMarker for ChannelListenerRegistryListenL2capResponse {
7330        type Owned = Self;
7331
7332        #[inline(always)]
7333        fn inline_align(_context: fidl::encoding::Context) -> usize {
7334            8
7335        }
7336
7337        #[inline(always)]
7338        fn inline_size(_context: fidl::encoding::Context) -> usize {
7339            16
7340        }
7341    }
7342
7343    unsafe impl<D: fidl::encoding::ResourceDialect>
7344        fidl::encoding::Encode<ChannelListenerRegistryListenL2capResponse, D>
7345        for &ChannelListenerRegistryListenL2capResponse
7346    {
7347        unsafe fn encode(
7348            self,
7349            encoder: &mut fidl::encoding::Encoder<'_, D>,
7350            offset: usize,
7351            mut depth: fidl::encoding::Depth,
7352        ) -> fidl::Result<()> {
7353            encoder.debug_check_bounds::<ChannelListenerRegistryListenL2capResponse>(offset);
7354            // Vector header
7355            let max_ordinal: u64 = self.max_ordinal_present();
7356            encoder.write_num(max_ordinal, offset);
7357            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7358            // Calling encoder.out_of_line_offset(0) is not allowed.
7359            if max_ordinal == 0 {
7360                return Ok(());
7361            }
7362            depth.increment()?;
7363            let envelope_size = 8;
7364            let bytes_len = max_ordinal as usize * envelope_size;
7365            #[allow(unused_variables)]
7366            let offset = encoder.out_of_line_offset(bytes_len);
7367            let mut _prev_end_offset: usize = 0;
7368            if 1 > max_ordinal {
7369                return Ok(());
7370            }
7371
7372            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7373            // are envelope_size bytes.
7374            let cur_offset: usize = (1 - 1) * envelope_size;
7375
7376            // Zero reserved fields.
7377            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7378
7379            // Safety:
7380            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7381            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7382            //   envelope_size bytes, there is always sufficient room.
7383            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7384                self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7385                encoder,
7386                offset + cur_offset,
7387                depth,
7388            )?;
7389
7390            _prev_end_offset = cur_offset + envelope_size;
7391
7392            Ok(())
7393        }
7394    }
7395
7396    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7397        for ChannelListenerRegistryListenL2capResponse
7398    {
7399        #[inline(always)]
7400        fn new_empty() -> Self {
7401            Self::default()
7402        }
7403
7404        unsafe fn decode(
7405            &mut self,
7406            decoder: &mut fidl::encoding::Decoder<'_, D>,
7407            offset: usize,
7408            mut depth: fidl::encoding::Depth,
7409        ) -> fidl::Result<()> {
7410            decoder.debug_check_bounds::<Self>(offset);
7411            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7412                None => return Err(fidl::Error::NotNullable),
7413                Some(len) => len,
7414            };
7415            // Calling decoder.out_of_line_offset(0) is not allowed.
7416            if len == 0 {
7417                return Ok(());
7418            };
7419            depth.increment()?;
7420            let envelope_size = 8;
7421            let bytes_len = len * envelope_size;
7422            let offset = decoder.out_of_line_offset(bytes_len)?;
7423            // Decode the envelope for each type.
7424            let mut _next_ordinal_to_read = 0;
7425            let mut next_offset = offset;
7426            let end_offset = offset + bytes_len;
7427            _next_ordinal_to_read += 1;
7428            if next_offset >= end_offset {
7429                return Ok(());
7430            }
7431
7432            // Decode unknown envelopes for gaps in ordinals.
7433            while _next_ordinal_to_read < 1 {
7434                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7435                _next_ordinal_to_read += 1;
7436                next_offset += envelope_size;
7437            }
7438
7439            let next_out_of_line = decoder.next_out_of_line();
7440            let handles_before = decoder.remaining_handles();
7441            if let Some((inlined, num_bytes, num_handles)) =
7442                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7443            {
7444                let member_inline_size =
7445                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7446                if inlined != (member_inline_size <= 4) {
7447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7448                }
7449                let inner_offset;
7450                let mut inner_depth = depth.clone();
7451                if inlined {
7452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7453                    inner_offset = next_offset;
7454                } else {
7455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7456                    inner_depth.increment()?;
7457                }
7458                let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
7459                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7460                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7461                {
7462                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7463                }
7464                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7465                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7466                }
7467            }
7468
7469            next_offset += envelope_size;
7470
7471            // Decode the remaining unknown envelopes.
7472            while next_offset < end_offset {
7473                _next_ordinal_to_read += 1;
7474                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7475                next_offset += envelope_size;
7476            }
7477
7478            Ok(())
7479        }
7480    }
7481
7482    impl CigParameters {
7483        #[inline(always)]
7484        fn max_ordinal_present(&self) -> u64 {
7485            if let Some(_) = self.max_transport_latency_p_to_c {
7486                return 6;
7487            }
7488            if let Some(_) = self.max_transport_latency_c_to_p {
7489                return 5;
7490            }
7491            if let Some(_) = self.framing {
7492                return 4;
7493            }
7494            if let Some(_) = self.packing {
7495                return 3;
7496            }
7497            if let Some(_) = self.sdu_interval_p_to_c {
7498                return 2;
7499            }
7500            if let Some(_) = self.sdu_interval_c_to_p {
7501                return 1;
7502            }
7503            0
7504        }
7505    }
7506
7507    impl fidl::encoding::ValueTypeMarker for CigParameters {
7508        type Borrowed<'a> = &'a Self;
7509        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7510            value
7511        }
7512    }
7513
7514    unsafe impl fidl::encoding::TypeMarker for CigParameters {
7515        type Owned = Self;
7516
7517        #[inline(always)]
7518        fn inline_align(_context: fidl::encoding::Context) -> usize {
7519            8
7520        }
7521
7522        #[inline(always)]
7523        fn inline_size(_context: fidl::encoding::Context) -> usize {
7524            16
7525        }
7526    }
7527
7528    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CigParameters, D>
7529        for &CigParameters
7530    {
7531        unsafe fn encode(
7532            self,
7533            encoder: &mut fidl::encoding::Encoder<'_, D>,
7534            offset: usize,
7535            mut depth: fidl::encoding::Depth,
7536        ) -> fidl::Result<()> {
7537            encoder.debug_check_bounds::<CigParameters>(offset);
7538            // Vector header
7539            let max_ordinal: u64 = self.max_ordinal_present();
7540            encoder.write_num(max_ordinal, offset);
7541            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7542            // Calling encoder.out_of_line_offset(0) is not allowed.
7543            if max_ordinal == 0 {
7544                return Ok(());
7545            }
7546            depth.increment()?;
7547            let envelope_size = 8;
7548            let bytes_len = max_ordinal as usize * envelope_size;
7549            #[allow(unused_variables)]
7550            let offset = encoder.out_of_line_offset(bytes_len);
7551            let mut _prev_end_offset: usize = 0;
7552            if 1 > max_ordinal {
7553                return Ok(());
7554            }
7555
7556            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7557            // are envelope_size bytes.
7558            let cur_offset: usize = (1 - 1) * envelope_size;
7559
7560            // Zero reserved fields.
7561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7562
7563            // Safety:
7564            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7565            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7566            //   envelope_size bytes, there is always sufficient room.
7567            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7568                self.sdu_interval_c_to_p
7569                    .as_ref()
7570                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7571                encoder,
7572                offset + cur_offset,
7573                depth,
7574            )?;
7575
7576            _prev_end_offset = cur_offset + envelope_size;
7577            if 2 > max_ordinal {
7578                return Ok(());
7579            }
7580
7581            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7582            // are envelope_size bytes.
7583            let cur_offset: usize = (2 - 1) * envelope_size;
7584
7585            // Zero reserved fields.
7586            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7587
7588            // Safety:
7589            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7590            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7591            //   envelope_size bytes, there is always sufficient room.
7592            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7593                self.sdu_interval_p_to_c
7594                    .as_ref()
7595                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7596                encoder,
7597                offset + cur_offset,
7598                depth,
7599            )?;
7600
7601            _prev_end_offset = cur_offset + envelope_size;
7602            if 3 > max_ordinal {
7603                return Ok(());
7604            }
7605
7606            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7607            // are envelope_size bytes.
7608            let cur_offset: usize = (3 - 1) * envelope_size;
7609
7610            // Zero reserved fields.
7611            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7612
7613            // Safety:
7614            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7615            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7616            //   envelope_size bytes, there is always sufficient room.
7617            fidl::encoding::encode_in_envelope_optional::<CigPacking, D>(
7618                self.packing.as_ref().map(<CigPacking as fidl::encoding::ValueTypeMarker>::borrow),
7619                encoder,
7620                offset + cur_offset,
7621                depth,
7622            )?;
7623
7624            _prev_end_offset = cur_offset + envelope_size;
7625            if 4 > max_ordinal {
7626                return Ok(());
7627            }
7628
7629            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7630            // are envelope_size bytes.
7631            let cur_offset: usize = (4 - 1) * envelope_size;
7632
7633            // Zero reserved fields.
7634            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7635
7636            // Safety:
7637            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7638            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7639            //   envelope_size bytes, there is always sufficient room.
7640            fidl::encoding::encode_in_envelope_optional::<CigFramingOptions, D>(
7641                self.framing
7642                    .as_ref()
7643                    .map(<CigFramingOptions as fidl::encoding::ValueTypeMarker>::borrow),
7644                encoder,
7645                offset + cur_offset,
7646                depth,
7647            )?;
7648
7649            _prev_end_offset = cur_offset + envelope_size;
7650            if 5 > max_ordinal {
7651                return Ok(());
7652            }
7653
7654            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7655            // are envelope_size bytes.
7656            let cur_offset: usize = (5 - 1) * envelope_size;
7657
7658            // Zero reserved fields.
7659            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7660
7661            // Safety:
7662            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7663            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7664            //   envelope_size bytes, there is always sufficient room.
7665            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7666                self.max_transport_latency_c_to_p
7667                    .as_ref()
7668                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7669                encoder,
7670                offset + cur_offset,
7671                depth,
7672            )?;
7673
7674            _prev_end_offset = cur_offset + envelope_size;
7675            if 6 > max_ordinal {
7676                return Ok(());
7677            }
7678
7679            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7680            // are envelope_size bytes.
7681            let cur_offset: usize = (6 - 1) * envelope_size;
7682
7683            // Zero reserved fields.
7684            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7685
7686            // Safety:
7687            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7688            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7689            //   envelope_size bytes, there is always sufficient room.
7690            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7691                self.max_transport_latency_p_to_c
7692                    .as_ref()
7693                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7694                encoder,
7695                offset + cur_offset,
7696                depth,
7697            )?;
7698
7699            _prev_end_offset = cur_offset + envelope_size;
7700
7701            Ok(())
7702        }
7703    }
7704
7705    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigParameters {
7706        #[inline(always)]
7707        fn new_empty() -> Self {
7708            Self::default()
7709        }
7710
7711        unsafe fn decode(
7712            &mut self,
7713            decoder: &mut fidl::encoding::Decoder<'_, D>,
7714            offset: usize,
7715            mut depth: fidl::encoding::Depth,
7716        ) -> fidl::Result<()> {
7717            decoder.debug_check_bounds::<Self>(offset);
7718            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7719                None => return Err(fidl::Error::NotNullable),
7720                Some(len) => len,
7721            };
7722            // Calling decoder.out_of_line_offset(0) is not allowed.
7723            if len == 0 {
7724                return Ok(());
7725            };
7726            depth.increment()?;
7727            let envelope_size = 8;
7728            let bytes_len = len * envelope_size;
7729            let offset = decoder.out_of_line_offset(bytes_len)?;
7730            // Decode the envelope for each type.
7731            let mut _next_ordinal_to_read = 0;
7732            let mut next_offset = offset;
7733            let end_offset = offset + bytes_len;
7734            _next_ordinal_to_read += 1;
7735            if next_offset >= end_offset {
7736                return Ok(());
7737            }
7738
7739            // Decode unknown envelopes for gaps in ordinals.
7740            while _next_ordinal_to_read < 1 {
7741                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7742                _next_ordinal_to_read += 1;
7743                next_offset += envelope_size;
7744            }
7745
7746            let next_out_of_line = decoder.next_out_of_line();
7747            let handles_before = decoder.remaining_handles();
7748            if let Some((inlined, num_bytes, num_handles)) =
7749                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7750            {
7751                let member_inline_size =
7752                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7753                if inlined != (member_inline_size <= 4) {
7754                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7755                }
7756                let inner_offset;
7757                let mut inner_depth = depth.clone();
7758                if inlined {
7759                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7760                    inner_offset = next_offset;
7761                } else {
7762                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7763                    inner_depth.increment()?;
7764                }
7765                let val_ref =
7766                    self.sdu_interval_c_to_p.get_or_insert_with(|| fidl::new_empty!(u32, D));
7767                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7768                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7769                {
7770                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7771                }
7772                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7773                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7774                }
7775            }
7776
7777            next_offset += envelope_size;
7778            _next_ordinal_to_read += 1;
7779            if next_offset >= end_offset {
7780                return Ok(());
7781            }
7782
7783            // Decode unknown envelopes for gaps in ordinals.
7784            while _next_ordinal_to_read < 2 {
7785                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7786                _next_ordinal_to_read += 1;
7787                next_offset += envelope_size;
7788            }
7789
7790            let next_out_of_line = decoder.next_out_of_line();
7791            let handles_before = decoder.remaining_handles();
7792            if let Some((inlined, num_bytes, num_handles)) =
7793                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7794            {
7795                let member_inline_size =
7796                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7797                if inlined != (member_inline_size <= 4) {
7798                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7799                }
7800                let inner_offset;
7801                let mut inner_depth = depth.clone();
7802                if inlined {
7803                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7804                    inner_offset = next_offset;
7805                } else {
7806                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7807                    inner_depth.increment()?;
7808                }
7809                let val_ref =
7810                    self.sdu_interval_p_to_c.get_or_insert_with(|| fidl::new_empty!(u32, D));
7811                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7812                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7813                {
7814                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7815                }
7816                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7817                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7818                }
7819            }
7820
7821            next_offset += envelope_size;
7822            _next_ordinal_to_read += 1;
7823            if next_offset >= end_offset {
7824                return Ok(());
7825            }
7826
7827            // Decode unknown envelopes for gaps in ordinals.
7828            while _next_ordinal_to_read < 3 {
7829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7830                _next_ordinal_to_read += 1;
7831                next_offset += envelope_size;
7832            }
7833
7834            let next_out_of_line = decoder.next_out_of_line();
7835            let handles_before = decoder.remaining_handles();
7836            if let Some((inlined, num_bytes, num_handles)) =
7837                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7838            {
7839                let member_inline_size =
7840                    <CigPacking as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7841                if inlined != (member_inline_size <= 4) {
7842                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7843                }
7844                let inner_offset;
7845                let mut inner_depth = depth.clone();
7846                if inlined {
7847                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7848                    inner_offset = next_offset;
7849                } else {
7850                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7851                    inner_depth.increment()?;
7852                }
7853                let val_ref = self.packing.get_or_insert_with(|| fidl::new_empty!(CigPacking, D));
7854                fidl::decode!(CigPacking, D, val_ref, decoder, inner_offset, inner_depth)?;
7855                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7856                {
7857                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7858                }
7859                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7860                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7861                }
7862            }
7863
7864            next_offset += envelope_size;
7865            _next_ordinal_to_read += 1;
7866            if next_offset >= end_offset {
7867                return Ok(());
7868            }
7869
7870            // Decode unknown envelopes for gaps in ordinals.
7871            while _next_ordinal_to_read < 4 {
7872                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7873                _next_ordinal_to_read += 1;
7874                next_offset += envelope_size;
7875            }
7876
7877            let next_out_of_line = decoder.next_out_of_line();
7878            let handles_before = decoder.remaining_handles();
7879            if let Some((inlined, num_bytes, num_handles)) =
7880                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7881            {
7882                let member_inline_size =
7883                    <CigFramingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7884                if inlined != (member_inline_size <= 4) {
7885                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7886                }
7887                let inner_offset;
7888                let mut inner_depth = depth.clone();
7889                if inlined {
7890                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7891                    inner_offset = next_offset;
7892                } else {
7893                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7894                    inner_depth.increment()?;
7895                }
7896                let val_ref =
7897                    self.framing.get_or_insert_with(|| fidl::new_empty!(CigFramingOptions, D));
7898                fidl::decode!(CigFramingOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
7899                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7900                {
7901                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7902                }
7903                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7904                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7905                }
7906            }
7907
7908            next_offset += envelope_size;
7909            _next_ordinal_to_read += 1;
7910            if next_offset >= end_offset {
7911                return Ok(());
7912            }
7913
7914            // Decode unknown envelopes for gaps in ordinals.
7915            while _next_ordinal_to_read < 5 {
7916                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7917                _next_ordinal_to_read += 1;
7918                next_offset += envelope_size;
7919            }
7920
7921            let next_out_of_line = decoder.next_out_of_line();
7922            let handles_before = decoder.remaining_handles();
7923            if let Some((inlined, num_bytes, num_handles)) =
7924                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7925            {
7926                let member_inline_size =
7927                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7928                if inlined != (member_inline_size <= 4) {
7929                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7930                }
7931                let inner_offset;
7932                let mut inner_depth = depth.clone();
7933                if inlined {
7934                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7935                    inner_offset = next_offset;
7936                } else {
7937                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7938                    inner_depth.increment()?;
7939                }
7940                let val_ref = self
7941                    .max_transport_latency_c_to_p
7942                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
7943                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7944                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7945                {
7946                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7947                }
7948                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7949                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7950                }
7951            }
7952
7953            next_offset += envelope_size;
7954            _next_ordinal_to_read += 1;
7955            if next_offset >= end_offset {
7956                return Ok(());
7957            }
7958
7959            // Decode unknown envelopes for gaps in ordinals.
7960            while _next_ordinal_to_read < 6 {
7961                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7962                _next_ordinal_to_read += 1;
7963                next_offset += envelope_size;
7964            }
7965
7966            let next_out_of_line = decoder.next_out_of_line();
7967            let handles_before = decoder.remaining_handles();
7968            if let Some((inlined, num_bytes, num_handles)) =
7969                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7970            {
7971                let member_inline_size =
7972                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7973                if inlined != (member_inline_size <= 4) {
7974                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7975                }
7976                let inner_offset;
7977                let mut inner_depth = depth.clone();
7978                if inlined {
7979                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7980                    inner_offset = next_offset;
7981                } else {
7982                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7983                    inner_depth.increment()?;
7984                }
7985                let val_ref = self
7986                    .max_transport_latency_p_to_c
7987                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
7988                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7989                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7990                {
7991                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7992                }
7993                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7994                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7995                }
7996            }
7997
7998            next_offset += envelope_size;
7999
8000            // Decode the remaining unknown envelopes.
8001            while next_offset < end_offset {
8002                _next_ordinal_to_read += 1;
8003                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8004                next_offset += envelope_size;
8005            }
8006
8007            Ok(())
8008        }
8009    }
8010
8011    impl CisEstablishedParameters {
8012        #[inline(always)]
8013        fn max_ordinal_present(&self) -> u64 {
8014            if let Some(_) = self.peripheral_to_central_params {
8015                return 6;
8016            }
8017            if let Some(_) = self.central_to_peripheral_params {
8018                return 5;
8019            }
8020            if let Some(_) = self.iso_interval {
8021                return 4;
8022            }
8023            if let Some(_) = self.max_subevents {
8024                return 3;
8025            }
8026            if let Some(_) = self.cis_sync_delay {
8027                return 2;
8028            }
8029            if let Some(_) = self.cig_sync_delay {
8030                return 1;
8031            }
8032            0
8033        }
8034    }
8035
8036    impl fidl::encoding::ValueTypeMarker for CisEstablishedParameters {
8037        type Borrowed<'a> = &'a Self;
8038        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8039            value
8040        }
8041    }
8042
8043    unsafe impl fidl::encoding::TypeMarker for CisEstablishedParameters {
8044        type Owned = Self;
8045
8046        #[inline(always)]
8047        fn inline_align(_context: fidl::encoding::Context) -> usize {
8048            8
8049        }
8050
8051        #[inline(always)]
8052        fn inline_size(_context: fidl::encoding::Context) -> usize {
8053            16
8054        }
8055    }
8056
8057    unsafe impl<D: fidl::encoding::ResourceDialect>
8058        fidl::encoding::Encode<CisEstablishedParameters, D> for &CisEstablishedParameters
8059    {
8060        unsafe fn encode(
8061            self,
8062            encoder: &mut fidl::encoding::Encoder<'_, D>,
8063            offset: usize,
8064            mut depth: fidl::encoding::Depth,
8065        ) -> fidl::Result<()> {
8066            encoder.debug_check_bounds::<CisEstablishedParameters>(offset);
8067            // Vector header
8068            let max_ordinal: u64 = self.max_ordinal_present();
8069            encoder.write_num(max_ordinal, offset);
8070            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8071            // Calling encoder.out_of_line_offset(0) is not allowed.
8072            if max_ordinal == 0 {
8073                return Ok(());
8074            }
8075            depth.increment()?;
8076            let envelope_size = 8;
8077            let bytes_len = max_ordinal as usize * envelope_size;
8078            #[allow(unused_variables)]
8079            let offset = encoder.out_of_line_offset(bytes_len);
8080            let mut _prev_end_offset: usize = 0;
8081            if 1 > max_ordinal {
8082                return Ok(());
8083            }
8084
8085            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8086            // are envelope_size bytes.
8087            let cur_offset: usize = (1 - 1) * envelope_size;
8088
8089            // Zero reserved fields.
8090            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8091
8092            // Safety:
8093            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8094            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8095            //   envelope_size bytes, there is always sufficient room.
8096            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8097                self.cig_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8098                encoder,
8099                offset + cur_offset,
8100                depth,
8101            )?;
8102
8103            _prev_end_offset = cur_offset + envelope_size;
8104            if 2 > max_ordinal {
8105                return Ok(());
8106            }
8107
8108            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8109            // are envelope_size bytes.
8110            let cur_offset: usize = (2 - 1) * envelope_size;
8111
8112            // Zero reserved fields.
8113            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8114
8115            // Safety:
8116            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8117            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8118            //   envelope_size bytes, there is always sufficient room.
8119            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8120                self.cis_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8121                encoder,
8122                offset + cur_offset,
8123                depth,
8124            )?;
8125
8126            _prev_end_offset = cur_offset + envelope_size;
8127            if 3 > max_ordinal {
8128                return Ok(());
8129            }
8130
8131            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8132            // are envelope_size bytes.
8133            let cur_offset: usize = (3 - 1) * envelope_size;
8134
8135            // Zero reserved fields.
8136            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8137
8138            // Safety:
8139            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8140            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8141            //   envelope_size bytes, there is always sufficient room.
8142            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8143                self.max_subevents.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8144                encoder,
8145                offset + cur_offset,
8146                depth,
8147            )?;
8148
8149            _prev_end_offset = cur_offset + envelope_size;
8150            if 4 > max_ordinal {
8151                return Ok(());
8152            }
8153
8154            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8155            // are envelope_size bytes.
8156            let cur_offset: usize = (4 - 1) * envelope_size;
8157
8158            // Zero reserved fields.
8159            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8160
8161            // Safety:
8162            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8163            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8164            //   envelope_size bytes, there is always sufficient room.
8165            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8166                self.iso_interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8167                encoder,
8168                offset + cur_offset,
8169                depth,
8170            )?;
8171
8172            _prev_end_offset = cur_offset + envelope_size;
8173            if 5 > max_ordinal {
8174                return Ok(());
8175            }
8176
8177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8178            // are envelope_size bytes.
8179            let cur_offset: usize = (5 - 1) * envelope_size;
8180
8181            // Zero reserved fields.
8182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8183
8184            // Safety:
8185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8187            //   envelope_size bytes, there is always sufficient room.
8188            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8189                self.central_to_peripheral_params
8190                    .as_ref()
8191                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8192                encoder,
8193                offset + cur_offset,
8194                depth,
8195            )?;
8196
8197            _prev_end_offset = cur_offset + envelope_size;
8198            if 6 > max_ordinal {
8199                return Ok(());
8200            }
8201
8202            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8203            // are envelope_size bytes.
8204            let cur_offset: usize = (6 - 1) * envelope_size;
8205
8206            // Zero reserved fields.
8207            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8208
8209            // Safety:
8210            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8211            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8212            //   envelope_size bytes, there is always sufficient room.
8213            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8214                self.peripheral_to_central_params
8215                    .as_ref()
8216                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8217                encoder,
8218                offset + cur_offset,
8219                depth,
8220            )?;
8221
8222            _prev_end_offset = cur_offset + envelope_size;
8223
8224            Ok(())
8225        }
8226    }
8227
8228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8229        for CisEstablishedParameters
8230    {
8231        #[inline(always)]
8232        fn new_empty() -> Self {
8233            Self::default()
8234        }
8235
8236        unsafe fn decode(
8237            &mut self,
8238            decoder: &mut fidl::encoding::Decoder<'_, D>,
8239            offset: usize,
8240            mut depth: fidl::encoding::Depth,
8241        ) -> fidl::Result<()> {
8242            decoder.debug_check_bounds::<Self>(offset);
8243            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8244                None => return Err(fidl::Error::NotNullable),
8245                Some(len) => len,
8246            };
8247            // Calling decoder.out_of_line_offset(0) is not allowed.
8248            if len == 0 {
8249                return Ok(());
8250            };
8251            depth.increment()?;
8252            let envelope_size = 8;
8253            let bytes_len = len * envelope_size;
8254            let offset = decoder.out_of_line_offset(bytes_len)?;
8255            // Decode the envelope for each type.
8256            let mut _next_ordinal_to_read = 0;
8257            let mut next_offset = offset;
8258            let end_offset = offset + bytes_len;
8259            _next_ordinal_to_read += 1;
8260            if next_offset >= end_offset {
8261                return Ok(());
8262            }
8263
8264            // Decode unknown envelopes for gaps in ordinals.
8265            while _next_ordinal_to_read < 1 {
8266                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8267                _next_ordinal_to_read += 1;
8268                next_offset += envelope_size;
8269            }
8270
8271            let next_out_of_line = decoder.next_out_of_line();
8272            let handles_before = decoder.remaining_handles();
8273            if let Some((inlined, num_bytes, num_handles)) =
8274                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8275            {
8276                let member_inline_size =
8277                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8278                if inlined != (member_inline_size <= 4) {
8279                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8280                }
8281                let inner_offset;
8282                let mut inner_depth = depth.clone();
8283                if inlined {
8284                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8285                    inner_offset = next_offset;
8286                } else {
8287                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8288                    inner_depth.increment()?;
8289                }
8290                let val_ref = self.cig_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8291                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8292                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8293                {
8294                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8295                }
8296                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8297                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8298                }
8299            }
8300
8301            next_offset += envelope_size;
8302            _next_ordinal_to_read += 1;
8303            if next_offset >= end_offset {
8304                return Ok(());
8305            }
8306
8307            // Decode unknown envelopes for gaps in ordinals.
8308            while _next_ordinal_to_read < 2 {
8309                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8310                _next_ordinal_to_read += 1;
8311                next_offset += envelope_size;
8312            }
8313
8314            let next_out_of_line = decoder.next_out_of_line();
8315            let handles_before = decoder.remaining_handles();
8316            if let Some((inlined, num_bytes, num_handles)) =
8317                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8318            {
8319                let member_inline_size =
8320                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8321                if inlined != (member_inline_size <= 4) {
8322                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8323                }
8324                let inner_offset;
8325                let mut inner_depth = depth.clone();
8326                if inlined {
8327                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8328                    inner_offset = next_offset;
8329                } else {
8330                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8331                    inner_depth.increment()?;
8332                }
8333                let val_ref = self.cis_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8334                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8335                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8336                {
8337                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8338                }
8339                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8340                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8341                }
8342            }
8343
8344            next_offset += envelope_size;
8345            _next_ordinal_to_read += 1;
8346            if next_offset >= end_offset {
8347                return Ok(());
8348            }
8349
8350            // Decode unknown envelopes for gaps in ordinals.
8351            while _next_ordinal_to_read < 3 {
8352                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8353                _next_ordinal_to_read += 1;
8354                next_offset += envelope_size;
8355            }
8356
8357            let next_out_of_line = decoder.next_out_of_line();
8358            let handles_before = decoder.remaining_handles();
8359            if let Some((inlined, num_bytes, num_handles)) =
8360                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8361            {
8362                let member_inline_size =
8363                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8364                if inlined != (member_inline_size <= 4) {
8365                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8366                }
8367                let inner_offset;
8368                let mut inner_depth = depth.clone();
8369                if inlined {
8370                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8371                    inner_offset = next_offset;
8372                } else {
8373                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8374                    inner_depth.increment()?;
8375                }
8376                let val_ref = self.max_subevents.get_or_insert_with(|| fidl::new_empty!(u8, D));
8377                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8378                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8379                {
8380                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8381                }
8382                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8383                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8384                }
8385            }
8386
8387            next_offset += envelope_size;
8388            _next_ordinal_to_read += 1;
8389            if next_offset >= end_offset {
8390                return Ok(());
8391            }
8392
8393            // Decode unknown envelopes for gaps in ordinals.
8394            while _next_ordinal_to_read < 4 {
8395                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8396                _next_ordinal_to_read += 1;
8397                next_offset += envelope_size;
8398            }
8399
8400            let next_out_of_line = decoder.next_out_of_line();
8401            let handles_before = decoder.remaining_handles();
8402            if let Some((inlined, num_bytes, num_handles)) =
8403                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8404            {
8405                let member_inline_size =
8406                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8407                if inlined != (member_inline_size <= 4) {
8408                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8409                }
8410                let inner_offset;
8411                let mut inner_depth = depth.clone();
8412                if inlined {
8413                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8414                    inner_offset = next_offset;
8415                } else {
8416                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8417                    inner_depth.increment()?;
8418                }
8419                let val_ref = self.iso_interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
8420                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8421                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8422                {
8423                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8424                }
8425                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8426                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8427                }
8428            }
8429
8430            next_offset += envelope_size;
8431            _next_ordinal_to_read += 1;
8432            if next_offset >= end_offset {
8433                return Ok(());
8434            }
8435
8436            // Decode unknown envelopes for gaps in ordinals.
8437            while _next_ordinal_to_read < 5 {
8438                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8439                _next_ordinal_to_read += 1;
8440                next_offset += envelope_size;
8441            }
8442
8443            let next_out_of_line = decoder.next_out_of_line();
8444            let handles_before = decoder.remaining_handles();
8445            if let Some((inlined, num_bytes, num_handles)) =
8446                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8447            {
8448                let member_inline_size =
8449                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8450                        decoder.context,
8451                    );
8452                if inlined != (member_inline_size <= 4) {
8453                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8454                }
8455                let inner_offset;
8456                let mut inner_depth = depth.clone();
8457                if inlined {
8458                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8459                    inner_offset = next_offset;
8460                } else {
8461                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8462                    inner_depth.increment()?;
8463                }
8464                let val_ref = self
8465                    .central_to_peripheral_params
8466                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8467                fidl::decode!(
8468                    CisUnidirectionalParams,
8469                    D,
8470                    val_ref,
8471                    decoder,
8472                    inner_offset,
8473                    inner_depth
8474                )?;
8475                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8476                {
8477                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8478                }
8479                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8480                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8481                }
8482            }
8483
8484            next_offset += envelope_size;
8485            _next_ordinal_to_read += 1;
8486            if next_offset >= end_offset {
8487                return Ok(());
8488            }
8489
8490            // Decode unknown envelopes for gaps in ordinals.
8491            while _next_ordinal_to_read < 6 {
8492                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8493                _next_ordinal_to_read += 1;
8494                next_offset += envelope_size;
8495            }
8496
8497            let next_out_of_line = decoder.next_out_of_line();
8498            let handles_before = decoder.remaining_handles();
8499            if let Some((inlined, num_bytes, num_handles)) =
8500                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8501            {
8502                let member_inline_size =
8503                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8504                        decoder.context,
8505                    );
8506                if inlined != (member_inline_size <= 4) {
8507                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8508                }
8509                let inner_offset;
8510                let mut inner_depth = depth.clone();
8511                if inlined {
8512                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8513                    inner_offset = next_offset;
8514                } else {
8515                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8516                    inner_depth.increment()?;
8517                }
8518                let val_ref = self
8519                    .peripheral_to_central_params
8520                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8521                fidl::decode!(
8522                    CisUnidirectionalParams,
8523                    D,
8524                    val_ref,
8525                    decoder,
8526                    inner_offset,
8527                    inner_depth
8528                )?;
8529                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8530                {
8531                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8532                }
8533                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8534                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8535                }
8536            }
8537
8538            next_offset += envelope_size;
8539
8540            // Decode the remaining unknown envelopes.
8541            while next_offset < end_offset {
8542                _next_ordinal_to_read += 1;
8543                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8544                next_offset += envelope_size;
8545            }
8546
8547            Ok(())
8548        }
8549    }
8550
8551    impl CisParameters {
8552        #[inline(always)]
8553        fn max_ordinal_present(&self) -> u64 {
8554            if let Some(_) = self.id {
8555                return 2;
8556            }
8557            if let Some(_) = self.cis_id {
8558                return 1;
8559            }
8560            0
8561        }
8562    }
8563
8564    impl fidl::encoding::ValueTypeMarker for CisParameters {
8565        type Borrowed<'a> = &'a Self;
8566        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8567            value
8568        }
8569    }
8570
8571    unsafe impl fidl::encoding::TypeMarker for CisParameters {
8572        type Owned = Self;
8573
8574        #[inline(always)]
8575        fn inline_align(_context: fidl::encoding::Context) -> usize {
8576            8
8577        }
8578
8579        #[inline(always)]
8580        fn inline_size(_context: fidl::encoding::Context) -> usize {
8581            16
8582        }
8583    }
8584
8585    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CisParameters, D>
8586        for &CisParameters
8587    {
8588        unsafe fn encode(
8589            self,
8590            encoder: &mut fidl::encoding::Encoder<'_, D>,
8591            offset: usize,
8592            mut depth: fidl::encoding::Depth,
8593        ) -> fidl::Result<()> {
8594            encoder.debug_check_bounds::<CisParameters>(offset);
8595            // Vector header
8596            let max_ordinal: u64 = self.max_ordinal_present();
8597            encoder.write_num(max_ordinal, offset);
8598            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8599            // Calling encoder.out_of_line_offset(0) is not allowed.
8600            if max_ordinal == 0 {
8601                return Ok(());
8602            }
8603            depth.increment()?;
8604            let envelope_size = 8;
8605            let bytes_len = max_ordinal as usize * envelope_size;
8606            #[allow(unused_variables)]
8607            let offset = encoder.out_of_line_offset(bytes_len);
8608            let mut _prev_end_offset: usize = 0;
8609            if 1 > 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 = (1 - 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::<u8, D>(
8625                self.cis_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8626                encoder,
8627                offset + cur_offset,
8628                depth,
8629            )?;
8630
8631            _prev_end_offset = cur_offset + envelope_size;
8632            if 2 > max_ordinal {
8633                return Ok(());
8634            }
8635
8636            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8637            // are envelope_size bytes.
8638            let cur_offset: usize = (2 - 1) * envelope_size;
8639
8640            // Zero reserved fields.
8641            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8642
8643            // Safety:
8644            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8645            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8646            //   envelope_size bytes, there is always sufficient room.
8647            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
8648            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
8649            encoder, offset + cur_offset, depth
8650        )?;
8651
8652            _prev_end_offset = cur_offset + envelope_size;
8653
8654            Ok(())
8655        }
8656    }
8657
8658    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CisParameters {
8659        #[inline(always)]
8660        fn new_empty() -> Self {
8661            Self::default()
8662        }
8663
8664        unsafe fn decode(
8665            &mut self,
8666            decoder: &mut fidl::encoding::Decoder<'_, D>,
8667            offset: usize,
8668            mut depth: fidl::encoding::Depth,
8669        ) -> fidl::Result<()> {
8670            decoder.debug_check_bounds::<Self>(offset);
8671            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8672                None => return Err(fidl::Error::NotNullable),
8673                Some(len) => len,
8674            };
8675            // Calling decoder.out_of_line_offset(0) is not allowed.
8676            if len == 0 {
8677                return Ok(());
8678            };
8679            depth.increment()?;
8680            let envelope_size = 8;
8681            let bytes_len = len * envelope_size;
8682            let offset = decoder.out_of_line_offset(bytes_len)?;
8683            // Decode the envelope for each type.
8684            let mut _next_ordinal_to_read = 0;
8685            let mut next_offset = offset;
8686            let end_offset = offset + bytes_len;
8687            _next_ordinal_to_read += 1;
8688            if next_offset >= end_offset {
8689                return Ok(());
8690            }
8691
8692            // Decode unknown envelopes for gaps in ordinals.
8693            while _next_ordinal_to_read < 1 {
8694                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8695                _next_ordinal_to_read += 1;
8696                next_offset += envelope_size;
8697            }
8698
8699            let next_out_of_line = decoder.next_out_of_line();
8700            let handles_before = decoder.remaining_handles();
8701            if let Some((inlined, num_bytes, num_handles)) =
8702                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8703            {
8704                let member_inline_size =
8705                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8706                if inlined != (member_inline_size <= 4) {
8707                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8708                }
8709                let inner_offset;
8710                let mut inner_depth = depth.clone();
8711                if inlined {
8712                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8713                    inner_offset = next_offset;
8714                } else {
8715                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8716                    inner_depth.increment()?;
8717                }
8718                let val_ref = self.cis_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
8719                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8720                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8721                {
8722                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8723                }
8724                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8725                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8726                }
8727            }
8728
8729            next_offset += envelope_size;
8730            _next_ordinal_to_read += 1;
8731            if next_offset >= end_offset {
8732                return Ok(());
8733            }
8734
8735            // Decode unknown envelopes for gaps in ordinals.
8736            while _next_ordinal_to_read < 2 {
8737                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8738                _next_ordinal_to_read += 1;
8739                next_offset += envelope_size;
8740            }
8741
8742            let next_out_of_line = decoder.next_out_of_line();
8743            let handles_before = decoder.remaining_handles();
8744            if let Some((inlined, num_bytes, num_handles)) =
8745                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8746            {
8747                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8748                if inlined != (member_inline_size <= 4) {
8749                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8750                }
8751                let inner_offset;
8752                let mut inner_depth = depth.clone();
8753                if inlined {
8754                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8755                    inner_offset = next_offset;
8756                } else {
8757                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8758                    inner_depth.increment()?;
8759                }
8760                let val_ref = self.id.get_or_insert_with(|| {
8761                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
8762                });
8763                fidl::decode!(
8764                    fidl_fuchsia_bluetooth__common::PeerId,
8765                    D,
8766                    val_ref,
8767                    decoder,
8768                    inner_offset,
8769                    inner_depth
8770                )?;
8771                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8772                {
8773                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8774                }
8775                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8776                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8777                }
8778            }
8779
8780            next_offset += envelope_size;
8781
8782            // Decode the remaining unknown envelopes.
8783            while next_offset < end_offset {
8784                _next_ordinal_to_read += 1;
8785                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8786                next_offset += envelope_size;
8787            }
8788
8789            Ok(())
8790        }
8791    }
8792
8793    impl CisUnidirectionalParams {
8794        #[inline(always)]
8795        fn max_ordinal_present(&self) -> u64 {
8796            if let Some(_) = self.flush_timeout {
8797                return 3;
8798            }
8799            if let Some(_) = self.burst_number {
8800                return 2;
8801            }
8802            if let Some(_) = self.transport_latency {
8803                return 1;
8804            }
8805            0
8806        }
8807    }
8808
8809    impl fidl::encoding::ValueTypeMarker for CisUnidirectionalParams {
8810        type Borrowed<'a> = &'a Self;
8811        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8812            value
8813        }
8814    }
8815
8816    unsafe impl fidl::encoding::TypeMarker for CisUnidirectionalParams {
8817        type Owned = Self;
8818
8819        #[inline(always)]
8820        fn inline_align(_context: fidl::encoding::Context) -> usize {
8821            8
8822        }
8823
8824        #[inline(always)]
8825        fn inline_size(_context: fidl::encoding::Context) -> usize {
8826            16
8827        }
8828    }
8829
8830    unsafe impl<D: fidl::encoding::ResourceDialect>
8831        fidl::encoding::Encode<CisUnidirectionalParams, D> for &CisUnidirectionalParams
8832    {
8833        unsafe fn encode(
8834            self,
8835            encoder: &mut fidl::encoding::Encoder<'_, D>,
8836            offset: usize,
8837            mut depth: fidl::encoding::Depth,
8838        ) -> fidl::Result<()> {
8839            encoder.debug_check_bounds::<CisUnidirectionalParams>(offset);
8840            // Vector header
8841            let max_ordinal: u64 = self.max_ordinal_present();
8842            encoder.write_num(max_ordinal, offset);
8843            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8844            // Calling encoder.out_of_line_offset(0) is not allowed.
8845            if max_ordinal == 0 {
8846                return Ok(());
8847            }
8848            depth.increment()?;
8849            let envelope_size = 8;
8850            let bytes_len = max_ordinal as usize * envelope_size;
8851            #[allow(unused_variables)]
8852            let offset = encoder.out_of_line_offset(bytes_len);
8853            let mut _prev_end_offset: usize = 0;
8854            if 1 > max_ordinal {
8855                return Ok(());
8856            }
8857
8858            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8859            // are envelope_size bytes.
8860            let cur_offset: usize = (1 - 1) * envelope_size;
8861
8862            // Zero reserved fields.
8863            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8864
8865            // Safety:
8866            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8867            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8868            //   envelope_size bytes, there is always sufficient room.
8869            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8870                self.transport_latency
8871                    .as_ref()
8872                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8873                encoder,
8874                offset + cur_offset,
8875                depth,
8876            )?;
8877
8878            _prev_end_offset = cur_offset + envelope_size;
8879            if 2 > max_ordinal {
8880                return Ok(());
8881            }
8882
8883            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8884            // are envelope_size bytes.
8885            let cur_offset: usize = (2 - 1) * envelope_size;
8886
8887            // Zero reserved fields.
8888            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8889
8890            // Safety:
8891            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8892            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8893            //   envelope_size bytes, there is always sufficient room.
8894            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8895                self.burst_number.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8896                encoder,
8897                offset + cur_offset,
8898                depth,
8899            )?;
8900
8901            _prev_end_offset = cur_offset + envelope_size;
8902            if 3 > max_ordinal {
8903                return Ok(());
8904            }
8905
8906            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8907            // are envelope_size bytes.
8908            let cur_offset: usize = (3 - 1) * envelope_size;
8909
8910            // Zero reserved fields.
8911            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8912
8913            // Safety:
8914            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8915            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8916            //   envelope_size bytes, there is always sufficient room.
8917            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8918                self.flush_timeout.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8919                encoder,
8920                offset + cur_offset,
8921                depth,
8922            )?;
8923
8924            _prev_end_offset = cur_offset + envelope_size;
8925
8926            Ok(())
8927        }
8928    }
8929
8930    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8931        for CisUnidirectionalParams
8932    {
8933        #[inline(always)]
8934        fn new_empty() -> Self {
8935            Self::default()
8936        }
8937
8938        unsafe fn decode(
8939            &mut self,
8940            decoder: &mut fidl::encoding::Decoder<'_, D>,
8941            offset: usize,
8942            mut depth: fidl::encoding::Depth,
8943        ) -> fidl::Result<()> {
8944            decoder.debug_check_bounds::<Self>(offset);
8945            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8946                None => return Err(fidl::Error::NotNullable),
8947                Some(len) => len,
8948            };
8949            // Calling decoder.out_of_line_offset(0) is not allowed.
8950            if len == 0 {
8951                return Ok(());
8952            };
8953            depth.increment()?;
8954            let envelope_size = 8;
8955            let bytes_len = len * envelope_size;
8956            let offset = decoder.out_of_line_offset(bytes_len)?;
8957            // Decode the envelope for each type.
8958            let mut _next_ordinal_to_read = 0;
8959            let mut next_offset = offset;
8960            let end_offset = offset + bytes_len;
8961            _next_ordinal_to_read += 1;
8962            if next_offset >= end_offset {
8963                return Ok(());
8964            }
8965
8966            // Decode unknown envelopes for gaps in ordinals.
8967            while _next_ordinal_to_read < 1 {
8968                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8969                _next_ordinal_to_read += 1;
8970                next_offset += envelope_size;
8971            }
8972
8973            let next_out_of_line = decoder.next_out_of_line();
8974            let handles_before = decoder.remaining_handles();
8975            if let Some((inlined, num_bytes, num_handles)) =
8976                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8977            {
8978                let member_inline_size =
8979                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8980                if inlined != (member_inline_size <= 4) {
8981                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8982                }
8983                let inner_offset;
8984                let mut inner_depth = depth.clone();
8985                if inlined {
8986                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8987                    inner_offset = next_offset;
8988                } else {
8989                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8990                    inner_depth.increment()?;
8991                }
8992                let val_ref =
8993                    self.transport_latency.get_or_insert_with(|| fidl::new_empty!(i64, D));
8994                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8995                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8996                {
8997                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8998                }
8999                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9000                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9001                }
9002            }
9003
9004            next_offset += envelope_size;
9005            _next_ordinal_to_read += 1;
9006            if next_offset >= end_offset {
9007                return Ok(());
9008            }
9009
9010            // Decode unknown envelopes for gaps in ordinals.
9011            while _next_ordinal_to_read < 2 {
9012                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9013                _next_ordinal_to_read += 1;
9014                next_offset += envelope_size;
9015            }
9016
9017            let next_out_of_line = decoder.next_out_of_line();
9018            let handles_before = decoder.remaining_handles();
9019            if let Some((inlined, num_bytes, num_handles)) =
9020                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9021            {
9022                let member_inline_size =
9023                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9024                if inlined != (member_inline_size <= 4) {
9025                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9026                }
9027                let inner_offset;
9028                let mut inner_depth = depth.clone();
9029                if inlined {
9030                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9031                    inner_offset = next_offset;
9032                } else {
9033                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9034                    inner_depth.increment()?;
9035                }
9036                let val_ref = self.burst_number.get_or_insert_with(|| fidl::new_empty!(u8, D));
9037                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9038                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9039                {
9040                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9041                }
9042                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9043                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9044                }
9045            }
9046
9047            next_offset += envelope_size;
9048            _next_ordinal_to_read += 1;
9049            if next_offset >= end_offset {
9050                return Ok(());
9051            }
9052
9053            // Decode unknown envelopes for gaps in ordinals.
9054            while _next_ordinal_to_read < 3 {
9055                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9056                _next_ordinal_to_read += 1;
9057                next_offset += envelope_size;
9058            }
9059
9060            let next_out_of_line = decoder.next_out_of_line();
9061            let handles_before = decoder.remaining_handles();
9062            if let Some((inlined, num_bytes, num_handles)) =
9063                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9064            {
9065                let member_inline_size =
9066                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9067                if inlined != (member_inline_size <= 4) {
9068                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9069                }
9070                let inner_offset;
9071                let mut inner_depth = depth.clone();
9072                if inlined {
9073                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9074                    inner_offset = next_offset;
9075                } else {
9076                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9077                    inner_depth.increment()?;
9078                }
9079                let val_ref = self.flush_timeout.get_or_insert_with(|| fidl::new_empty!(u8, D));
9080                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9081                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9082                {
9083                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9084                }
9085                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9086                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9087                }
9088            }
9089
9090            next_offset += envelope_size;
9091
9092            // Decode the remaining unknown envelopes.
9093            while next_offset < end_offset {
9094                _next_ordinal_to_read += 1;
9095                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9096                next_offset += envelope_size;
9097            }
9098
9099            Ok(())
9100        }
9101    }
9102
9103    impl CodecDelayGetCodecLocalDelayRangeRequest {
9104        #[inline(always)]
9105        fn max_ordinal_present(&self) -> u64 {
9106            if let Some(_) = self.codec_attributes {
9107                return 3;
9108            }
9109            if let Some(_) = self.data_direction {
9110                return 2;
9111            }
9112            if let Some(_) = self.logical_transport_type {
9113                return 1;
9114            }
9115            0
9116        }
9117    }
9118
9119    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9120        type Borrowed<'a> = &'a Self;
9121        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9122            value
9123        }
9124    }
9125
9126    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9127        type Owned = Self;
9128
9129        #[inline(always)]
9130        fn inline_align(_context: fidl::encoding::Context) -> usize {
9131            8
9132        }
9133
9134        #[inline(always)]
9135        fn inline_size(_context: fidl::encoding::Context) -> usize {
9136            16
9137        }
9138    }
9139
9140    unsafe impl<D: fidl::encoding::ResourceDialect>
9141        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeRequest, D>
9142        for &CodecDelayGetCodecLocalDelayRangeRequest
9143    {
9144        unsafe fn encode(
9145            self,
9146            encoder: &mut fidl::encoding::Encoder<'_, D>,
9147            offset: usize,
9148            mut depth: fidl::encoding::Depth,
9149        ) -> fidl::Result<()> {
9150            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeRequest>(offset);
9151            // Vector header
9152            let max_ordinal: u64 = self.max_ordinal_present();
9153            encoder.write_num(max_ordinal, offset);
9154            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9155            // Calling encoder.out_of_line_offset(0) is not allowed.
9156            if max_ordinal == 0 {
9157                return Ok(());
9158            }
9159            depth.increment()?;
9160            let envelope_size = 8;
9161            let bytes_len = max_ordinal as usize * envelope_size;
9162            #[allow(unused_variables)]
9163            let offset = encoder.out_of_line_offset(bytes_len);
9164            let mut _prev_end_offset: usize = 0;
9165            if 1 > max_ordinal {
9166                return Ok(());
9167            }
9168
9169            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9170            // are envelope_size bytes.
9171            let cur_offset: usize = (1 - 1) * envelope_size;
9172
9173            // Zero reserved fields.
9174            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9175
9176            // Safety:
9177            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9178            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9179            //   envelope_size bytes, there is always sufficient room.
9180            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::LogicalTransportType, D>(
9181            self.logical_transport_type.as_ref().map(<fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::ValueTypeMarker>::borrow),
9182            encoder, offset + cur_offset, depth
9183        )?;
9184
9185            _prev_end_offset = cur_offset + envelope_size;
9186            if 2 > max_ordinal {
9187                return Ok(());
9188            }
9189
9190            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9191            // are envelope_size bytes.
9192            let cur_offset: usize = (2 - 1) * envelope_size;
9193
9194            // Zero reserved fields.
9195            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9196
9197            // Safety:
9198            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9199            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9200            //   envelope_size bytes, there is always sufficient room.
9201            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
9202            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
9203            encoder, offset + cur_offset, depth
9204        )?;
9205
9206            _prev_end_offset = cur_offset + envelope_size;
9207            if 3 > max_ordinal {
9208                return Ok(());
9209            }
9210
9211            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9212            // are envelope_size bytes.
9213            let cur_offset: usize = (3 - 1) * envelope_size;
9214
9215            // Zero reserved fields.
9216            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9217
9218            // Safety:
9219            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9220            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9221            //   envelope_size bytes, there is always sufficient room.
9222            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
9223            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
9224            encoder, offset + cur_offset, depth
9225        )?;
9226
9227            _prev_end_offset = cur_offset + envelope_size;
9228
9229            Ok(())
9230        }
9231    }
9232
9233    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9234        for CodecDelayGetCodecLocalDelayRangeRequest
9235    {
9236        #[inline(always)]
9237        fn new_empty() -> Self {
9238            Self::default()
9239        }
9240
9241        unsafe fn decode(
9242            &mut self,
9243            decoder: &mut fidl::encoding::Decoder<'_, D>,
9244            offset: usize,
9245            mut depth: fidl::encoding::Depth,
9246        ) -> fidl::Result<()> {
9247            decoder.debug_check_bounds::<Self>(offset);
9248            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9249                None => return Err(fidl::Error::NotNullable),
9250                Some(len) => len,
9251            };
9252            // Calling decoder.out_of_line_offset(0) is not allowed.
9253            if len == 0 {
9254                return Ok(());
9255            };
9256            depth.increment()?;
9257            let envelope_size = 8;
9258            let bytes_len = len * envelope_size;
9259            let offset = decoder.out_of_line_offset(bytes_len)?;
9260            // Decode the envelope for each type.
9261            let mut _next_ordinal_to_read = 0;
9262            let mut next_offset = offset;
9263            let end_offset = offset + bytes_len;
9264            _next_ordinal_to_read += 1;
9265            if next_offset >= end_offset {
9266                return Ok(());
9267            }
9268
9269            // Decode unknown envelopes for gaps in ordinals.
9270            while _next_ordinal_to_read < 1 {
9271                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9272                _next_ordinal_to_read += 1;
9273                next_offset += envelope_size;
9274            }
9275
9276            let next_out_of_line = decoder.next_out_of_line();
9277            let handles_before = decoder.remaining_handles();
9278            if let Some((inlined, num_bytes, num_handles)) =
9279                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9280            {
9281                let member_inline_size = <fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9282                if inlined != (member_inline_size <= 4) {
9283                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9284                }
9285                let inner_offset;
9286                let mut inner_depth = depth.clone();
9287                if inlined {
9288                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9289                    inner_offset = next_offset;
9290                } else {
9291                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9292                    inner_depth.increment()?;
9293                }
9294                let val_ref = self.logical_transport_type.get_or_insert_with(|| {
9295                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::LogicalTransportType, D)
9296                });
9297                fidl::decode!(
9298                    fidl_fuchsia_bluetooth__common::LogicalTransportType,
9299                    D,
9300                    val_ref,
9301                    decoder,
9302                    inner_offset,
9303                    inner_depth
9304                )?;
9305                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9306                {
9307                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9308                }
9309                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9310                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9311                }
9312            }
9313
9314            next_offset += envelope_size;
9315            _next_ordinal_to_read += 1;
9316            if next_offset >= end_offset {
9317                return Ok(());
9318            }
9319
9320            // Decode unknown envelopes for gaps in ordinals.
9321            while _next_ordinal_to_read < 2 {
9322                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9323                _next_ordinal_to_read += 1;
9324                next_offset += envelope_size;
9325            }
9326
9327            let next_out_of_line = decoder.next_out_of_line();
9328            let handles_before = decoder.remaining_handles();
9329            if let Some((inlined, num_bytes, num_handles)) =
9330                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9331            {
9332                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9333                if inlined != (member_inline_size <= 4) {
9334                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9335                }
9336                let inner_offset;
9337                let mut inner_depth = depth.clone();
9338                if inlined {
9339                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9340                    inner_offset = next_offset;
9341                } else {
9342                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9343                    inner_depth.increment()?;
9344                }
9345                let val_ref = self.data_direction.get_or_insert_with(|| {
9346                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
9347                });
9348                fidl::decode!(
9349                    fidl_fuchsia_bluetooth__common::DataDirection,
9350                    D,
9351                    val_ref,
9352                    decoder,
9353                    inner_offset,
9354                    inner_depth
9355                )?;
9356                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9357                {
9358                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9359                }
9360                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9361                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9362                }
9363            }
9364
9365            next_offset += envelope_size;
9366            _next_ordinal_to_read += 1;
9367            if next_offset >= end_offset {
9368                return Ok(());
9369            }
9370
9371            // Decode unknown envelopes for gaps in ordinals.
9372            while _next_ordinal_to_read < 3 {
9373                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9374                _next_ordinal_to_read += 1;
9375                next_offset += envelope_size;
9376            }
9377
9378            let next_out_of_line = decoder.next_out_of_line();
9379            let handles_before = decoder.remaining_handles();
9380            if let Some((inlined, num_bytes, num_handles)) =
9381                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9382            {
9383                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9384                if inlined != (member_inline_size <= 4) {
9385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9386                }
9387                let inner_offset;
9388                let mut inner_depth = depth.clone();
9389                if inlined {
9390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9391                    inner_offset = next_offset;
9392                } else {
9393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9394                    inner_depth.increment()?;
9395                }
9396                let val_ref = self.codec_attributes.get_or_insert_with(|| {
9397                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
9398                });
9399                fidl::decode!(
9400                    fidl_fuchsia_bluetooth__common::CodecAttributes,
9401                    D,
9402                    val_ref,
9403                    decoder,
9404                    inner_offset,
9405                    inner_depth
9406                )?;
9407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9408                {
9409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9410                }
9411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9413                }
9414            }
9415
9416            next_offset += envelope_size;
9417
9418            // Decode the remaining unknown envelopes.
9419            while next_offset < end_offset {
9420                _next_ordinal_to_read += 1;
9421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9422                next_offset += envelope_size;
9423            }
9424
9425            Ok(())
9426        }
9427    }
9428
9429    impl CodecDelayGetCodecLocalDelayRangeResponse {
9430        #[inline(always)]
9431        fn max_ordinal_present(&self) -> u64 {
9432            if let Some(_) = self.max_controller_delay {
9433                return 2;
9434            }
9435            if let Some(_) = self.min_controller_delay {
9436                return 1;
9437            }
9438            0
9439        }
9440    }
9441
9442    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9443        type Borrowed<'a> = &'a Self;
9444        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9445            value
9446        }
9447    }
9448
9449    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9450        type Owned = Self;
9451
9452        #[inline(always)]
9453        fn inline_align(_context: fidl::encoding::Context) -> usize {
9454            8
9455        }
9456
9457        #[inline(always)]
9458        fn inline_size(_context: fidl::encoding::Context) -> usize {
9459            16
9460        }
9461    }
9462
9463    unsafe impl<D: fidl::encoding::ResourceDialect>
9464        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeResponse, D>
9465        for &CodecDelayGetCodecLocalDelayRangeResponse
9466    {
9467        unsafe fn encode(
9468            self,
9469            encoder: &mut fidl::encoding::Encoder<'_, D>,
9470            offset: usize,
9471            mut depth: fidl::encoding::Depth,
9472        ) -> fidl::Result<()> {
9473            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeResponse>(offset);
9474            // Vector header
9475            let max_ordinal: u64 = self.max_ordinal_present();
9476            encoder.write_num(max_ordinal, offset);
9477            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9478            // Calling encoder.out_of_line_offset(0) is not allowed.
9479            if max_ordinal == 0 {
9480                return Ok(());
9481            }
9482            depth.increment()?;
9483            let envelope_size = 8;
9484            let bytes_len = max_ordinal as usize * envelope_size;
9485            #[allow(unused_variables)]
9486            let offset = encoder.out_of_line_offset(bytes_len);
9487            let mut _prev_end_offset: usize = 0;
9488            if 1 > max_ordinal {
9489                return Ok(());
9490            }
9491
9492            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9493            // are envelope_size bytes.
9494            let cur_offset: usize = (1 - 1) * envelope_size;
9495
9496            // Zero reserved fields.
9497            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9498
9499            // Safety:
9500            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9501            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9502            //   envelope_size bytes, there is always sufficient room.
9503            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9504                self.min_controller_delay
9505                    .as_ref()
9506                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9507                encoder,
9508                offset + cur_offset,
9509                depth,
9510            )?;
9511
9512            _prev_end_offset = cur_offset + envelope_size;
9513            if 2 > max_ordinal {
9514                return Ok(());
9515            }
9516
9517            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9518            // are envelope_size bytes.
9519            let cur_offset: usize = (2 - 1) * envelope_size;
9520
9521            // Zero reserved fields.
9522            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9523
9524            // Safety:
9525            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9526            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9527            //   envelope_size bytes, there is always sufficient room.
9528            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9529                self.max_controller_delay
9530                    .as_ref()
9531                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9532                encoder,
9533                offset + cur_offset,
9534                depth,
9535            )?;
9536
9537            _prev_end_offset = cur_offset + envelope_size;
9538
9539            Ok(())
9540        }
9541    }
9542
9543    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9544        for CodecDelayGetCodecLocalDelayRangeResponse
9545    {
9546        #[inline(always)]
9547        fn new_empty() -> Self {
9548            Self::default()
9549        }
9550
9551        unsafe fn decode(
9552            &mut self,
9553            decoder: &mut fidl::encoding::Decoder<'_, D>,
9554            offset: usize,
9555            mut depth: fidl::encoding::Depth,
9556        ) -> fidl::Result<()> {
9557            decoder.debug_check_bounds::<Self>(offset);
9558            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9559                None => return Err(fidl::Error::NotNullable),
9560                Some(len) => len,
9561            };
9562            // Calling decoder.out_of_line_offset(0) is not allowed.
9563            if len == 0 {
9564                return Ok(());
9565            };
9566            depth.increment()?;
9567            let envelope_size = 8;
9568            let bytes_len = len * envelope_size;
9569            let offset = decoder.out_of_line_offset(bytes_len)?;
9570            // Decode the envelope for each type.
9571            let mut _next_ordinal_to_read = 0;
9572            let mut next_offset = offset;
9573            let end_offset = offset + bytes_len;
9574            _next_ordinal_to_read += 1;
9575            if next_offset >= end_offset {
9576                return Ok(());
9577            }
9578
9579            // Decode unknown envelopes for gaps in ordinals.
9580            while _next_ordinal_to_read < 1 {
9581                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9582                _next_ordinal_to_read += 1;
9583                next_offset += envelope_size;
9584            }
9585
9586            let next_out_of_line = decoder.next_out_of_line();
9587            let handles_before = decoder.remaining_handles();
9588            if let Some((inlined, num_bytes, num_handles)) =
9589                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9590            {
9591                let member_inline_size =
9592                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9593                if inlined != (member_inline_size <= 4) {
9594                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9595                }
9596                let inner_offset;
9597                let mut inner_depth = depth.clone();
9598                if inlined {
9599                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9600                    inner_offset = next_offset;
9601                } else {
9602                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9603                    inner_depth.increment()?;
9604                }
9605                let val_ref =
9606                    self.min_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9607                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9608                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9609                {
9610                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9611                }
9612                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9613                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9614                }
9615            }
9616
9617            next_offset += envelope_size;
9618            _next_ordinal_to_read += 1;
9619            if next_offset >= end_offset {
9620                return Ok(());
9621            }
9622
9623            // Decode unknown envelopes for gaps in ordinals.
9624            while _next_ordinal_to_read < 2 {
9625                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9626                _next_ordinal_to_read += 1;
9627                next_offset += envelope_size;
9628            }
9629
9630            let next_out_of_line = decoder.next_out_of_line();
9631            let handles_before = decoder.remaining_handles();
9632            if let Some((inlined, num_bytes, num_handles)) =
9633                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9634            {
9635                let member_inline_size =
9636                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9637                if inlined != (member_inline_size <= 4) {
9638                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9639                }
9640                let inner_offset;
9641                let mut inner_depth = depth.clone();
9642                if inlined {
9643                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9644                    inner_offset = next_offset;
9645                } else {
9646                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9647                    inner_depth.increment()?;
9648                }
9649                let val_ref =
9650                    self.max_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9651                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9652                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9653                {
9654                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9655                }
9656                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9657                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9658                }
9659            }
9660
9661            next_offset += envelope_size;
9662
9663            // Decode the remaining unknown envelopes.
9664            while next_offset < end_offset {
9665                _next_ordinal_to_read += 1;
9666                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9667                next_offset += envelope_size;
9668            }
9669
9670            Ok(())
9671        }
9672    }
9673
9674    impl ConnectedIsochronousGroupEstablishStreamsRequest {
9675        #[inline(always)]
9676        fn max_ordinal_present(&self) -> u64 {
9677            if let Some(_) = self.cis_params {
9678                return 1;
9679            }
9680            0
9681        }
9682    }
9683
9684    impl fidl::encoding::ValueTypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
9685        type Borrowed<'a> = &'a Self;
9686        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9687            value
9688        }
9689    }
9690
9691    unsafe impl fidl::encoding::TypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
9692        type Owned = Self;
9693
9694        #[inline(always)]
9695        fn inline_align(_context: fidl::encoding::Context) -> usize {
9696            8
9697        }
9698
9699        #[inline(always)]
9700        fn inline_size(_context: fidl::encoding::Context) -> usize {
9701            16
9702        }
9703    }
9704
9705    unsafe impl<D: fidl::encoding::ResourceDialect>
9706        fidl::encoding::Encode<ConnectedIsochronousGroupEstablishStreamsRequest, D>
9707        for &ConnectedIsochronousGroupEstablishStreamsRequest
9708    {
9709        unsafe fn encode(
9710            self,
9711            encoder: &mut fidl::encoding::Encoder<'_, D>,
9712            offset: usize,
9713            mut depth: fidl::encoding::Depth,
9714        ) -> fidl::Result<()> {
9715            encoder.debug_check_bounds::<ConnectedIsochronousGroupEstablishStreamsRequest>(offset);
9716            // Vector header
9717            let max_ordinal: u64 = self.max_ordinal_present();
9718            encoder.write_num(max_ordinal, offset);
9719            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9720            // Calling encoder.out_of_line_offset(0) is not allowed.
9721            if max_ordinal == 0 {
9722                return Ok(());
9723            }
9724            depth.increment()?;
9725            let envelope_size = 8;
9726            let bytes_len = max_ordinal as usize * envelope_size;
9727            #[allow(unused_variables)]
9728            let offset = encoder.out_of_line_offset(bytes_len);
9729            let mut _prev_end_offset: usize = 0;
9730            if 1 > max_ordinal {
9731                return Ok(());
9732            }
9733
9734            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9735            // are envelope_size bytes.
9736            let cur_offset: usize = (1 - 1) * envelope_size;
9737
9738            // Zero reserved fields.
9739            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9740
9741            // Safety:
9742            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9743            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9744            //   envelope_size bytes, there is always sufficient room.
9745            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CisParameters, 31>, D>(
9746            self.cis_params.as_ref().map(<fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::ValueTypeMarker>::borrow),
9747            encoder, offset + cur_offset, depth
9748        )?;
9749
9750            _prev_end_offset = cur_offset + envelope_size;
9751
9752            Ok(())
9753        }
9754    }
9755
9756    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9757        for ConnectedIsochronousGroupEstablishStreamsRequest
9758    {
9759        #[inline(always)]
9760        fn new_empty() -> Self {
9761            Self::default()
9762        }
9763
9764        unsafe fn decode(
9765            &mut self,
9766            decoder: &mut fidl::encoding::Decoder<'_, D>,
9767            offset: usize,
9768            mut depth: fidl::encoding::Depth,
9769        ) -> fidl::Result<()> {
9770            decoder.debug_check_bounds::<Self>(offset);
9771            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9772                None => return Err(fidl::Error::NotNullable),
9773                Some(len) => len,
9774            };
9775            // Calling decoder.out_of_line_offset(0) is not allowed.
9776            if len == 0 {
9777                return Ok(());
9778            };
9779            depth.increment()?;
9780            let envelope_size = 8;
9781            let bytes_len = len * envelope_size;
9782            let offset = decoder.out_of_line_offset(bytes_len)?;
9783            // Decode the envelope for each type.
9784            let mut _next_ordinal_to_read = 0;
9785            let mut next_offset = offset;
9786            let end_offset = offset + bytes_len;
9787            _next_ordinal_to_read += 1;
9788            if next_offset >= end_offset {
9789                return Ok(());
9790            }
9791
9792            // Decode unknown envelopes for gaps in ordinals.
9793            while _next_ordinal_to_read < 1 {
9794                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9795                _next_ordinal_to_read += 1;
9796                next_offset += envelope_size;
9797            }
9798
9799            let next_out_of_line = decoder.next_out_of_line();
9800            let handles_before = decoder.remaining_handles();
9801            if let Some((inlined, num_bytes, num_handles)) =
9802                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9803            {
9804                let member_inline_size = <fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9805                if inlined != (member_inline_size <= 4) {
9806                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9807                }
9808                let inner_offset;
9809                let mut inner_depth = depth.clone();
9810                if inlined {
9811                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9812                    inner_offset = next_offset;
9813                } else {
9814                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9815                    inner_depth.increment()?;
9816                }
9817                let val_ref = self.cis_params.get_or_insert_with(
9818                    || fidl::new_empty!(fidl::encoding::Vector<CisParameters, 31>, D),
9819                );
9820                fidl::decode!(fidl::encoding::Vector<CisParameters, 31>, D, val_ref, decoder, inner_offset, inner_depth)?;
9821                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9822                {
9823                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9824                }
9825                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9826                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9827                }
9828            }
9829
9830            next_offset += envelope_size;
9831
9832            // Decode the remaining unknown envelopes.
9833            while next_offset < end_offset {
9834                _next_ordinal_to_read += 1;
9835                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9836                next_offset += envelope_size;
9837            }
9838
9839            Ok(())
9840        }
9841    }
9842
9843    impl ConnectionOptions {
9844        #[inline(always)]
9845        fn max_ordinal_present(&self) -> u64 {
9846            if let Some(_) = self.service_filter {
9847                return 2;
9848            }
9849            if let Some(_) = self.bondable_mode {
9850                return 1;
9851            }
9852            0
9853        }
9854    }
9855
9856    impl fidl::encoding::ValueTypeMarker for ConnectionOptions {
9857        type Borrowed<'a> = &'a Self;
9858        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9859            value
9860        }
9861    }
9862
9863    unsafe impl fidl::encoding::TypeMarker for ConnectionOptions {
9864        type Owned = Self;
9865
9866        #[inline(always)]
9867        fn inline_align(_context: fidl::encoding::Context) -> usize {
9868            8
9869        }
9870
9871        #[inline(always)]
9872        fn inline_size(_context: fidl::encoding::Context) -> usize {
9873            16
9874        }
9875    }
9876
9877    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionOptions, D>
9878        for &ConnectionOptions
9879    {
9880        unsafe fn encode(
9881            self,
9882            encoder: &mut fidl::encoding::Encoder<'_, D>,
9883            offset: usize,
9884            mut depth: fidl::encoding::Depth,
9885        ) -> fidl::Result<()> {
9886            encoder.debug_check_bounds::<ConnectionOptions>(offset);
9887            // Vector header
9888            let max_ordinal: u64 = self.max_ordinal_present();
9889            encoder.write_num(max_ordinal, offset);
9890            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9891            // Calling encoder.out_of_line_offset(0) is not allowed.
9892            if max_ordinal == 0 {
9893                return Ok(());
9894            }
9895            depth.increment()?;
9896            let envelope_size = 8;
9897            let bytes_len = max_ordinal as usize * envelope_size;
9898            #[allow(unused_variables)]
9899            let offset = encoder.out_of_line_offset(bytes_len);
9900            let mut _prev_end_offset: usize = 0;
9901            if 1 > max_ordinal {
9902                return Ok(());
9903            }
9904
9905            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9906            // are envelope_size bytes.
9907            let cur_offset: usize = (1 - 1) * envelope_size;
9908
9909            // Zero reserved fields.
9910            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9911
9912            // Safety:
9913            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9914            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9915            //   envelope_size bytes, there is always sufficient room.
9916            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9917                self.bondable_mode.as_ref().map(<bool 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::<fidl_fuchsia_bluetooth__common::Uuid, D>(
9940            self.service_filter.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
9941            encoder, offset + cur_offset, depth
9942        )?;
9943
9944            _prev_end_offset = cur_offset + envelope_size;
9945
9946            Ok(())
9947        }
9948    }
9949
9950    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionOptions {
9951        #[inline(always)]
9952        fn new_empty() -> Self {
9953            Self::default()
9954        }
9955
9956        unsafe fn decode(
9957            &mut self,
9958            decoder: &mut fidl::encoding::Decoder<'_, D>,
9959            offset: usize,
9960            mut depth: fidl::encoding::Depth,
9961        ) -> fidl::Result<()> {
9962            decoder.debug_check_bounds::<Self>(offset);
9963            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9964                None => return Err(fidl::Error::NotNullable),
9965                Some(len) => len,
9966            };
9967            // Calling decoder.out_of_line_offset(0) is not allowed.
9968            if len == 0 {
9969                return Ok(());
9970            };
9971            depth.increment()?;
9972            let envelope_size = 8;
9973            let bytes_len = len * envelope_size;
9974            let offset = decoder.out_of_line_offset(bytes_len)?;
9975            // Decode the envelope for each type.
9976            let mut _next_ordinal_to_read = 0;
9977            let mut next_offset = offset;
9978            let end_offset = offset + bytes_len;
9979            _next_ordinal_to_read += 1;
9980            if next_offset >= end_offset {
9981                return Ok(());
9982            }
9983
9984            // Decode unknown envelopes for gaps in ordinals.
9985            while _next_ordinal_to_read < 1 {
9986                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9987                _next_ordinal_to_read += 1;
9988                next_offset += envelope_size;
9989            }
9990
9991            let next_out_of_line = decoder.next_out_of_line();
9992            let handles_before = decoder.remaining_handles();
9993            if let Some((inlined, num_bytes, num_handles)) =
9994                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9995            {
9996                let member_inline_size =
9997                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9998                if inlined != (member_inline_size <= 4) {
9999                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10000                }
10001                let inner_offset;
10002                let mut inner_depth = depth.clone();
10003                if inlined {
10004                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10005                    inner_offset = next_offset;
10006                } else {
10007                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10008                    inner_depth.increment()?;
10009                }
10010                let val_ref = self.bondable_mode.get_or_insert_with(|| fidl::new_empty!(bool, D));
10011                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10012                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10013                {
10014                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10015                }
10016                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10017                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10018                }
10019            }
10020
10021            next_offset += envelope_size;
10022            _next_ordinal_to_read += 1;
10023            if next_offset >= end_offset {
10024                return Ok(());
10025            }
10026
10027            // Decode unknown envelopes for gaps in ordinals.
10028            while _next_ordinal_to_read < 2 {
10029                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10030                _next_ordinal_to_read += 1;
10031                next_offset += envelope_size;
10032            }
10033
10034            let next_out_of_line = decoder.next_out_of_line();
10035            let handles_before = decoder.remaining_handles();
10036            if let Some((inlined, num_bytes, num_handles)) =
10037                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10038            {
10039                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10040                if inlined != (member_inline_size <= 4) {
10041                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10042                }
10043                let inner_offset;
10044                let mut inner_depth = depth.clone();
10045                if inlined {
10046                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10047                    inner_offset = next_offset;
10048                } else {
10049                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10050                    inner_depth.increment()?;
10051                }
10052                let val_ref = self.service_filter.get_or_insert_with(|| {
10053                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10054                });
10055                fidl::decode!(
10056                    fidl_fuchsia_bluetooth__common::Uuid,
10057                    D,
10058                    val_ref,
10059                    decoder,
10060                    inner_offset,
10061                    inner_depth
10062                )?;
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 ConnectionTransferPeriodicAdvertisingSyncRequest {
10086        #[inline(always)]
10087        fn max_ordinal_present(&self) -> u64 {
10088            if let Some(_) = self.service_data {
10089                return 2;
10090            }
10091            if let Some(_) = self.sync_id {
10092                return 1;
10093            }
10094            0
10095        }
10096    }
10097
10098    impl fidl::encoding::ValueTypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10099        type Borrowed<'a> = &'a Self;
10100        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10101            value
10102        }
10103    }
10104
10105    unsafe impl fidl::encoding::TypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10106        type Owned = Self;
10107
10108        #[inline(always)]
10109        fn inline_align(_context: fidl::encoding::Context) -> usize {
10110            8
10111        }
10112
10113        #[inline(always)]
10114        fn inline_size(_context: fidl::encoding::Context) -> usize {
10115            16
10116        }
10117    }
10118
10119    unsafe impl<D: fidl::encoding::ResourceDialect>
10120        fidl::encoding::Encode<ConnectionTransferPeriodicAdvertisingSyncRequest, D>
10121        for &ConnectionTransferPeriodicAdvertisingSyncRequest
10122    {
10123        unsafe fn encode(
10124            self,
10125            encoder: &mut fidl::encoding::Encoder<'_, D>,
10126            offset: usize,
10127            mut depth: fidl::encoding::Depth,
10128        ) -> fidl::Result<()> {
10129            encoder.debug_check_bounds::<ConnectionTransferPeriodicAdvertisingSyncRequest>(offset);
10130            // Vector header
10131            let max_ordinal: u64 = self.max_ordinal_present();
10132            encoder.write_num(max_ordinal, offset);
10133            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10134            // Calling encoder.out_of_line_offset(0) is not allowed.
10135            if max_ordinal == 0 {
10136                return Ok(());
10137            }
10138            depth.increment()?;
10139            let envelope_size = 8;
10140            let bytes_len = max_ordinal as usize * envelope_size;
10141            #[allow(unused_variables)]
10142            let offset = encoder.out_of_line_offset(bytes_len);
10143            let mut _prev_end_offset: usize = 0;
10144            if 1 > max_ordinal {
10145                return Ok(());
10146            }
10147
10148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10149            // are envelope_size bytes.
10150            let cur_offset: usize = (1 - 1) * envelope_size;
10151
10152            // Zero reserved fields.
10153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10154
10155            // Safety:
10156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10158            //   envelope_size bytes, there is always sufficient room.
10159            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
10160                self.sync_id
10161                    .as_ref()
10162                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
10163                encoder,
10164                offset + cur_offset,
10165                depth,
10166            )?;
10167
10168            _prev_end_offset = cur_offset + envelope_size;
10169            if 2 > max_ordinal {
10170                return Ok(());
10171            }
10172
10173            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10174            // are envelope_size bytes.
10175            let cur_offset: usize = (2 - 1) * envelope_size;
10176
10177            // Zero reserved fields.
10178            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10179
10180            // Safety:
10181            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10182            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10183            //   envelope_size bytes, there is always sufficient room.
10184            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10185                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10186                encoder,
10187                offset + cur_offset,
10188                depth,
10189            )?;
10190
10191            _prev_end_offset = cur_offset + envelope_size;
10192
10193            Ok(())
10194        }
10195    }
10196
10197    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10198        for ConnectionTransferPeriodicAdvertisingSyncRequest
10199    {
10200        #[inline(always)]
10201        fn new_empty() -> Self {
10202            Self::default()
10203        }
10204
10205        unsafe fn decode(
10206            &mut self,
10207            decoder: &mut fidl::encoding::Decoder<'_, D>,
10208            offset: usize,
10209            mut depth: fidl::encoding::Depth,
10210        ) -> fidl::Result<()> {
10211            decoder.debug_check_bounds::<Self>(offset);
10212            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10213                None => return Err(fidl::Error::NotNullable),
10214                Some(len) => len,
10215            };
10216            // Calling decoder.out_of_line_offset(0) is not allowed.
10217            if len == 0 {
10218                return Ok(());
10219            };
10220            depth.increment()?;
10221            let envelope_size = 8;
10222            let bytes_len = len * envelope_size;
10223            let offset = decoder.out_of_line_offset(bytes_len)?;
10224            // Decode the envelope for each type.
10225            let mut _next_ordinal_to_read = 0;
10226            let mut next_offset = offset;
10227            let end_offset = offset + bytes_len;
10228            _next_ordinal_to_read += 1;
10229            if next_offset >= end_offset {
10230                return Ok(());
10231            }
10232
10233            // Decode unknown envelopes for gaps in ordinals.
10234            while _next_ordinal_to_read < 1 {
10235                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10236                _next_ordinal_to_read += 1;
10237                next_offset += envelope_size;
10238            }
10239
10240            let next_out_of_line = decoder.next_out_of_line();
10241            let handles_before = decoder.remaining_handles();
10242            if let Some((inlined, num_bytes, num_handles)) =
10243                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10244            {
10245                let member_inline_size =
10246                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
10247                        decoder.context,
10248                    );
10249                if inlined != (member_inline_size <= 4) {
10250                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10251                }
10252                let inner_offset;
10253                let mut inner_depth = depth.clone();
10254                if inlined {
10255                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10256                    inner_offset = next_offset;
10257                } else {
10258                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10259                    inner_depth.increment()?;
10260                }
10261                let val_ref = self
10262                    .sync_id
10263                    .get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
10264                fidl::decode!(
10265                    PeriodicAdvertisingSyncId,
10266                    D,
10267                    val_ref,
10268                    decoder,
10269                    inner_offset,
10270                    inner_depth
10271                )?;
10272                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10273                {
10274                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10275                }
10276                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10277                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10278                }
10279            }
10280
10281            next_offset += envelope_size;
10282            _next_ordinal_to_read += 1;
10283            if next_offset >= end_offset {
10284                return Ok(());
10285            }
10286
10287            // Decode unknown envelopes for gaps in ordinals.
10288            while _next_ordinal_to_read < 2 {
10289                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10290                _next_ordinal_to_read += 1;
10291                next_offset += envelope_size;
10292            }
10293
10294            let next_out_of_line = decoder.next_out_of_line();
10295            let handles_before = decoder.remaining_handles();
10296            if let Some((inlined, num_bytes, num_handles)) =
10297                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10298            {
10299                let member_inline_size =
10300                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10301                if inlined != (member_inline_size <= 4) {
10302                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10303                }
10304                let inner_offset;
10305                let mut inner_depth = depth.clone();
10306                if inlined {
10307                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10308                    inner_offset = next_offset;
10309                } else {
10310                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10311                    inner_depth.increment()?;
10312                }
10313                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
10314                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10315                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10316                {
10317                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10318                }
10319                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10320                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10321                }
10322            }
10323
10324            next_offset += envelope_size;
10325
10326            // Decode the remaining unknown envelopes.
10327            while next_offset < end_offset {
10328                _next_ordinal_to_read += 1;
10329                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10330                next_offset += envelope_size;
10331            }
10332
10333            Ok(())
10334        }
10335    }
10336
10337    impl Extended {
10338        #[inline(always)]
10339        fn max_ordinal_present(&self) -> u64 {
10340            0
10341        }
10342    }
10343
10344    impl fidl::encoding::ValueTypeMarker for Extended {
10345        type Borrowed<'a> = &'a Self;
10346        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10347            value
10348        }
10349    }
10350
10351    unsafe impl fidl::encoding::TypeMarker for Extended {
10352        type Owned = Self;
10353
10354        #[inline(always)]
10355        fn inline_align(_context: fidl::encoding::Context) -> usize {
10356            8
10357        }
10358
10359        #[inline(always)]
10360        fn inline_size(_context: fidl::encoding::Context) -> usize {
10361            16
10362        }
10363    }
10364
10365    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Extended, D> for &Extended {
10366        unsafe fn encode(
10367            self,
10368            encoder: &mut fidl::encoding::Encoder<'_, D>,
10369            offset: usize,
10370            mut depth: fidl::encoding::Depth,
10371        ) -> fidl::Result<()> {
10372            encoder.debug_check_bounds::<Extended>(offset);
10373            // Vector header
10374            let max_ordinal: u64 = self.max_ordinal_present();
10375            encoder.write_num(max_ordinal, offset);
10376            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10377            // Calling encoder.out_of_line_offset(0) is not allowed.
10378            if max_ordinal == 0 {
10379                return Ok(());
10380            }
10381            depth.increment()?;
10382            let envelope_size = 8;
10383            let bytes_len = max_ordinal as usize * envelope_size;
10384            #[allow(unused_variables)]
10385            let offset = encoder.out_of_line_offset(bytes_len);
10386            let mut _prev_end_offset: usize = 0;
10387
10388            Ok(())
10389        }
10390    }
10391
10392    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Extended {
10393        #[inline(always)]
10394        fn new_empty() -> Self {
10395            Self::default()
10396        }
10397
10398        unsafe fn decode(
10399            &mut self,
10400            decoder: &mut fidl::encoding::Decoder<'_, D>,
10401            offset: usize,
10402            mut depth: fidl::encoding::Depth,
10403        ) -> fidl::Result<()> {
10404            decoder.debug_check_bounds::<Self>(offset);
10405            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10406                None => return Err(fidl::Error::NotNullable),
10407                Some(len) => len,
10408            };
10409            // Calling decoder.out_of_line_offset(0) is not allowed.
10410            if len == 0 {
10411                return Ok(());
10412            };
10413            depth.increment()?;
10414            let envelope_size = 8;
10415            let bytes_len = len * envelope_size;
10416            let offset = decoder.out_of_line_offset(bytes_len)?;
10417            // Decode the envelope for each type.
10418            let mut _next_ordinal_to_read = 0;
10419            let mut next_offset = offset;
10420            let end_offset = offset + bytes_len;
10421
10422            // Decode the remaining unknown envelopes.
10423            while next_offset < end_offset {
10424                _next_ordinal_to_read += 1;
10425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10426                next_offset += envelope_size;
10427            }
10428
10429            Ok(())
10430        }
10431    }
10432
10433    impl Filter {
10434        #[inline(always)]
10435        fn max_ordinal_present(&self) -> u64 {
10436            if let Some(_) = self.solicitation_uuid {
10437                return 7;
10438            }
10439            if let Some(_) = self.max_path_loss {
10440                return 6;
10441            }
10442            if let Some(_) = self.name {
10443                return 5;
10444            }
10445            if let Some(_) = self.connectable {
10446                return 4;
10447            }
10448            if let Some(_) = self.manufacturer_id {
10449                return 3;
10450            }
10451            if let Some(_) = self.service_data_uuid {
10452                return 2;
10453            }
10454            if let Some(_) = self.service_uuid {
10455                return 1;
10456            }
10457            0
10458        }
10459    }
10460
10461    impl fidl::encoding::ValueTypeMarker for Filter {
10462        type Borrowed<'a> = &'a Self;
10463        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10464            value
10465        }
10466    }
10467
10468    unsafe impl fidl::encoding::TypeMarker for Filter {
10469        type Owned = Self;
10470
10471        #[inline(always)]
10472        fn inline_align(_context: fidl::encoding::Context) -> usize {
10473            8
10474        }
10475
10476        #[inline(always)]
10477        fn inline_size(_context: fidl::encoding::Context) -> usize {
10478            16
10479        }
10480    }
10481
10482    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Filter, D> for &Filter {
10483        unsafe fn encode(
10484            self,
10485            encoder: &mut fidl::encoding::Encoder<'_, D>,
10486            offset: usize,
10487            mut depth: fidl::encoding::Depth,
10488        ) -> fidl::Result<()> {
10489            encoder.debug_check_bounds::<Filter>(offset);
10490            // Vector header
10491            let max_ordinal: u64 = self.max_ordinal_present();
10492            encoder.write_num(max_ordinal, offset);
10493            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10494            // Calling encoder.out_of_line_offset(0) is not allowed.
10495            if max_ordinal == 0 {
10496                return Ok(());
10497            }
10498            depth.increment()?;
10499            let envelope_size = 8;
10500            let bytes_len = max_ordinal as usize * envelope_size;
10501            #[allow(unused_variables)]
10502            let offset = encoder.out_of_line_offset(bytes_len);
10503            let mut _prev_end_offset: usize = 0;
10504            if 1 > max_ordinal {
10505                return Ok(());
10506            }
10507
10508            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10509            // are envelope_size bytes.
10510            let cur_offset: usize = (1 - 1) * envelope_size;
10511
10512            // Zero reserved fields.
10513            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10514
10515            // Safety:
10516            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10517            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10518            //   envelope_size bytes, there is always sufficient room.
10519            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10520            self.service_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10521            encoder, offset + cur_offset, depth
10522        )?;
10523
10524            _prev_end_offset = cur_offset + envelope_size;
10525            if 2 > max_ordinal {
10526                return Ok(());
10527            }
10528
10529            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10530            // are envelope_size bytes.
10531            let cur_offset: usize = (2 - 1) * envelope_size;
10532
10533            // Zero reserved fields.
10534            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10535
10536            // Safety:
10537            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10538            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10539            //   envelope_size bytes, there is always sufficient room.
10540            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10541            self.service_data_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10542            encoder, offset + cur_offset, depth
10543        )?;
10544
10545            _prev_end_offset = cur_offset + envelope_size;
10546            if 3 > max_ordinal {
10547                return Ok(());
10548            }
10549
10550            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10551            // are envelope_size bytes.
10552            let cur_offset: usize = (3 - 1) * envelope_size;
10553
10554            // Zero reserved fields.
10555            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10556
10557            // Safety:
10558            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10559            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10560            //   envelope_size bytes, there is always sufficient room.
10561            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10562                self.manufacturer_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10563                encoder,
10564                offset + cur_offset,
10565                depth,
10566            )?;
10567
10568            _prev_end_offset = cur_offset + envelope_size;
10569            if 4 > max_ordinal {
10570                return Ok(());
10571            }
10572
10573            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10574            // are envelope_size bytes.
10575            let cur_offset: usize = (4 - 1) * envelope_size;
10576
10577            // Zero reserved fields.
10578            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10579
10580            // Safety:
10581            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10582            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10583            //   envelope_size bytes, there is always sufficient room.
10584            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10585                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10586                encoder,
10587                offset + cur_offset,
10588                depth,
10589            )?;
10590
10591            _prev_end_offset = cur_offset + envelope_size;
10592            if 5 > max_ordinal {
10593                return Ok(());
10594            }
10595
10596            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10597            // are envelope_size bytes.
10598            let cur_offset: usize = (5 - 1) * envelope_size;
10599
10600            // Zero reserved fields.
10601            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10602
10603            // Safety:
10604            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10605            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10606            //   envelope_size bytes, there is always sufficient room.
10607            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
10608                self.name.as_ref().map(
10609                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
10610                ),
10611                encoder,
10612                offset + cur_offset,
10613                depth,
10614            )?;
10615
10616            _prev_end_offset = cur_offset + envelope_size;
10617            if 6 > max_ordinal {
10618                return Ok(());
10619            }
10620
10621            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10622            // are envelope_size bytes.
10623            let cur_offset: usize = (6 - 1) * envelope_size;
10624
10625            // Zero reserved fields.
10626            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10627
10628            // Safety:
10629            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10630            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10631            //   envelope_size bytes, there is always sufficient room.
10632            fidl::encoding::encode_in_envelope_optional::<i8, D>(
10633                self.max_path_loss.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10634                encoder,
10635                offset + cur_offset,
10636                depth,
10637            )?;
10638
10639            _prev_end_offset = cur_offset + envelope_size;
10640            if 7 > max_ordinal {
10641                return Ok(());
10642            }
10643
10644            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10645            // are envelope_size bytes.
10646            let cur_offset: usize = (7 - 1) * envelope_size;
10647
10648            // Zero reserved fields.
10649            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10650
10651            // Safety:
10652            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10653            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10654            //   envelope_size bytes, there is always sufficient room.
10655            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10656            self.solicitation_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10657            encoder, offset + cur_offset, depth
10658        )?;
10659
10660            _prev_end_offset = cur_offset + envelope_size;
10661
10662            Ok(())
10663        }
10664    }
10665
10666    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Filter {
10667        #[inline(always)]
10668        fn new_empty() -> Self {
10669            Self::default()
10670        }
10671
10672        unsafe fn decode(
10673            &mut self,
10674            decoder: &mut fidl::encoding::Decoder<'_, D>,
10675            offset: usize,
10676            mut depth: fidl::encoding::Depth,
10677        ) -> fidl::Result<()> {
10678            decoder.debug_check_bounds::<Self>(offset);
10679            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10680                None => return Err(fidl::Error::NotNullable),
10681                Some(len) => len,
10682            };
10683            // Calling decoder.out_of_line_offset(0) is not allowed.
10684            if len == 0 {
10685                return Ok(());
10686            };
10687            depth.increment()?;
10688            let envelope_size = 8;
10689            let bytes_len = len * envelope_size;
10690            let offset = decoder.out_of_line_offset(bytes_len)?;
10691            // Decode the envelope for each type.
10692            let mut _next_ordinal_to_read = 0;
10693            let mut next_offset = offset;
10694            let end_offset = offset + bytes_len;
10695            _next_ordinal_to_read += 1;
10696            if next_offset >= end_offset {
10697                return Ok(());
10698            }
10699
10700            // Decode unknown envelopes for gaps in ordinals.
10701            while _next_ordinal_to_read < 1 {
10702                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10703                _next_ordinal_to_read += 1;
10704                next_offset += envelope_size;
10705            }
10706
10707            let next_out_of_line = decoder.next_out_of_line();
10708            let handles_before = decoder.remaining_handles();
10709            if let Some((inlined, num_bytes, num_handles)) =
10710                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10711            {
10712                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10713                if inlined != (member_inline_size <= 4) {
10714                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10715                }
10716                let inner_offset;
10717                let mut inner_depth = depth.clone();
10718                if inlined {
10719                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10720                    inner_offset = next_offset;
10721                } else {
10722                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10723                    inner_depth.increment()?;
10724                }
10725                let val_ref = self.service_uuid.get_or_insert_with(|| {
10726                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10727                });
10728                fidl::decode!(
10729                    fidl_fuchsia_bluetooth__common::Uuid,
10730                    D,
10731                    val_ref,
10732                    decoder,
10733                    inner_offset,
10734                    inner_depth
10735                )?;
10736                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10737                {
10738                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10739                }
10740                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10741                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10742                }
10743            }
10744
10745            next_offset += envelope_size;
10746            _next_ordinal_to_read += 1;
10747            if next_offset >= end_offset {
10748                return Ok(());
10749            }
10750
10751            // Decode unknown envelopes for gaps in ordinals.
10752            while _next_ordinal_to_read < 2 {
10753                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10754                _next_ordinal_to_read += 1;
10755                next_offset += envelope_size;
10756            }
10757
10758            let next_out_of_line = decoder.next_out_of_line();
10759            let handles_before = decoder.remaining_handles();
10760            if let Some((inlined, num_bytes, num_handles)) =
10761                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10762            {
10763                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10764                if inlined != (member_inline_size <= 4) {
10765                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10766                }
10767                let inner_offset;
10768                let mut inner_depth = depth.clone();
10769                if inlined {
10770                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10771                    inner_offset = next_offset;
10772                } else {
10773                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10774                    inner_depth.increment()?;
10775                }
10776                let val_ref = self.service_data_uuid.get_or_insert_with(|| {
10777                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10778                });
10779                fidl::decode!(
10780                    fidl_fuchsia_bluetooth__common::Uuid,
10781                    D,
10782                    val_ref,
10783                    decoder,
10784                    inner_offset,
10785                    inner_depth
10786                )?;
10787                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10788                {
10789                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10790                }
10791                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10792                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10793                }
10794            }
10795
10796            next_offset += envelope_size;
10797            _next_ordinal_to_read += 1;
10798            if next_offset >= end_offset {
10799                return Ok(());
10800            }
10801
10802            // Decode unknown envelopes for gaps in ordinals.
10803            while _next_ordinal_to_read < 3 {
10804                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10805                _next_ordinal_to_read += 1;
10806                next_offset += envelope_size;
10807            }
10808
10809            let next_out_of_line = decoder.next_out_of_line();
10810            let handles_before = decoder.remaining_handles();
10811            if let Some((inlined, num_bytes, num_handles)) =
10812                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10813            {
10814                let member_inline_size =
10815                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10816                if inlined != (member_inline_size <= 4) {
10817                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10818                }
10819                let inner_offset;
10820                let mut inner_depth = depth.clone();
10821                if inlined {
10822                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10823                    inner_offset = next_offset;
10824                } else {
10825                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10826                    inner_depth.increment()?;
10827                }
10828                let val_ref = self.manufacturer_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10829                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10830                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10831                {
10832                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10833                }
10834                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10835                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10836                }
10837            }
10838
10839            next_offset += envelope_size;
10840            _next_ordinal_to_read += 1;
10841            if next_offset >= end_offset {
10842                return Ok(());
10843            }
10844
10845            // Decode unknown envelopes for gaps in ordinals.
10846            while _next_ordinal_to_read < 4 {
10847                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10848                _next_ordinal_to_read += 1;
10849                next_offset += envelope_size;
10850            }
10851
10852            let next_out_of_line = decoder.next_out_of_line();
10853            let handles_before = decoder.remaining_handles();
10854            if let Some((inlined, num_bytes, num_handles)) =
10855                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10856            {
10857                let member_inline_size =
10858                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10859                if inlined != (member_inline_size <= 4) {
10860                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10861                }
10862                let inner_offset;
10863                let mut inner_depth = depth.clone();
10864                if inlined {
10865                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10866                    inner_offset = next_offset;
10867                } else {
10868                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10869                    inner_depth.increment()?;
10870                }
10871                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10872                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10873                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10874                {
10875                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10876                }
10877                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10878                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10879                }
10880            }
10881
10882            next_offset += envelope_size;
10883            _next_ordinal_to_read += 1;
10884            if next_offset >= end_offset {
10885                return Ok(());
10886            }
10887
10888            // Decode unknown envelopes for gaps in ordinals.
10889            while _next_ordinal_to_read < 5 {
10890                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10891                _next_ordinal_to_read += 1;
10892                next_offset += envelope_size;
10893            }
10894
10895            let next_out_of_line = decoder.next_out_of_line();
10896            let handles_before = decoder.remaining_handles();
10897            if let Some((inlined, num_bytes, num_handles)) =
10898                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10899            {
10900                let member_inline_size =
10901                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
10902                        decoder.context,
10903                    );
10904                if inlined != (member_inline_size <= 4) {
10905                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10906                }
10907                let inner_offset;
10908                let mut inner_depth = depth.clone();
10909                if inlined {
10910                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10911                    inner_offset = next_offset;
10912                } else {
10913                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10914                    inner_depth.increment()?;
10915                }
10916                let val_ref = self
10917                    .name
10918                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
10919                fidl::decode!(
10920                    fidl::encoding::BoundedString<248>,
10921                    D,
10922                    val_ref,
10923                    decoder,
10924                    inner_offset,
10925                    inner_depth
10926                )?;
10927                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10928                {
10929                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10930                }
10931                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10932                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10933                }
10934            }
10935
10936            next_offset += envelope_size;
10937            _next_ordinal_to_read += 1;
10938            if next_offset >= end_offset {
10939                return Ok(());
10940            }
10941
10942            // Decode unknown envelopes for gaps in ordinals.
10943            while _next_ordinal_to_read < 6 {
10944                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10945                _next_ordinal_to_read += 1;
10946                next_offset += envelope_size;
10947            }
10948
10949            let next_out_of_line = decoder.next_out_of_line();
10950            let handles_before = decoder.remaining_handles();
10951            if let Some((inlined, num_bytes, num_handles)) =
10952                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10953            {
10954                let member_inline_size =
10955                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10956                if inlined != (member_inline_size <= 4) {
10957                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10958                }
10959                let inner_offset;
10960                let mut inner_depth = depth.clone();
10961                if inlined {
10962                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10963                    inner_offset = next_offset;
10964                } else {
10965                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10966                    inner_depth.increment()?;
10967                }
10968                let val_ref = self.max_path_loss.get_or_insert_with(|| fidl::new_empty!(i8, D));
10969                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10970                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10971                {
10972                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10973                }
10974                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10975                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10976                }
10977            }
10978
10979            next_offset += envelope_size;
10980            _next_ordinal_to_read += 1;
10981            if next_offset >= end_offset {
10982                return Ok(());
10983            }
10984
10985            // Decode unknown envelopes for gaps in ordinals.
10986            while _next_ordinal_to_read < 7 {
10987                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10988                _next_ordinal_to_read += 1;
10989                next_offset += envelope_size;
10990            }
10991
10992            let next_out_of_line = decoder.next_out_of_line();
10993            let handles_before = decoder.remaining_handles();
10994            if let Some((inlined, num_bytes, num_handles)) =
10995                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10996            {
10997                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10998                if inlined != (member_inline_size <= 4) {
10999                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11000                }
11001                let inner_offset;
11002                let mut inner_depth = depth.clone();
11003                if inlined {
11004                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11005                    inner_offset = next_offset;
11006                } else {
11007                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11008                    inner_depth.increment()?;
11009                }
11010                let val_ref = self.solicitation_uuid.get_or_insert_with(|| {
11011                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
11012                });
11013                fidl::decode!(
11014                    fidl_fuchsia_bluetooth__common::Uuid,
11015                    D,
11016                    val_ref,
11017                    decoder,
11018                    inner_offset,
11019                    inner_depth
11020                )?;
11021                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11022                {
11023                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11024                }
11025                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11026                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11027                }
11028            }
11029
11030            next_offset += envelope_size;
11031
11032            // Decode the remaining unknown envelopes.
11033            while next_offset < end_offset {
11034                _next_ordinal_to_read += 1;
11035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11036                next_offset += envelope_size;
11037            }
11038
11039            Ok(())
11040        }
11041    }
11042
11043    impl IsochronousStreamOnEstablishedRequest {
11044        #[inline(always)]
11045        fn max_ordinal_present(&self) -> u64 {
11046            if let Some(_) = self.established_params {
11047                return 2;
11048            }
11049            if let Some(_) = self.result {
11050                return 1;
11051            }
11052            0
11053        }
11054    }
11055
11056    impl fidl::encoding::ValueTypeMarker for IsochronousStreamOnEstablishedRequest {
11057        type Borrowed<'a> = &'a Self;
11058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11059            value
11060        }
11061    }
11062
11063    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamOnEstablishedRequest {
11064        type Owned = Self;
11065
11066        #[inline(always)]
11067        fn inline_align(_context: fidl::encoding::Context) -> usize {
11068            8
11069        }
11070
11071        #[inline(always)]
11072        fn inline_size(_context: fidl::encoding::Context) -> usize {
11073            16
11074        }
11075    }
11076
11077    unsafe impl<D: fidl::encoding::ResourceDialect>
11078        fidl::encoding::Encode<IsochronousStreamOnEstablishedRequest, D>
11079        for &IsochronousStreamOnEstablishedRequest
11080    {
11081        unsafe fn encode(
11082            self,
11083            encoder: &mut fidl::encoding::Encoder<'_, D>,
11084            offset: usize,
11085            mut depth: fidl::encoding::Depth,
11086        ) -> fidl::Result<()> {
11087            encoder.debug_check_bounds::<IsochronousStreamOnEstablishedRequest>(offset);
11088            // Vector header
11089            let max_ordinal: u64 = self.max_ordinal_present();
11090            encoder.write_num(max_ordinal, offset);
11091            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11092            // Calling encoder.out_of_line_offset(0) is not allowed.
11093            if max_ordinal == 0 {
11094                return Ok(());
11095            }
11096            depth.increment()?;
11097            let envelope_size = 8;
11098            let bytes_len = max_ordinal as usize * envelope_size;
11099            #[allow(unused_variables)]
11100            let offset = encoder.out_of_line_offset(bytes_len);
11101            let mut _prev_end_offset: usize = 0;
11102            if 1 > max_ordinal {
11103                return Ok(());
11104            }
11105
11106            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11107            // are envelope_size bytes.
11108            let cur_offset: usize = (1 - 1) * envelope_size;
11109
11110            // Zero reserved fields.
11111            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11112
11113            // Safety:
11114            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11115            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11116            //   envelope_size bytes, there is always sufficient room.
11117            fidl::encoding::encode_in_envelope_optional::<i32, D>(
11118                self.result.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
11119                encoder,
11120                offset + cur_offset,
11121                depth,
11122            )?;
11123
11124            _prev_end_offset = cur_offset + envelope_size;
11125            if 2 > max_ordinal {
11126                return Ok(());
11127            }
11128
11129            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11130            // are envelope_size bytes.
11131            let cur_offset: usize = (2 - 1) * envelope_size;
11132
11133            // Zero reserved fields.
11134            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11135
11136            // Safety:
11137            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11138            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11139            //   envelope_size bytes, there is always sufficient room.
11140            fidl::encoding::encode_in_envelope_optional::<CisEstablishedParameters, D>(
11141                self.established_params
11142                    .as_ref()
11143                    .map(<CisEstablishedParameters as fidl::encoding::ValueTypeMarker>::borrow),
11144                encoder,
11145                offset + cur_offset,
11146                depth,
11147            )?;
11148
11149            _prev_end_offset = cur_offset + envelope_size;
11150
11151            Ok(())
11152        }
11153    }
11154
11155    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11156        for IsochronousStreamOnEstablishedRequest
11157    {
11158        #[inline(always)]
11159        fn new_empty() -> Self {
11160            Self::default()
11161        }
11162
11163        unsafe fn decode(
11164            &mut self,
11165            decoder: &mut fidl::encoding::Decoder<'_, D>,
11166            offset: usize,
11167            mut depth: fidl::encoding::Depth,
11168        ) -> fidl::Result<()> {
11169            decoder.debug_check_bounds::<Self>(offset);
11170            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11171                None => return Err(fidl::Error::NotNullable),
11172                Some(len) => len,
11173            };
11174            // Calling decoder.out_of_line_offset(0) is not allowed.
11175            if len == 0 {
11176                return Ok(());
11177            };
11178            depth.increment()?;
11179            let envelope_size = 8;
11180            let bytes_len = len * envelope_size;
11181            let offset = decoder.out_of_line_offset(bytes_len)?;
11182            // Decode the envelope for each type.
11183            let mut _next_ordinal_to_read = 0;
11184            let mut next_offset = offset;
11185            let end_offset = offset + bytes_len;
11186            _next_ordinal_to_read += 1;
11187            if next_offset >= end_offset {
11188                return Ok(());
11189            }
11190
11191            // Decode unknown envelopes for gaps in ordinals.
11192            while _next_ordinal_to_read < 1 {
11193                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11194                _next_ordinal_to_read += 1;
11195                next_offset += envelope_size;
11196            }
11197
11198            let next_out_of_line = decoder.next_out_of_line();
11199            let handles_before = decoder.remaining_handles();
11200            if let Some((inlined, num_bytes, num_handles)) =
11201                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11202            {
11203                let member_inline_size =
11204                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11205                if inlined != (member_inline_size <= 4) {
11206                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11207                }
11208                let inner_offset;
11209                let mut inner_depth = depth.clone();
11210                if inlined {
11211                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11212                    inner_offset = next_offset;
11213                } else {
11214                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11215                    inner_depth.increment()?;
11216                }
11217                let val_ref = self.result.get_or_insert_with(|| fidl::new_empty!(i32, D));
11218                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
11219                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11220                {
11221                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11222                }
11223                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11224                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11225                }
11226            }
11227
11228            next_offset += envelope_size;
11229            _next_ordinal_to_read += 1;
11230            if next_offset >= end_offset {
11231                return Ok(());
11232            }
11233
11234            // Decode unknown envelopes for gaps in ordinals.
11235            while _next_ordinal_to_read < 2 {
11236                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11237                _next_ordinal_to_read += 1;
11238                next_offset += envelope_size;
11239            }
11240
11241            let next_out_of_line = decoder.next_out_of_line();
11242            let handles_before = decoder.remaining_handles();
11243            if let Some((inlined, num_bytes, num_handles)) =
11244                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11245            {
11246                let member_inline_size =
11247                    <CisEstablishedParameters as fidl::encoding::TypeMarker>::inline_size(
11248                        decoder.context,
11249                    );
11250                if inlined != (member_inline_size <= 4) {
11251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11252                }
11253                let inner_offset;
11254                let mut inner_depth = depth.clone();
11255                if inlined {
11256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11257                    inner_offset = next_offset;
11258                } else {
11259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11260                    inner_depth.increment()?;
11261                }
11262                let val_ref = self
11263                    .established_params
11264                    .get_or_insert_with(|| fidl::new_empty!(CisEstablishedParameters, D));
11265                fidl::decode!(
11266                    CisEstablishedParameters,
11267                    D,
11268                    val_ref,
11269                    decoder,
11270                    inner_offset,
11271                    inner_depth
11272                )?;
11273                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11274                {
11275                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11276                }
11277                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11278                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11279                }
11280            }
11281
11282            next_offset += envelope_size;
11283
11284            // Decode the remaining unknown envelopes.
11285            while next_offset < end_offset {
11286                _next_ordinal_to_read += 1;
11287                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11288                next_offset += envelope_size;
11289            }
11290
11291            Ok(())
11292        }
11293    }
11294
11295    impl IsochronousStreamSetupDataPathRequest {
11296        #[inline(always)]
11297        fn max_ordinal_present(&self) -> u64 {
11298            if let Some(_) = self.controller_delay {
11299                return 3;
11300            }
11301            if let Some(_) = self.codec_attributes {
11302                return 2;
11303            }
11304            if let Some(_) = self.data_direction {
11305                return 1;
11306            }
11307            0
11308        }
11309    }
11310
11311    impl fidl::encoding::ValueTypeMarker for IsochronousStreamSetupDataPathRequest {
11312        type Borrowed<'a> = &'a Self;
11313        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11314            value
11315        }
11316    }
11317
11318    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamSetupDataPathRequest {
11319        type Owned = Self;
11320
11321        #[inline(always)]
11322        fn inline_align(_context: fidl::encoding::Context) -> usize {
11323            8
11324        }
11325
11326        #[inline(always)]
11327        fn inline_size(_context: fidl::encoding::Context) -> usize {
11328            16
11329        }
11330    }
11331
11332    unsafe impl<D: fidl::encoding::ResourceDialect>
11333        fidl::encoding::Encode<IsochronousStreamSetupDataPathRequest, D>
11334        for &IsochronousStreamSetupDataPathRequest
11335    {
11336        unsafe fn encode(
11337            self,
11338            encoder: &mut fidl::encoding::Encoder<'_, D>,
11339            offset: usize,
11340            mut depth: fidl::encoding::Depth,
11341        ) -> fidl::Result<()> {
11342            encoder.debug_check_bounds::<IsochronousStreamSetupDataPathRequest>(offset);
11343            // Vector header
11344            let max_ordinal: u64 = self.max_ordinal_present();
11345            encoder.write_num(max_ordinal, offset);
11346            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11347            // Calling encoder.out_of_line_offset(0) is not allowed.
11348            if max_ordinal == 0 {
11349                return Ok(());
11350            }
11351            depth.increment()?;
11352            let envelope_size = 8;
11353            let bytes_len = max_ordinal as usize * envelope_size;
11354            #[allow(unused_variables)]
11355            let offset = encoder.out_of_line_offset(bytes_len);
11356            let mut _prev_end_offset: usize = 0;
11357            if 1 > max_ordinal {
11358                return Ok(());
11359            }
11360
11361            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11362            // are envelope_size bytes.
11363            let cur_offset: usize = (1 - 1) * envelope_size;
11364
11365            // Zero reserved fields.
11366            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11367
11368            // Safety:
11369            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11370            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11371            //   envelope_size bytes, there is always sufficient room.
11372            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
11373            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
11374            encoder, offset + cur_offset, depth
11375        )?;
11376
11377            _prev_end_offset = cur_offset + envelope_size;
11378            if 2 > max_ordinal {
11379                return Ok(());
11380            }
11381
11382            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11383            // are envelope_size bytes.
11384            let cur_offset: usize = (2 - 1) * envelope_size;
11385
11386            // Zero reserved fields.
11387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11388
11389            // Safety:
11390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11392            //   envelope_size bytes, there is always sufficient room.
11393            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
11394            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
11395            encoder, offset + cur_offset, depth
11396        )?;
11397
11398            _prev_end_offset = cur_offset + envelope_size;
11399            if 3 > max_ordinal {
11400                return Ok(());
11401            }
11402
11403            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11404            // are envelope_size bytes.
11405            let cur_offset: usize = (3 - 1) * envelope_size;
11406
11407            // Zero reserved fields.
11408            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11409
11410            // Safety:
11411            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11412            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11413            //   envelope_size bytes, there is always sufficient room.
11414            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11415                self.controller_delay
11416                    .as_ref()
11417                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11418                encoder,
11419                offset + cur_offset,
11420                depth,
11421            )?;
11422
11423            _prev_end_offset = cur_offset + envelope_size;
11424
11425            Ok(())
11426        }
11427    }
11428
11429    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11430        for IsochronousStreamSetupDataPathRequest
11431    {
11432        #[inline(always)]
11433        fn new_empty() -> Self {
11434            Self::default()
11435        }
11436
11437        unsafe fn decode(
11438            &mut self,
11439            decoder: &mut fidl::encoding::Decoder<'_, D>,
11440            offset: usize,
11441            mut depth: fidl::encoding::Depth,
11442        ) -> fidl::Result<()> {
11443            decoder.debug_check_bounds::<Self>(offset);
11444            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11445                None => return Err(fidl::Error::NotNullable),
11446                Some(len) => len,
11447            };
11448            // Calling decoder.out_of_line_offset(0) is not allowed.
11449            if len == 0 {
11450                return Ok(());
11451            };
11452            depth.increment()?;
11453            let envelope_size = 8;
11454            let bytes_len = len * envelope_size;
11455            let offset = decoder.out_of_line_offset(bytes_len)?;
11456            // Decode the envelope for each type.
11457            let mut _next_ordinal_to_read = 0;
11458            let mut next_offset = offset;
11459            let end_offset = offset + bytes_len;
11460            _next_ordinal_to_read += 1;
11461            if next_offset >= end_offset {
11462                return Ok(());
11463            }
11464
11465            // Decode unknown envelopes for gaps in ordinals.
11466            while _next_ordinal_to_read < 1 {
11467                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11468                _next_ordinal_to_read += 1;
11469                next_offset += envelope_size;
11470            }
11471
11472            let next_out_of_line = decoder.next_out_of_line();
11473            let handles_before = decoder.remaining_handles();
11474            if let Some((inlined, num_bytes, num_handles)) =
11475                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11476            {
11477                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11478                if inlined != (member_inline_size <= 4) {
11479                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11480                }
11481                let inner_offset;
11482                let mut inner_depth = depth.clone();
11483                if inlined {
11484                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11485                    inner_offset = next_offset;
11486                } else {
11487                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11488                    inner_depth.increment()?;
11489                }
11490                let val_ref = self.data_direction.get_or_insert_with(|| {
11491                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
11492                });
11493                fidl::decode!(
11494                    fidl_fuchsia_bluetooth__common::DataDirection,
11495                    D,
11496                    val_ref,
11497                    decoder,
11498                    inner_offset,
11499                    inner_depth
11500                )?;
11501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11502                {
11503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11504                }
11505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11507                }
11508            }
11509
11510            next_offset += envelope_size;
11511            _next_ordinal_to_read += 1;
11512            if next_offset >= end_offset {
11513                return Ok(());
11514            }
11515
11516            // Decode unknown envelopes for gaps in ordinals.
11517            while _next_ordinal_to_read < 2 {
11518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11519                _next_ordinal_to_read += 1;
11520                next_offset += envelope_size;
11521            }
11522
11523            let next_out_of_line = decoder.next_out_of_line();
11524            let handles_before = decoder.remaining_handles();
11525            if let Some((inlined, num_bytes, num_handles)) =
11526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11527            {
11528                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11529                if inlined != (member_inline_size <= 4) {
11530                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11531                }
11532                let inner_offset;
11533                let mut inner_depth = depth.clone();
11534                if inlined {
11535                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11536                    inner_offset = next_offset;
11537                } else {
11538                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11539                    inner_depth.increment()?;
11540                }
11541                let val_ref = self.codec_attributes.get_or_insert_with(|| {
11542                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
11543                });
11544                fidl::decode!(
11545                    fidl_fuchsia_bluetooth__common::CodecAttributes,
11546                    D,
11547                    val_ref,
11548                    decoder,
11549                    inner_offset,
11550                    inner_depth
11551                )?;
11552                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11553                {
11554                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11555                }
11556                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11557                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11558                }
11559            }
11560
11561            next_offset += envelope_size;
11562            _next_ordinal_to_read += 1;
11563            if next_offset >= end_offset {
11564                return Ok(());
11565            }
11566
11567            // Decode unknown envelopes for gaps in ordinals.
11568            while _next_ordinal_to_read < 3 {
11569                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11570                _next_ordinal_to_read += 1;
11571                next_offset += envelope_size;
11572            }
11573
11574            let next_out_of_line = decoder.next_out_of_line();
11575            let handles_before = decoder.remaining_handles();
11576            if let Some((inlined, num_bytes, num_handles)) =
11577                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11578            {
11579                let member_inline_size =
11580                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11581                if inlined != (member_inline_size <= 4) {
11582                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11583                }
11584                let inner_offset;
11585                let mut inner_depth = depth.clone();
11586                if inlined {
11587                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11588                    inner_offset = next_offset;
11589                } else {
11590                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11591                    inner_depth.increment()?;
11592                }
11593                let val_ref = self.controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
11594                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
11595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11596                {
11597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11598                }
11599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11601                }
11602            }
11603
11604            next_offset += envelope_size;
11605
11606            // Decode the remaining unknown envelopes.
11607            while next_offset < end_offset {
11608                _next_ordinal_to_read += 1;
11609                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11610                next_offset += envelope_size;
11611            }
11612
11613            Ok(())
11614        }
11615    }
11616
11617    impl IsochronousStreamWriteRequest {
11618        #[inline(always)]
11619        fn max_ordinal_present(&self) -> u64 {
11620            if let Some(_) = self.data {
11621                return 1;
11622            }
11623            0
11624        }
11625    }
11626
11627    impl fidl::encoding::ValueTypeMarker for IsochronousStreamWriteRequest {
11628        type Borrowed<'a> = &'a Self;
11629        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11630            value
11631        }
11632    }
11633
11634    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamWriteRequest {
11635        type Owned = Self;
11636
11637        #[inline(always)]
11638        fn inline_align(_context: fidl::encoding::Context) -> usize {
11639            8
11640        }
11641
11642        #[inline(always)]
11643        fn inline_size(_context: fidl::encoding::Context) -> usize {
11644            16
11645        }
11646    }
11647
11648    unsafe impl<D: fidl::encoding::ResourceDialect>
11649        fidl::encoding::Encode<IsochronousStreamWriteRequest, D>
11650        for &IsochronousStreamWriteRequest
11651    {
11652        unsafe fn encode(
11653            self,
11654            encoder: &mut fidl::encoding::Encoder<'_, D>,
11655            offset: usize,
11656            mut depth: fidl::encoding::Depth,
11657        ) -> fidl::Result<()> {
11658            encoder.debug_check_bounds::<IsochronousStreamWriteRequest>(offset);
11659            // Vector header
11660            let max_ordinal: u64 = self.max_ordinal_present();
11661            encoder.write_num(max_ordinal, offset);
11662            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11663            // Calling encoder.out_of_line_offset(0) is not allowed.
11664            if max_ordinal == 0 {
11665                return Ok(());
11666            }
11667            depth.increment()?;
11668            let envelope_size = 8;
11669            let bytes_len = max_ordinal as usize * envelope_size;
11670            #[allow(unused_variables)]
11671            let offset = encoder.out_of_line_offset(bytes_len);
11672            let mut _prev_end_offset: usize = 0;
11673            if 1 > max_ordinal {
11674                return Ok(());
11675            }
11676
11677            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11678            // are envelope_size bytes.
11679            let cur_offset: usize = (1 - 1) * envelope_size;
11680
11681            // Zero reserved fields.
11682            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11683
11684            // Safety:
11685            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11686            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11687            //   envelope_size bytes, there is always sufficient room.
11688            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 4095>, D>(
11689                self.data.as_ref().map(
11690                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::ValueTypeMarker>::borrow,
11691                ),
11692                encoder,
11693                offset + cur_offset,
11694                depth,
11695            )?;
11696
11697            _prev_end_offset = cur_offset + envelope_size;
11698
11699            Ok(())
11700        }
11701    }
11702
11703    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11704        for IsochronousStreamWriteRequest
11705    {
11706        #[inline(always)]
11707        fn new_empty() -> Self {
11708            Self::default()
11709        }
11710
11711        unsafe fn decode(
11712            &mut self,
11713            decoder: &mut fidl::encoding::Decoder<'_, D>,
11714            offset: usize,
11715            mut depth: fidl::encoding::Depth,
11716        ) -> fidl::Result<()> {
11717            decoder.debug_check_bounds::<Self>(offset);
11718            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11719                None => return Err(fidl::Error::NotNullable),
11720                Some(len) => len,
11721            };
11722            // Calling decoder.out_of_line_offset(0) is not allowed.
11723            if len == 0 {
11724                return Ok(());
11725            };
11726            depth.increment()?;
11727            let envelope_size = 8;
11728            let bytes_len = len * envelope_size;
11729            let offset = decoder.out_of_line_offset(bytes_len)?;
11730            // Decode the envelope for each type.
11731            let mut _next_ordinal_to_read = 0;
11732            let mut next_offset = offset;
11733            let end_offset = offset + bytes_len;
11734            _next_ordinal_to_read += 1;
11735            if next_offset >= end_offset {
11736                return Ok(());
11737            }
11738
11739            // Decode unknown envelopes for gaps in ordinals.
11740            while _next_ordinal_to_read < 1 {
11741                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11742                _next_ordinal_to_read += 1;
11743                next_offset += envelope_size;
11744            }
11745
11746            let next_out_of_line = decoder.next_out_of_line();
11747            let handles_before = decoder.remaining_handles();
11748            if let Some((inlined, num_bytes, num_handles)) =
11749                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11750            {
11751                let member_inline_size =
11752                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::TypeMarker>::inline_size(
11753                        decoder.context,
11754                    );
11755                if inlined != (member_inline_size <= 4) {
11756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11757                }
11758                let inner_offset;
11759                let mut inner_depth = depth.clone();
11760                if inlined {
11761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11762                    inner_offset = next_offset;
11763                } else {
11764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11765                    inner_depth.increment()?;
11766                }
11767                let val_ref = self
11768                    .data
11769                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 4095>, D));
11770                fidl::decode!(fidl::encoding::Vector<u8, 4095>, D, val_ref, decoder, inner_offset, inner_depth)?;
11771                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11772                {
11773                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11774                }
11775                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11776                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11777                }
11778            }
11779
11780            next_offset += envelope_size;
11781
11782            // Decode the remaining unknown envelopes.
11783            while next_offset < end_offset {
11784                _next_ordinal_to_read += 1;
11785                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11786                next_offset += envelope_size;
11787            }
11788
11789            Ok(())
11790        }
11791    }
11792
11793    impl IsochronousStreamReadResponse {
11794        #[inline(always)]
11795        fn max_ordinal_present(&self) -> u64 {
11796            if let Some(_) = self.timestamp {
11797                return 4;
11798            }
11799            if let Some(_) = self.status_flag {
11800                return 3;
11801            }
11802            if let Some(_) = self.sequence_number {
11803                return 2;
11804            }
11805            if let Some(_) = self.data {
11806                return 1;
11807            }
11808            0
11809        }
11810    }
11811
11812    impl fidl::encoding::ValueTypeMarker for IsochronousStreamReadResponse {
11813        type Borrowed<'a> = &'a Self;
11814        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11815            value
11816        }
11817    }
11818
11819    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamReadResponse {
11820        type Owned = Self;
11821
11822        #[inline(always)]
11823        fn inline_align(_context: fidl::encoding::Context) -> usize {
11824            8
11825        }
11826
11827        #[inline(always)]
11828        fn inline_size(_context: fidl::encoding::Context) -> usize {
11829            16
11830        }
11831    }
11832
11833    unsafe impl<D: fidl::encoding::ResourceDialect>
11834        fidl::encoding::Encode<IsochronousStreamReadResponse, D>
11835        for &IsochronousStreamReadResponse
11836    {
11837        unsafe fn encode(
11838            self,
11839            encoder: &mut fidl::encoding::Encoder<'_, D>,
11840            offset: usize,
11841            mut depth: fidl::encoding::Depth,
11842        ) -> fidl::Result<()> {
11843            encoder.debug_check_bounds::<IsochronousStreamReadResponse>(offset);
11844            // Vector header
11845            let max_ordinal: u64 = self.max_ordinal_present();
11846            encoder.write_num(max_ordinal, offset);
11847            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11848            // Calling encoder.out_of_line_offset(0) is not allowed.
11849            if max_ordinal == 0 {
11850                return Ok(());
11851            }
11852            depth.increment()?;
11853            let envelope_size = 8;
11854            let bytes_len = max_ordinal as usize * envelope_size;
11855            #[allow(unused_variables)]
11856            let offset = encoder.out_of_line_offset(bytes_len);
11857            let mut _prev_end_offset: usize = 0;
11858            if 1 > max_ordinal {
11859                return Ok(());
11860            }
11861
11862            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11863            // are envelope_size bytes.
11864            let cur_offset: usize = (1 - 1) * envelope_size;
11865
11866            // Zero reserved fields.
11867            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11868
11869            // Safety:
11870            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11871            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11872            //   envelope_size bytes, there is always sufficient room.
11873            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11874            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11875            encoder, offset + cur_offset, depth
11876        )?;
11877
11878            _prev_end_offset = cur_offset + envelope_size;
11879            if 2 > max_ordinal {
11880                return Ok(());
11881            }
11882
11883            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11884            // are envelope_size bytes.
11885            let cur_offset: usize = (2 - 1) * envelope_size;
11886
11887            // Zero reserved fields.
11888            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11889
11890            // Safety:
11891            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11892            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11893            //   envelope_size bytes, there is always sufficient room.
11894            fidl::encoding::encode_in_envelope_optional::<u16, D>(
11895                self.sequence_number.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11896                encoder,
11897                offset + cur_offset,
11898                depth,
11899            )?;
11900
11901            _prev_end_offset = cur_offset + envelope_size;
11902            if 3 > max_ordinal {
11903                return Ok(());
11904            }
11905
11906            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11907            // are envelope_size bytes.
11908            let cur_offset: usize = (3 - 1) * envelope_size;
11909
11910            // Zero reserved fields.
11911            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11912
11913            // Safety:
11914            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11915            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11916            //   envelope_size bytes, there is always sufficient room.
11917            fidl::encoding::encode_in_envelope_optional::<IsoPacketStatusFlag, D>(
11918                self.status_flag
11919                    .as_ref()
11920                    .map(<IsoPacketStatusFlag as fidl::encoding::ValueTypeMarker>::borrow),
11921                encoder,
11922                offset + cur_offset,
11923                depth,
11924            )?;
11925
11926            _prev_end_offset = cur_offset + envelope_size;
11927            if 4 > max_ordinal {
11928                return Ok(());
11929            }
11930
11931            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11932            // are envelope_size bytes.
11933            let cur_offset: usize = (4 - 1) * envelope_size;
11934
11935            // Zero reserved fields.
11936            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11937
11938            // Safety:
11939            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11940            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11941            //   envelope_size bytes, there is always sufficient room.
11942            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11943                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11944                encoder,
11945                offset + cur_offset,
11946                depth,
11947            )?;
11948
11949            _prev_end_offset = cur_offset + envelope_size;
11950
11951            Ok(())
11952        }
11953    }
11954
11955    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11956        for IsochronousStreamReadResponse
11957    {
11958        #[inline(always)]
11959        fn new_empty() -> Self {
11960            Self::default()
11961        }
11962
11963        unsafe fn decode(
11964            &mut self,
11965            decoder: &mut fidl::encoding::Decoder<'_, D>,
11966            offset: usize,
11967            mut depth: fidl::encoding::Depth,
11968        ) -> fidl::Result<()> {
11969            decoder.debug_check_bounds::<Self>(offset);
11970            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11971                None => return Err(fidl::Error::NotNullable),
11972                Some(len) => len,
11973            };
11974            // Calling decoder.out_of_line_offset(0) is not allowed.
11975            if len == 0 {
11976                return Ok(());
11977            };
11978            depth.increment()?;
11979            let envelope_size = 8;
11980            let bytes_len = len * envelope_size;
11981            let offset = decoder.out_of_line_offset(bytes_len)?;
11982            // Decode the envelope for each type.
11983            let mut _next_ordinal_to_read = 0;
11984            let mut next_offset = offset;
11985            let end_offset = offset + bytes_len;
11986            _next_ordinal_to_read += 1;
11987            if next_offset >= end_offset {
11988                return Ok(());
11989            }
11990
11991            // Decode unknown envelopes for gaps in ordinals.
11992            while _next_ordinal_to_read < 1 {
11993                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11994                _next_ordinal_to_read += 1;
11995                next_offset += envelope_size;
11996            }
11997
11998            let next_out_of_line = decoder.next_out_of_line();
11999            let handles_before = decoder.remaining_handles();
12000            if let Some((inlined, num_bytes, num_handles)) =
12001                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12002            {
12003                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12004                if inlined != (member_inline_size <= 4) {
12005                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12006                }
12007                let inner_offset;
12008                let mut inner_depth = depth.clone();
12009                if inlined {
12010                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12011                    inner_offset = next_offset;
12012                } else {
12013                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12014                    inner_depth.increment()?;
12015                }
12016                let val_ref = self.data.get_or_insert_with(|| {
12017                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12018                });
12019                fidl::decode!(
12020                    fidl::encoding::UnboundedVector<u8>,
12021                    D,
12022                    val_ref,
12023                    decoder,
12024                    inner_offset,
12025                    inner_depth
12026                )?;
12027                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12028                {
12029                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12030                }
12031                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12032                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12033                }
12034            }
12035
12036            next_offset += envelope_size;
12037            _next_ordinal_to_read += 1;
12038            if next_offset >= end_offset {
12039                return Ok(());
12040            }
12041
12042            // Decode unknown envelopes for gaps in ordinals.
12043            while _next_ordinal_to_read < 2 {
12044                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12045                _next_ordinal_to_read += 1;
12046                next_offset += envelope_size;
12047            }
12048
12049            let next_out_of_line = decoder.next_out_of_line();
12050            let handles_before = decoder.remaining_handles();
12051            if let Some((inlined, num_bytes, num_handles)) =
12052                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12053            {
12054                let member_inline_size =
12055                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12056                if inlined != (member_inline_size <= 4) {
12057                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12058                }
12059                let inner_offset;
12060                let mut inner_depth = depth.clone();
12061                if inlined {
12062                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12063                    inner_offset = next_offset;
12064                } else {
12065                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12066                    inner_depth.increment()?;
12067                }
12068                let val_ref = self.sequence_number.get_or_insert_with(|| fidl::new_empty!(u16, D));
12069                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12070                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12071                {
12072                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12073                }
12074                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12075                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12076                }
12077            }
12078
12079            next_offset += envelope_size;
12080            _next_ordinal_to_read += 1;
12081            if next_offset >= end_offset {
12082                return Ok(());
12083            }
12084
12085            // Decode unknown envelopes for gaps in ordinals.
12086            while _next_ordinal_to_read < 3 {
12087                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12088                _next_ordinal_to_read += 1;
12089                next_offset += envelope_size;
12090            }
12091
12092            let next_out_of_line = decoder.next_out_of_line();
12093            let handles_before = decoder.remaining_handles();
12094            if let Some((inlined, num_bytes, num_handles)) =
12095                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12096            {
12097                let member_inline_size =
12098                    <IsoPacketStatusFlag as fidl::encoding::TypeMarker>::inline_size(
12099                        decoder.context,
12100                    );
12101                if inlined != (member_inline_size <= 4) {
12102                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12103                }
12104                let inner_offset;
12105                let mut inner_depth = depth.clone();
12106                if inlined {
12107                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12108                    inner_offset = next_offset;
12109                } else {
12110                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12111                    inner_depth.increment()?;
12112                }
12113                let val_ref = self
12114                    .status_flag
12115                    .get_or_insert_with(|| fidl::new_empty!(IsoPacketStatusFlag, D));
12116                fidl::decode!(IsoPacketStatusFlag, D, val_ref, decoder, inner_offset, inner_depth)?;
12117                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12118                {
12119                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12120                }
12121                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12122                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12123                }
12124            }
12125
12126            next_offset += envelope_size;
12127            _next_ordinal_to_read += 1;
12128            if next_offset >= end_offset {
12129                return Ok(());
12130            }
12131
12132            // Decode unknown envelopes for gaps in ordinals.
12133            while _next_ordinal_to_read < 4 {
12134                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12135                _next_ordinal_to_read += 1;
12136                next_offset += envelope_size;
12137            }
12138
12139            let next_out_of_line = decoder.next_out_of_line();
12140            let handles_before = decoder.remaining_handles();
12141            if let Some((inlined, num_bytes, num_handles)) =
12142                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12143            {
12144                let member_inline_size =
12145                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12146                if inlined != (member_inline_size <= 4) {
12147                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12148                }
12149                let inner_offset;
12150                let mut inner_depth = depth.clone();
12151                if inlined {
12152                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12153                    inner_offset = next_offset;
12154                } else {
12155                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12156                    inner_depth.increment()?;
12157                }
12158                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
12159                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12160                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12161                {
12162                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12163                }
12164                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12165                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12166                }
12167            }
12168
12169            next_offset += envelope_size;
12170
12171            // Decode the remaining unknown envelopes.
12172            while next_offset < end_offset {
12173                _next_ordinal_to_read += 1;
12174                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12175                next_offset += envelope_size;
12176            }
12177
12178            Ok(())
12179        }
12180    }
12181
12182    impl Legacy {
12183        #[inline(always)]
12184        fn max_ordinal_present(&self) -> u64 {
12185            0
12186        }
12187    }
12188
12189    impl fidl::encoding::ValueTypeMarker for Legacy {
12190        type Borrowed<'a> = &'a Self;
12191        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12192            value
12193        }
12194    }
12195
12196    unsafe impl fidl::encoding::TypeMarker for Legacy {
12197        type Owned = Self;
12198
12199        #[inline(always)]
12200        fn inline_align(_context: fidl::encoding::Context) -> usize {
12201            8
12202        }
12203
12204        #[inline(always)]
12205        fn inline_size(_context: fidl::encoding::Context) -> usize {
12206            16
12207        }
12208    }
12209
12210    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Legacy, D> for &Legacy {
12211        unsafe fn encode(
12212            self,
12213            encoder: &mut fidl::encoding::Encoder<'_, D>,
12214            offset: usize,
12215            mut depth: fidl::encoding::Depth,
12216        ) -> fidl::Result<()> {
12217            encoder.debug_check_bounds::<Legacy>(offset);
12218            // Vector header
12219            let max_ordinal: u64 = self.max_ordinal_present();
12220            encoder.write_num(max_ordinal, offset);
12221            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12222            // Calling encoder.out_of_line_offset(0) is not allowed.
12223            if max_ordinal == 0 {
12224                return Ok(());
12225            }
12226            depth.increment()?;
12227            let envelope_size = 8;
12228            let bytes_len = max_ordinal as usize * envelope_size;
12229            #[allow(unused_variables)]
12230            let offset = encoder.out_of_line_offset(bytes_len);
12231            let mut _prev_end_offset: usize = 0;
12232
12233            Ok(())
12234        }
12235    }
12236
12237    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Legacy {
12238        #[inline(always)]
12239        fn new_empty() -> Self {
12240            Self::default()
12241        }
12242
12243        unsafe fn decode(
12244            &mut self,
12245            decoder: &mut fidl::encoding::Decoder<'_, D>,
12246            offset: usize,
12247            mut depth: fidl::encoding::Depth,
12248        ) -> fidl::Result<()> {
12249            decoder.debug_check_bounds::<Self>(offset);
12250            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12251                None => return Err(fidl::Error::NotNullable),
12252                Some(len) => len,
12253            };
12254            // Calling decoder.out_of_line_offset(0) is not allowed.
12255            if len == 0 {
12256                return Ok(());
12257            };
12258            depth.increment()?;
12259            let envelope_size = 8;
12260            let bytes_len = len * envelope_size;
12261            let offset = decoder.out_of_line_offset(bytes_len)?;
12262            // Decode the envelope for each type.
12263            let mut _next_ordinal_to_read = 0;
12264            let mut next_offset = offset;
12265            let end_offset = offset + bytes_len;
12266
12267            // Decode the remaining unknown envelopes.
12268            while next_offset < end_offset {
12269                _next_ordinal_to_read += 1;
12270                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12271                next_offset += envelope_size;
12272            }
12273
12274            Ok(())
12275        }
12276    }
12277
12278    impl Peer {
12279        #[inline(always)]
12280        fn max_ordinal_present(&self) -> u64 {
12281            if let Some(_) = self.periodic_advertising_interval {
12282                return 10;
12283            }
12284            if let Some(_) = self.advertising_sid {
12285                return 9;
12286            }
12287            if let Some(_) = self.last_updated {
12288                return 8;
12289            }
12290            if let Some(_) = self.bonded {
12291                return 7;
12292            }
12293            if let Some(_) = self.data {
12294                return 6;
12295            }
12296            if let Some(_) = self.name {
12297                return 5;
12298            }
12299            if let Some(_) = self.advertising_data {
12300                return 4;
12301            }
12302            if let Some(_) = self.rssi {
12303                return 3;
12304            }
12305            if let Some(_) = self.connectable {
12306                return 2;
12307            }
12308            if let Some(_) = self.id {
12309                return 1;
12310            }
12311            0
12312        }
12313    }
12314
12315    impl fidl::encoding::ValueTypeMarker for Peer {
12316        type Borrowed<'a> = &'a Self;
12317        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12318            value
12319        }
12320    }
12321
12322    unsafe impl fidl::encoding::TypeMarker for Peer {
12323        type Owned = Self;
12324
12325        #[inline(always)]
12326        fn inline_align(_context: fidl::encoding::Context) -> usize {
12327            8
12328        }
12329
12330        #[inline(always)]
12331        fn inline_size(_context: fidl::encoding::Context) -> usize {
12332            16
12333        }
12334    }
12335
12336    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
12337        unsafe fn encode(
12338            self,
12339            encoder: &mut fidl::encoding::Encoder<'_, D>,
12340            offset: usize,
12341            mut depth: fidl::encoding::Depth,
12342        ) -> fidl::Result<()> {
12343            encoder.debug_check_bounds::<Peer>(offset);
12344            // Vector header
12345            let max_ordinal: u64 = self.max_ordinal_present();
12346            encoder.write_num(max_ordinal, offset);
12347            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12348            // Calling encoder.out_of_line_offset(0) is not allowed.
12349            if max_ordinal == 0 {
12350                return Ok(());
12351            }
12352            depth.increment()?;
12353            let envelope_size = 8;
12354            let bytes_len = max_ordinal as usize * envelope_size;
12355            #[allow(unused_variables)]
12356            let offset = encoder.out_of_line_offset(bytes_len);
12357            let mut _prev_end_offset: usize = 0;
12358            if 1 > max_ordinal {
12359                return Ok(());
12360            }
12361
12362            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12363            // are envelope_size bytes.
12364            let cur_offset: usize = (1 - 1) * envelope_size;
12365
12366            // Zero reserved fields.
12367            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12368
12369            // Safety:
12370            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12371            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12372            //   envelope_size bytes, there is always sufficient room.
12373            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
12374            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
12375            encoder, offset + cur_offset, depth
12376        )?;
12377
12378            _prev_end_offset = cur_offset + envelope_size;
12379            if 2 > max_ordinal {
12380                return Ok(());
12381            }
12382
12383            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12384            // are envelope_size bytes.
12385            let cur_offset: usize = (2 - 1) * envelope_size;
12386
12387            // Zero reserved fields.
12388            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12389
12390            // Safety:
12391            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12392            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12393            //   envelope_size bytes, there is always sufficient room.
12394            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12395                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12396                encoder,
12397                offset + cur_offset,
12398                depth,
12399            )?;
12400
12401            _prev_end_offset = cur_offset + envelope_size;
12402            if 3 > max_ordinal {
12403                return Ok(());
12404            }
12405
12406            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12407            // are envelope_size bytes.
12408            let cur_offset: usize = (3 - 1) * envelope_size;
12409
12410            // Zero reserved fields.
12411            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12412
12413            // Safety:
12414            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12415            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12416            //   envelope_size bytes, there is always sufficient room.
12417            fidl::encoding::encode_in_envelope_optional::<i8, D>(
12418                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12419                encoder,
12420                offset + cur_offset,
12421                depth,
12422            )?;
12423
12424            _prev_end_offset = cur_offset + envelope_size;
12425            if 4 > max_ordinal {
12426                return Ok(());
12427            }
12428
12429            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12430            // are envelope_size bytes.
12431            let cur_offset: usize = (4 - 1) * envelope_size;
12432
12433            // Zero reserved fields.
12434            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12435
12436            // Safety:
12437            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12438            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12439            //   envelope_size bytes, there is always sufficient room.
12440            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
12441                self.advertising_data
12442                    .as_ref()
12443                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
12444                encoder,
12445                offset + cur_offset,
12446                depth,
12447            )?;
12448
12449            _prev_end_offset = cur_offset + envelope_size;
12450            if 5 > max_ordinal {
12451                return Ok(());
12452            }
12453
12454            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12455            // are envelope_size bytes.
12456            let cur_offset: usize = (5 - 1) * envelope_size;
12457
12458            // Zero reserved fields.
12459            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12460
12461            // Safety:
12462            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12463            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12464            //   envelope_size bytes, there is always sufficient room.
12465            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
12466                self.name.as_ref().map(
12467                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
12468                ),
12469                encoder,
12470                offset + cur_offset,
12471                depth,
12472            )?;
12473
12474            _prev_end_offset = cur_offset + envelope_size;
12475            if 6 > max_ordinal {
12476                return Ok(());
12477            }
12478
12479            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12480            // are envelope_size bytes.
12481            let cur_offset: usize = (6 - 1) * envelope_size;
12482
12483            // Zero reserved fields.
12484            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12485
12486            // Safety:
12487            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12488            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12489            //   envelope_size bytes, there is always sufficient room.
12490            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
12491                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
12492                encoder,
12493                offset + cur_offset,
12494                depth,
12495            )?;
12496
12497            _prev_end_offset = cur_offset + envelope_size;
12498            if 7 > max_ordinal {
12499                return Ok(());
12500            }
12501
12502            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12503            // are envelope_size bytes.
12504            let cur_offset: usize = (7 - 1) * envelope_size;
12505
12506            // Zero reserved fields.
12507            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12508
12509            // Safety:
12510            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12511            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12512            //   envelope_size bytes, there is always sufficient room.
12513            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12514                self.bonded.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12515                encoder,
12516                offset + cur_offset,
12517                depth,
12518            )?;
12519
12520            _prev_end_offset = cur_offset + envelope_size;
12521            if 8 > max_ordinal {
12522                return Ok(());
12523            }
12524
12525            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12526            // are envelope_size bytes.
12527            let cur_offset: usize = (8 - 1) * envelope_size;
12528
12529            // Zero reserved fields.
12530            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12531
12532            // Safety:
12533            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12534            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12535            //   envelope_size bytes, there is always sufficient room.
12536            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12537                self.last_updated.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12538                encoder,
12539                offset + cur_offset,
12540                depth,
12541            )?;
12542
12543            _prev_end_offset = cur_offset + envelope_size;
12544            if 9 > max_ordinal {
12545                return Ok(());
12546            }
12547
12548            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12549            // are envelope_size bytes.
12550            let cur_offset: usize = (9 - 1) * envelope_size;
12551
12552            // Zero reserved fields.
12553            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12554
12555            // Safety:
12556            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12557            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12558            //   envelope_size bytes, there is always sufficient room.
12559            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12560                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12561                encoder,
12562                offset + cur_offset,
12563                depth,
12564            )?;
12565
12566            _prev_end_offset = cur_offset + envelope_size;
12567            if 10 > max_ordinal {
12568                return Ok(());
12569            }
12570
12571            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12572            // are envelope_size bytes.
12573            let cur_offset: usize = (10 - 1) * envelope_size;
12574
12575            // Zero reserved fields.
12576            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12577
12578            // Safety:
12579            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12580            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12581            //   envelope_size bytes, there is always sufficient room.
12582            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12583                self.periodic_advertising_interval
12584                    .as_ref()
12585                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12586                encoder,
12587                offset + cur_offset,
12588                depth,
12589            )?;
12590
12591            _prev_end_offset = cur_offset + envelope_size;
12592
12593            Ok(())
12594        }
12595    }
12596
12597    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
12598        #[inline(always)]
12599        fn new_empty() -> Self {
12600            Self::default()
12601        }
12602
12603        unsafe fn decode(
12604            &mut self,
12605            decoder: &mut fidl::encoding::Decoder<'_, D>,
12606            offset: usize,
12607            mut depth: fidl::encoding::Depth,
12608        ) -> fidl::Result<()> {
12609            decoder.debug_check_bounds::<Self>(offset);
12610            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12611                None => return Err(fidl::Error::NotNullable),
12612                Some(len) => len,
12613            };
12614            // Calling decoder.out_of_line_offset(0) is not allowed.
12615            if len == 0 {
12616                return Ok(());
12617            };
12618            depth.increment()?;
12619            let envelope_size = 8;
12620            let bytes_len = len * envelope_size;
12621            let offset = decoder.out_of_line_offset(bytes_len)?;
12622            // Decode the envelope for each type.
12623            let mut _next_ordinal_to_read = 0;
12624            let mut next_offset = offset;
12625            let end_offset = offset + bytes_len;
12626            _next_ordinal_to_read += 1;
12627            if next_offset >= end_offset {
12628                return Ok(());
12629            }
12630
12631            // Decode unknown envelopes for gaps in ordinals.
12632            while _next_ordinal_to_read < 1 {
12633                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12634                _next_ordinal_to_read += 1;
12635                next_offset += envelope_size;
12636            }
12637
12638            let next_out_of_line = decoder.next_out_of_line();
12639            let handles_before = decoder.remaining_handles();
12640            if let Some((inlined, num_bytes, num_handles)) =
12641                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12642            {
12643                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12644                if inlined != (member_inline_size <= 4) {
12645                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12646                }
12647                let inner_offset;
12648                let mut inner_depth = depth.clone();
12649                if inlined {
12650                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12651                    inner_offset = next_offset;
12652                } else {
12653                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12654                    inner_depth.increment()?;
12655                }
12656                let val_ref = self.id.get_or_insert_with(|| {
12657                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
12658                });
12659                fidl::decode!(
12660                    fidl_fuchsia_bluetooth__common::PeerId,
12661                    D,
12662                    val_ref,
12663                    decoder,
12664                    inner_offset,
12665                    inner_depth
12666                )?;
12667                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12668                {
12669                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12670                }
12671                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12672                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12673                }
12674            }
12675
12676            next_offset += envelope_size;
12677            _next_ordinal_to_read += 1;
12678            if next_offset >= end_offset {
12679                return Ok(());
12680            }
12681
12682            // Decode unknown envelopes for gaps in ordinals.
12683            while _next_ordinal_to_read < 2 {
12684                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12685                _next_ordinal_to_read += 1;
12686                next_offset += envelope_size;
12687            }
12688
12689            let next_out_of_line = decoder.next_out_of_line();
12690            let handles_before = decoder.remaining_handles();
12691            if let Some((inlined, num_bytes, num_handles)) =
12692                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12693            {
12694                let member_inline_size =
12695                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12696                if inlined != (member_inline_size <= 4) {
12697                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12698                }
12699                let inner_offset;
12700                let mut inner_depth = depth.clone();
12701                if inlined {
12702                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12703                    inner_offset = next_offset;
12704                } else {
12705                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12706                    inner_depth.increment()?;
12707                }
12708                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
12709                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12710                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12711                {
12712                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12713                }
12714                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12715                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12716                }
12717            }
12718
12719            next_offset += envelope_size;
12720            _next_ordinal_to_read += 1;
12721            if next_offset >= end_offset {
12722                return Ok(());
12723            }
12724
12725            // Decode unknown envelopes for gaps in ordinals.
12726            while _next_ordinal_to_read < 3 {
12727                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12728                _next_ordinal_to_read += 1;
12729                next_offset += envelope_size;
12730            }
12731
12732            let next_out_of_line = decoder.next_out_of_line();
12733            let handles_before = decoder.remaining_handles();
12734            if let Some((inlined, num_bytes, num_handles)) =
12735                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12736            {
12737                let member_inline_size =
12738                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12739                if inlined != (member_inline_size <= 4) {
12740                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12741                }
12742                let inner_offset;
12743                let mut inner_depth = depth.clone();
12744                if inlined {
12745                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12746                    inner_offset = next_offset;
12747                } else {
12748                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12749                    inner_depth.increment()?;
12750                }
12751                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
12752                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
12753                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12754                {
12755                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12756                }
12757                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12758                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12759                }
12760            }
12761
12762            next_offset += envelope_size;
12763            _next_ordinal_to_read += 1;
12764            if next_offset >= end_offset {
12765                return Ok(());
12766            }
12767
12768            // Decode unknown envelopes for gaps in ordinals.
12769            while _next_ordinal_to_read < 4 {
12770                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12771                _next_ordinal_to_read += 1;
12772                next_offset += envelope_size;
12773            }
12774
12775            let next_out_of_line = decoder.next_out_of_line();
12776            let handles_before = decoder.remaining_handles();
12777            if let Some((inlined, num_bytes, num_handles)) =
12778                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12779            {
12780                let member_inline_size =
12781                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12782                if inlined != (member_inline_size <= 4) {
12783                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12784                }
12785                let inner_offset;
12786                let mut inner_depth = depth.clone();
12787                if inlined {
12788                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12789                    inner_offset = next_offset;
12790                } else {
12791                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12792                    inner_depth.increment()?;
12793                }
12794                let val_ref = self
12795                    .advertising_data
12796                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
12797                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
12798                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12799                {
12800                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12801                }
12802                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12803                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12804                }
12805            }
12806
12807            next_offset += envelope_size;
12808            _next_ordinal_to_read += 1;
12809            if next_offset >= end_offset {
12810                return Ok(());
12811            }
12812
12813            // Decode unknown envelopes for gaps in ordinals.
12814            while _next_ordinal_to_read < 5 {
12815                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12816                _next_ordinal_to_read += 1;
12817                next_offset += envelope_size;
12818            }
12819
12820            let next_out_of_line = decoder.next_out_of_line();
12821            let handles_before = decoder.remaining_handles();
12822            if let Some((inlined, num_bytes, num_handles)) =
12823                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12824            {
12825                let member_inline_size =
12826                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
12827                        decoder.context,
12828                    );
12829                if inlined != (member_inline_size <= 4) {
12830                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12831                }
12832                let inner_offset;
12833                let mut inner_depth = depth.clone();
12834                if inlined {
12835                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12836                    inner_offset = next_offset;
12837                } else {
12838                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12839                    inner_depth.increment()?;
12840                }
12841                let val_ref = self
12842                    .name
12843                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
12844                fidl::decode!(
12845                    fidl::encoding::BoundedString<248>,
12846                    D,
12847                    val_ref,
12848                    decoder,
12849                    inner_offset,
12850                    inner_depth
12851                )?;
12852                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12853                {
12854                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12855                }
12856                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12857                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12858                }
12859            }
12860
12861            next_offset += envelope_size;
12862            _next_ordinal_to_read += 1;
12863            if next_offset >= end_offset {
12864                return Ok(());
12865            }
12866
12867            // Decode unknown envelopes for gaps in ordinals.
12868            while _next_ordinal_to_read < 6 {
12869                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12870                _next_ordinal_to_read += 1;
12871                next_offset += envelope_size;
12872            }
12873
12874            let next_out_of_line = decoder.next_out_of_line();
12875            let handles_before = decoder.remaining_handles();
12876            if let Some((inlined, num_bytes, num_handles)) =
12877                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12878            {
12879                let member_inline_size =
12880                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12881                if inlined != (member_inline_size <= 4) {
12882                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12883                }
12884                let inner_offset;
12885                let mut inner_depth = depth.clone();
12886                if inlined {
12887                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12888                    inner_offset = next_offset;
12889                } else {
12890                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12891                    inner_depth.increment()?;
12892                }
12893                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
12894                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
12895                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12896                {
12897                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12898                }
12899                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12900                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12901                }
12902            }
12903
12904            next_offset += envelope_size;
12905            _next_ordinal_to_read += 1;
12906            if next_offset >= end_offset {
12907                return Ok(());
12908            }
12909
12910            // Decode unknown envelopes for gaps in ordinals.
12911            while _next_ordinal_to_read < 7 {
12912                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12913                _next_ordinal_to_read += 1;
12914                next_offset += envelope_size;
12915            }
12916
12917            let next_out_of_line = decoder.next_out_of_line();
12918            let handles_before = decoder.remaining_handles();
12919            if let Some((inlined, num_bytes, num_handles)) =
12920                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12921            {
12922                let member_inline_size =
12923                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12924                if inlined != (member_inline_size <= 4) {
12925                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12926                }
12927                let inner_offset;
12928                let mut inner_depth = depth.clone();
12929                if inlined {
12930                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12931                    inner_offset = next_offset;
12932                } else {
12933                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12934                    inner_depth.increment()?;
12935                }
12936                let val_ref = self.bonded.get_or_insert_with(|| fidl::new_empty!(bool, D));
12937                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12938                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12939                {
12940                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12941                }
12942                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12943                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12944                }
12945            }
12946
12947            next_offset += envelope_size;
12948            _next_ordinal_to_read += 1;
12949            if next_offset >= end_offset {
12950                return Ok(());
12951            }
12952
12953            // Decode unknown envelopes for gaps in ordinals.
12954            while _next_ordinal_to_read < 8 {
12955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12956                _next_ordinal_to_read += 1;
12957                next_offset += envelope_size;
12958            }
12959
12960            let next_out_of_line = decoder.next_out_of_line();
12961            let handles_before = decoder.remaining_handles();
12962            if let Some((inlined, num_bytes, num_handles)) =
12963                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12964            {
12965                let member_inline_size =
12966                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12967                if inlined != (member_inline_size <= 4) {
12968                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12969                }
12970                let inner_offset;
12971                let mut inner_depth = depth.clone();
12972                if inlined {
12973                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12974                    inner_offset = next_offset;
12975                } else {
12976                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12977                    inner_depth.increment()?;
12978                }
12979                let val_ref = self.last_updated.get_or_insert_with(|| fidl::new_empty!(i64, D));
12980                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12981                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12982                {
12983                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12984                }
12985                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12986                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12987                }
12988            }
12989
12990            next_offset += envelope_size;
12991            _next_ordinal_to_read += 1;
12992            if next_offset >= end_offset {
12993                return Ok(());
12994            }
12995
12996            // Decode unknown envelopes for gaps in ordinals.
12997            while _next_ordinal_to_read < 9 {
12998                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12999                _next_ordinal_to_read += 1;
13000                next_offset += envelope_size;
13001            }
13002
13003            let next_out_of_line = decoder.next_out_of_line();
13004            let handles_before = decoder.remaining_handles();
13005            if let Some((inlined, num_bytes, num_handles)) =
13006                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13007            {
13008                let member_inline_size =
13009                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13010                if inlined != (member_inline_size <= 4) {
13011                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13012                }
13013                let inner_offset;
13014                let mut inner_depth = depth.clone();
13015                if inlined {
13016                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13017                    inner_offset = next_offset;
13018                } else {
13019                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13020                    inner_depth.increment()?;
13021                }
13022                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
13023                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13024                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13025                {
13026                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13027                }
13028                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13029                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13030                }
13031            }
13032
13033            next_offset += envelope_size;
13034            _next_ordinal_to_read += 1;
13035            if next_offset >= end_offset {
13036                return Ok(());
13037            }
13038
13039            // Decode unknown envelopes for gaps in ordinals.
13040            while _next_ordinal_to_read < 10 {
13041                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13042                _next_ordinal_to_read += 1;
13043                next_offset += envelope_size;
13044            }
13045
13046            let next_out_of_line = decoder.next_out_of_line();
13047            let handles_before = decoder.remaining_handles();
13048            if let Some((inlined, num_bytes, num_handles)) =
13049                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13050            {
13051                let member_inline_size =
13052                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13053                if inlined != (member_inline_size <= 4) {
13054                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13055                }
13056                let inner_offset;
13057                let mut inner_depth = depth.clone();
13058                if inlined {
13059                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13060                    inner_offset = next_offset;
13061                } else {
13062                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13063                    inner_depth.increment()?;
13064                }
13065                let val_ref = self
13066                    .periodic_advertising_interval
13067                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
13068                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13069                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13070                {
13071                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13072                }
13073                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13074                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13075                }
13076            }
13077
13078            next_offset += envelope_size;
13079
13080            // Decode the remaining unknown envelopes.
13081            while next_offset < end_offset {
13082                _next_ordinal_to_read += 1;
13083                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13084                next_offset += envelope_size;
13085            }
13086
13087            Ok(())
13088        }
13089    }
13090
13091    impl PeriodicAdvertisingReport {
13092        #[inline(always)]
13093        fn max_ordinal_present(&self) -> u64 {
13094            if let Some(_) = self.timestamp {
13095                return 5;
13096            }
13097            if let Some(_) = self.subevent {
13098                return 4;
13099            }
13100            if let Some(_) = self.event_counter {
13101                return 3;
13102            }
13103            if let Some(_) = self.data {
13104                return 2;
13105            }
13106            if let Some(_) = self.rssi {
13107                return 1;
13108            }
13109            0
13110        }
13111    }
13112
13113    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingReport {
13114        type Borrowed<'a> = &'a Self;
13115        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13116            value
13117        }
13118    }
13119
13120    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingReport {
13121        type Owned = Self;
13122
13123        #[inline(always)]
13124        fn inline_align(_context: fidl::encoding::Context) -> usize {
13125            8
13126        }
13127
13128        #[inline(always)]
13129        fn inline_size(_context: fidl::encoding::Context) -> usize {
13130            16
13131        }
13132    }
13133
13134    unsafe impl<D: fidl::encoding::ResourceDialect>
13135        fidl::encoding::Encode<PeriodicAdvertisingReport, D> for &PeriodicAdvertisingReport
13136    {
13137        unsafe fn encode(
13138            self,
13139            encoder: &mut fidl::encoding::Encoder<'_, D>,
13140            offset: usize,
13141            mut depth: fidl::encoding::Depth,
13142        ) -> fidl::Result<()> {
13143            encoder.debug_check_bounds::<PeriodicAdvertisingReport>(offset);
13144            // Vector header
13145            let max_ordinal: u64 = self.max_ordinal_present();
13146            encoder.write_num(max_ordinal, offset);
13147            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13148            // Calling encoder.out_of_line_offset(0) is not allowed.
13149            if max_ordinal == 0 {
13150                return Ok(());
13151            }
13152            depth.increment()?;
13153            let envelope_size = 8;
13154            let bytes_len = max_ordinal as usize * envelope_size;
13155            #[allow(unused_variables)]
13156            let offset = encoder.out_of_line_offset(bytes_len);
13157            let mut _prev_end_offset: usize = 0;
13158            if 1 > max_ordinal {
13159                return Ok(());
13160            }
13161
13162            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13163            // are envelope_size bytes.
13164            let cur_offset: usize = (1 - 1) * envelope_size;
13165
13166            // Zero reserved fields.
13167            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13168
13169            // Safety:
13170            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13171            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13172            //   envelope_size bytes, there is always sufficient room.
13173            fidl::encoding::encode_in_envelope_optional::<i8, D>(
13174                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13175                encoder,
13176                offset + cur_offset,
13177                depth,
13178            )?;
13179
13180            _prev_end_offset = cur_offset + envelope_size;
13181            if 2 > max_ordinal {
13182                return Ok(());
13183            }
13184
13185            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13186            // are envelope_size bytes.
13187            let cur_offset: usize = (2 - 1) * envelope_size;
13188
13189            // Zero reserved fields.
13190            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13191
13192            // Safety:
13193            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13194            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13195            //   envelope_size bytes, there is always sufficient room.
13196            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
13197                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
13198                encoder,
13199                offset + cur_offset,
13200                depth,
13201            )?;
13202
13203            _prev_end_offset = cur_offset + envelope_size;
13204            if 3 > max_ordinal {
13205                return Ok(());
13206            }
13207
13208            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13209            // are envelope_size bytes.
13210            let cur_offset: usize = (3 - 1) * envelope_size;
13211
13212            // Zero reserved fields.
13213            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13214
13215            // Safety:
13216            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13217            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13218            //   envelope_size bytes, there is always sufficient room.
13219            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13220                self.event_counter.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13221                encoder,
13222                offset + cur_offset,
13223                depth,
13224            )?;
13225
13226            _prev_end_offset = cur_offset + envelope_size;
13227            if 4 > max_ordinal {
13228                return Ok(());
13229            }
13230
13231            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13232            // are envelope_size bytes.
13233            let cur_offset: usize = (4 - 1) * envelope_size;
13234
13235            // Zero reserved fields.
13236            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13237
13238            // Safety:
13239            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13240            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13241            //   envelope_size bytes, there is always sufficient room.
13242            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13243                self.subevent.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13244                encoder,
13245                offset + cur_offset,
13246                depth,
13247            )?;
13248
13249            _prev_end_offset = cur_offset + envelope_size;
13250            if 5 > max_ordinal {
13251                return Ok(());
13252            }
13253
13254            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13255            // are envelope_size bytes.
13256            let cur_offset: usize = (5 - 1) * envelope_size;
13257
13258            // Zero reserved fields.
13259            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13260
13261            // Safety:
13262            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13263            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13264            //   envelope_size bytes, there is always sufficient room.
13265            fidl::encoding::encode_in_envelope_optional::<i64, D>(
13266                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13267                encoder,
13268                offset + cur_offset,
13269                depth,
13270            )?;
13271
13272            _prev_end_offset = cur_offset + envelope_size;
13273
13274            Ok(())
13275        }
13276    }
13277
13278    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13279        for PeriodicAdvertisingReport
13280    {
13281        #[inline(always)]
13282        fn new_empty() -> Self {
13283            Self::default()
13284        }
13285
13286        unsafe fn decode(
13287            &mut self,
13288            decoder: &mut fidl::encoding::Decoder<'_, D>,
13289            offset: usize,
13290            mut depth: fidl::encoding::Depth,
13291        ) -> fidl::Result<()> {
13292            decoder.debug_check_bounds::<Self>(offset);
13293            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13294                None => return Err(fidl::Error::NotNullable),
13295                Some(len) => len,
13296            };
13297            // Calling decoder.out_of_line_offset(0) is not allowed.
13298            if len == 0 {
13299                return Ok(());
13300            };
13301            depth.increment()?;
13302            let envelope_size = 8;
13303            let bytes_len = len * envelope_size;
13304            let offset = decoder.out_of_line_offset(bytes_len)?;
13305            // Decode the envelope for each type.
13306            let mut _next_ordinal_to_read = 0;
13307            let mut next_offset = offset;
13308            let end_offset = offset + bytes_len;
13309            _next_ordinal_to_read += 1;
13310            if next_offset >= end_offset {
13311                return Ok(());
13312            }
13313
13314            // Decode unknown envelopes for gaps in ordinals.
13315            while _next_ordinal_to_read < 1 {
13316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13317                _next_ordinal_to_read += 1;
13318                next_offset += envelope_size;
13319            }
13320
13321            let next_out_of_line = decoder.next_out_of_line();
13322            let handles_before = decoder.remaining_handles();
13323            if let Some((inlined, num_bytes, num_handles)) =
13324                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13325            {
13326                let member_inline_size =
13327                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13328                if inlined != (member_inline_size <= 4) {
13329                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13330                }
13331                let inner_offset;
13332                let mut inner_depth = depth.clone();
13333                if inlined {
13334                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13335                    inner_offset = next_offset;
13336                } else {
13337                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13338                    inner_depth.increment()?;
13339                }
13340                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13341                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13342                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13343                {
13344                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13345                }
13346                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13347                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13348                }
13349            }
13350
13351            next_offset += envelope_size;
13352            _next_ordinal_to_read += 1;
13353            if next_offset >= end_offset {
13354                return Ok(());
13355            }
13356
13357            // Decode unknown envelopes for gaps in ordinals.
13358            while _next_ordinal_to_read < 2 {
13359                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13360                _next_ordinal_to_read += 1;
13361                next_offset += envelope_size;
13362            }
13363
13364            let next_out_of_line = decoder.next_out_of_line();
13365            let handles_before = decoder.remaining_handles();
13366            if let Some((inlined, num_bytes, num_handles)) =
13367                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13368            {
13369                let member_inline_size =
13370                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13371                if inlined != (member_inline_size <= 4) {
13372                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13373                }
13374                let inner_offset;
13375                let mut inner_depth = depth.clone();
13376                if inlined {
13377                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13378                    inner_offset = next_offset;
13379                } else {
13380                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13381                    inner_depth.increment()?;
13382                }
13383                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13384                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13385                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13386                {
13387                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13388                }
13389                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13390                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13391                }
13392            }
13393
13394            next_offset += envelope_size;
13395            _next_ordinal_to_read += 1;
13396            if next_offset >= end_offset {
13397                return Ok(());
13398            }
13399
13400            // Decode unknown envelopes for gaps in ordinals.
13401            while _next_ordinal_to_read < 3 {
13402                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13403                _next_ordinal_to_read += 1;
13404                next_offset += envelope_size;
13405            }
13406
13407            let next_out_of_line = decoder.next_out_of_line();
13408            let handles_before = decoder.remaining_handles();
13409            if let Some((inlined, num_bytes, num_handles)) =
13410                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13411            {
13412                let member_inline_size =
13413                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13414                if inlined != (member_inline_size <= 4) {
13415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13416                }
13417                let inner_offset;
13418                let mut inner_depth = depth.clone();
13419                if inlined {
13420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13421                    inner_offset = next_offset;
13422                } else {
13423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13424                    inner_depth.increment()?;
13425                }
13426                let val_ref = self.event_counter.get_or_insert_with(|| fidl::new_empty!(u16, D));
13427                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13428                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13429                {
13430                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13431                }
13432                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13433                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13434                }
13435            }
13436
13437            next_offset += envelope_size;
13438            _next_ordinal_to_read += 1;
13439            if next_offset >= end_offset {
13440                return Ok(());
13441            }
13442
13443            // Decode unknown envelopes for gaps in ordinals.
13444            while _next_ordinal_to_read < 4 {
13445                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13446                _next_ordinal_to_read += 1;
13447                next_offset += envelope_size;
13448            }
13449
13450            let next_out_of_line = decoder.next_out_of_line();
13451            let handles_before = decoder.remaining_handles();
13452            if let Some((inlined, num_bytes, num_handles)) =
13453                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13454            {
13455                let member_inline_size =
13456                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13457                if inlined != (member_inline_size <= 4) {
13458                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13459                }
13460                let inner_offset;
13461                let mut inner_depth = depth.clone();
13462                if inlined {
13463                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13464                    inner_offset = next_offset;
13465                } else {
13466                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13467                    inner_depth.increment()?;
13468                }
13469                let val_ref = self.subevent.get_or_insert_with(|| fidl::new_empty!(u8, D));
13470                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13471                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13472                {
13473                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13474                }
13475                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13476                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13477                }
13478            }
13479
13480            next_offset += envelope_size;
13481            _next_ordinal_to_read += 1;
13482            if next_offset >= end_offset {
13483                return Ok(());
13484            }
13485
13486            // Decode unknown envelopes for gaps in ordinals.
13487            while _next_ordinal_to_read < 5 {
13488                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13489                _next_ordinal_to_read += 1;
13490                next_offset += envelope_size;
13491            }
13492
13493            let next_out_of_line = decoder.next_out_of_line();
13494            let handles_before = decoder.remaining_handles();
13495            if let Some((inlined, num_bytes, num_handles)) =
13496                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13497            {
13498                let member_inline_size =
13499                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13500                if inlined != (member_inline_size <= 4) {
13501                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13502                }
13503                let inner_offset;
13504                let mut inner_depth = depth.clone();
13505                if inlined {
13506                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13507                    inner_offset = next_offset;
13508                } else {
13509                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13510                    inner_depth.increment()?;
13511                }
13512                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13513                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13514                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13515                {
13516                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13517                }
13518                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13519                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13520                }
13521            }
13522
13523            next_offset += envelope_size;
13524
13525            // Decode the remaining unknown envelopes.
13526            while next_offset < end_offset {
13527                _next_ordinal_to_read += 1;
13528                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13529                next_offset += envelope_size;
13530            }
13531
13532            Ok(())
13533        }
13534    }
13535
13536    impl PeriodicAdvertisingSyncConfiguration {
13537        #[inline(always)]
13538        fn max_ordinal_present(&self) -> u64 {
13539            if let Some(_) = self.filter_duplicates {
13540                return 1;
13541            }
13542            0
13543        }
13544    }
13545
13546    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncConfiguration {
13547        type Borrowed<'a> = &'a Self;
13548        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13549            value
13550        }
13551    }
13552
13553    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncConfiguration {
13554        type Owned = Self;
13555
13556        #[inline(always)]
13557        fn inline_align(_context: fidl::encoding::Context) -> usize {
13558            8
13559        }
13560
13561        #[inline(always)]
13562        fn inline_size(_context: fidl::encoding::Context) -> usize {
13563            16
13564        }
13565    }
13566
13567    unsafe impl<D: fidl::encoding::ResourceDialect>
13568        fidl::encoding::Encode<PeriodicAdvertisingSyncConfiguration, D>
13569        for &PeriodicAdvertisingSyncConfiguration
13570    {
13571        unsafe fn encode(
13572            self,
13573            encoder: &mut fidl::encoding::Encoder<'_, D>,
13574            offset: usize,
13575            mut depth: fidl::encoding::Depth,
13576        ) -> fidl::Result<()> {
13577            encoder.debug_check_bounds::<PeriodicAdvertisingSyncConfiguration>(offset);
13578            // Vector header
13579            let max_ordinal: u64 = self.max_ordinal_present();
13580            encoder.write_num(max_ordinal, offset);
13581            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13582            // Calling encoder.out_of_line_offset(0) is not allowed.
13583            if max_ordinal == 0 {
13584                return Ok(());
13585            }
13586            depth.increment()?;
13587            let envelope_size = 8;
13588            let bytes_len = max_ordinal as usize * envelope_size;
13589            #[allow(unused_variables)]
13590            let offset = encoder.out_of_line_offset(bytes_len);
13591            let mut _prev_end_offset: usize = 0;
13592            if 1 > 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 = (1 - 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::<bool, D>(
13608                self.filter_duplicates
13609                    .as_ref()
13610                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13611                encoder,
13612                offset + cur_offset,
13613                depth,
13614            )?;
13615
13616            _prev_end_offset = cur_offset + envelope_size;
13617
13618            Ok(())
13619        }
13620    }
13621
13622    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13623        for PeriodicAdvertisingSyncConfiguration
13624    {
13625        #[inline(always)]
13626        fn new_empty() -> Self {
13627            Self::default()
13628        }
13629
13630        unsafe fn decode(
13631            &mut self,
13632            decoder: &mut fidl::encoding::Decoder<'_, D>,
13633            offset: usize,
13634            mut depth: fidl::encoding::Depth,
13635        ) -> fidl::Result<()> {
13636            decoder.debug_check_bounds::<Self>(offset);
13637            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13638                None => return Err(fidl::Error::NotNullable),
13639                Some(len) => len,
13640            };
13641            // Calling decoder.out_of_line_offset(0) is not allowed.
13642            if len == 0 {
13643                return Ok(());
13644            };
13645            depth.increment()?;
13646            let envelope_size = 8;
13647            let bytes_len = len * envelope_size;
13648            let offset = decoder.out_of_line_offset(bytes_len)?;
13649            // Decode the envelope for each type.
13650            let mut _next_ordinal_to_read = 0;
13651            let mut next_offset = offset;
13652            let end_offset = offset + bytes_len;
13653            _next_ordinal_to_read += 1;
13654            if next_offset >= end_offset {
13655                return Ok(());
13656            }
13657
13658            // Decode unknown envelopes for gaps in ordinals.
13659            while _next_ordinal_to_read < 1 {
13660                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13661                _next_ordinal_to_read += 1;
13662                next_offset += envelope_size;
13663            }
13664
13665            let next_out_of_line = decoder.next_out_of_line();
13666            let handles_before = decoder.remaining_handles();
13667            if let Some((inlined, num_bytes, num_handles)) =
13668                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13669            {
13670                let member_inline_size =
13671                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13672                if inlined != (member_inline_size <= 4) {
13673                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13674                }
13675                let inner_offset;
13676                let mut inner_depth = depth.clone();
13677                if inlined {
13678                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13679                    inner_offset = next_offset;
13680                } else {
13681                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13682                    inner_depth.increment()?;
13683                }
13684                let val_ref =
13685                    self.filter_duplicates.get_or_insert_with(|| fidl::new_empty!(bool, D));
13686                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13687                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13688                {
13689                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13690                }
13691                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13692                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13693                }
13694            }
13695
13696            next_offset += envelope_size;
13697
13698            // Decode the remaining unknown envelopes.
13699            while next_offset < end_offset {
13700                _next_ordinal_to_read += 1;
13701                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13702                next_offset += envelope_size;
13703            }
13704
13705            Ok(())
13706        }
13707    }
13708
13709    impl PeriodicAdvertisingSyncOnEstablishedRequest {
13710        #[inline(always)]
13711        fn max_ordinal_present(&self) -> u64 {
13712            if let Some(_) = self.periodic_advertising_interval {
13713                return 7;
13714            }
13715            if let Some(_) = self.phy {
13716                return 6;
13717            }
13718            if let Some(_) = self.advertising_sid {
13719                return 5;
13720            }
13721            if let Some(_) = self.service_data {
13722                return 4;
13723            }
13724            if let Some(_) = self.peer_id {
13725                return 3;
13726            }
13727            if let Some(_) = self.subevents_count {
13728                return 2;
13729            }
13730            if let Some(_) = self.id {
13731                return 1;
13732            }
13733            0
13734        }
13735    }
13736
13737    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
13738        type Borrowed<'a> = &'a Self;
13739        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13740            value
13741        }
13742    }
13743
13744    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
13745        type Owned = Self;
13746
13747        #[inline(always)]
13748        fn inline_align(_context: fidl::encoding::Context) -> usize {
13749            8
13750        }
13751
13752        #[inline(always)]
13753        fn inline_size(_context: fidl::encoding::Context) -> usize {
13754            16
13755        }
13756    }
13757
13758    unsafe impl<D: fidl::encoding::ResourceDialect>
13759        fidl::encoding::Encode<PeriodicAdvertisingSyncOnEstablishedRequest, D>
13760        for &PeriodicAdvertisingSyncOnEstablishedRequest
13761    {
13762        unsafe fn encode(
13763            self,
13764            encoder: &mut fidl::encoding::Encoder<'_, D>,
13765            offset: usize,
13766            mut depth: fidl::encoding::Depth,
13767        ) -> fidl::Result<()> {
13768            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnEstablishedRequest>(offset);
13769            // Vector header
13770            let max_ordinal: u64 = self.max_ordinal_present();
13771            encoder.write_num(max_ordinal, offset);
13772            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13773            // Calling encoder.out_of_line_offset(0) is not allowed.
13774            if max_ordinal == 0 {
13775                return Ok(());
13776            }
13777            depth.increment()?;
13778            let envelope_size = 8;
13779            let bytes_len = max_ordinal as usize * envelope_size;
13780            #[allow(unused_variables)]
13781            let offset = encoder.out_of_line_offset(bytes_len);
13782            let mut _prev_end_offset: usize = 0;
13783            if 1 > max_ordinal {
13784                return Ok(());
13785            }
13786
13787            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13788            // are envelope_size bytes.
13789            let cur_offset: usize = (1 - 1) * envelope_size;
13790
13791            // Zero reserved fields.
13792            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13793
13794            // Safety:
13795            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13796            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13797            //   envelope_size bytes, there is always sufficient room.
13798            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
13799                self.id
13800                    .as_ref()
13801                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
13802                encoder,
13803                offset + cur_offset,
13804                depth,
13805            )?;
13806
13807            _prev_end_offset = cur_offset + envelope_size;
13808            if 2 > max_ordinal {
13809                return Ok(());
13810            }
13811
13812            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13813            // are envelope_size bytes.
13814            let cur_offset: usize = (2 - 1) * envelope_size;
13815
13816            // Zero reserved fields.
13817            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13818
13819            // Safety:
13820            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13821            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13822            //   envelope_size bytes, there is always sufficient room.
13823            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13824                self.subevents_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13825                encoder,
13826                offset + cur_offset,
13827                depth,
13828            )?;
13829
13830            _prev_end_offset = cur_offset + envelope_size;
13831            if 3 > max_ordinal {
13832                return Ok(());
13833            }
13834
13835            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13836            // are envelope_size bytes.
13837            let cur_offset: usize = (3 - 1) * envelope_size;
13838
13839            // Zero reserved fields.
13840            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13841
13842            // Safety:
13843            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13844            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13845            //   envelope_size bytes, there is always sufficient room.
13846            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
13847            self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
13848            encoder, offset + cur_offset, depth
13849        )?;
13850
13851            _prev_end_offset = cur_offset + envelope_size;
13852            if 4 > max_ordinal {
13853                return Ok(());
13854            }
13855
13856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13857            // are envelope_size bytes.
13858            let cur_offset: usize = (4 - 1) * envelope_size;
13859
13860            // Zero reserved fields.
13861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13862
13863            // Safety:
13864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13866            //   envelope_size bytes, there is always sufficient room.
13867            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13868                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13869                encoder,
13870                offset + cur_offset,
13871                depth,
13872            )?;
13873
13874            _prev_end_offset = cur_offset + envelope_size;
13875            if 5 > max_ordinal {
13876                return Ok(());
13877            }
13878
13879            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13880            // are envelope_size bytes.
13881            let cur_offset: usize = (5 - 1) * envelope_size;
13882
13883            // Zero reserved fields.
13884            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13885
13886            // Safety:
13887            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13888            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13889            //   envelope_size bytes, there is always sufficient room.
13890            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13891                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13892                encoder,
13893                offset + cur_offset,
13894                depth,
13895            )?;
13896
13897            _prev_end_offset = cur_offset + envelope_size;
13898            if 6 > max_ordinal {
13899                return Ok(());
13900            }
13901
13902            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13903            // are envelope_size bytes.
13904            let cur_offset: usize = (6 - 1) * envelope_size;
13905
13906            // Zero reserved fields.
13907            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13908
13909            // Safety:
13910            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13911            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13912            //   envelope_size bytes, there is always sufficient room.
13913            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
13914                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
13915                encoder,
13916                offset + cur_offset,
13917                depth,
13918            )?;
13919
13920            _prev_end_offset = cur_offset + envelope_size;
13921            if 7 > max_ordinal {
13922                return Ok(());
13923            }
13924
13925            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13926            // are envelope_size bytes.
13927            let cur_offset: usize = (7 - 1) * envelope_size;
13928
13929            // Zero reserved fields.
13930            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13931
13932            // Safety:
13933            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13934            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13935            //   envelope_size bytes, there is always sufficient room.
13936            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13937                self.periodic_advertising_interval
13938                    .as_ref()
13939                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13940                encoder,
13941                offset + cur_offset,
13942                depth,
13943            )?;
13944
13945            _prev_end_offset = cur_offset + envelope_size;
13946
13947            Ok(())
13948        }
13949    }
13950
13951    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13952        for PeriodicAdvertisingSyncOnEstablishedRequest
13953    {
13954        #[inline(always)]
13955        fn new_empty() -> Self {
13956            Self::default()
13957        }
13958
13959        unsafe fn decode(
13960            &mut self,
13961            decoder: &mut fidl::encoding::Decoder<'_, D>,
13962            offset: usize,
13963            mut depth: fidl::encoding::Depth,
13964        ) -> fidl::Result<()> {
13965            decoder.debug_check_bounds::<Self>(offset);
13966            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13967                None => return Err(fidl::Error::NotNullable),
13968                Some(len) => len,
13969            };
13970            // Calling decoder.out_of_line_offset(0) is not allowed.
13971            if len == 0 {
13972                return Ok(());
13973            };
13974            depth.increment()?;
13975            let envelope_size = 8;
13976            let bytes_len = len * envelope_size;
13977            let offset = decoder.out_of_line_offset(bytes_len)?;
13978            // Decode the envelope for each type.
13979            let mut _next_ordinal_to_read = 0;
13980            let mut next_offset = offset;
13981            let end_offset = offset + bytes_len;
13982            _next_ordinal_to_read += 1;
13983            if next_offset >= end_offset {
13984                return Ok(());
13985            }
13986
13987            // Decode unknown envelopes for gaps in ordinals.
13988            while _next_ordinal_to_read < 1 {
13989                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13990                _next_ordinal_to_read += 1;
13991                next_offset += envelope_size;
13992            }
13993
13994            let next_out_of_line = decoder.next_out_of_line();
13995            let handles_before = decoder.remaining_handles();
13996            if let Some((inlined, num_bytes, num_handles)) =
13997                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13998            {
13999                let member_inline_size =
14000                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
14001                        decoder.context,
14002                    );
14003                if inlined != (member_inline_size <= 4) {
14004                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14005                }
14006                let inner_offset;
14007                let mut inner_depth = depth.clone();
14008                if inlined {
14009                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14010                    inner_offset = next_offset;
14011                } else {
14012                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14013                    inner_depth.increment()?;
14014                }
14015                let val_ref =
14016                    self.id.get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
14017                fidl::decode!(
14018                    PeriodicAdvertisingSyncId,
14019                    D,
14020                    val_ref,
14021                    decoder,
14022                    inner_offset,
14023                    inner_depth
14024                )?;
14025                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14026                {
14027                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14028                }
14029                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14030                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14031                }
14032            }
14033
14034            next_offset += envelope_size;
14035            _next_ordinal_to_read += 1;
14036            if next_offset >= end_offset {
14037                return Ok(());
14038            }
14039
14040            // Decode unknown envelopes for gaps in ordinals.
14041            while _next_ordinal_to_read < 2 {
14042                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14043                _next_ordinal_to_read += 1;
14044                next_offset += envelope_size;
14045            }
14046
14047            let next_out_of_line = decoder.next_out_of_line();
14048            let handles_before = decoder.remaining_handles();
14049            if let Some((inlined, num_bytes, num_handles)) =
14050                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14051            {
14052                let member_inline_size =
14053                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14054                if inlined != (member_inline_size <= 4) {
14055                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14056                }
14057                let inner_offset;
14058                let mut inner_depth = depth.clone();
14059                if inlined {
14060                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14061                    inner_offset = next_offset;
14062                } else {
14063                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14064                    inner_depth.increment()?;
14065                }
14066                let val_ref = self.subevents_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
14067                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14068                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14069                {
14070                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14071                }
14072                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14073                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14074                }
14075            }
14076
14077            next_offset += envelope_size;
14078            _next_ordinal_to_read += 1;
14079            if next_offset >= end_offset {
14080                return Ok(());
14081            }
14082
14083            // Decode unknown envelopes for gaps in ordinals.
14084            while _next_ordinal_to_read < 3 {
14085                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14086                _next_ordinal_to_read += 1;
14087                next_offset += envelope_size;
14088            }
14089
14090            let next_out_of_line = decoder.next_out_of_line();
14091            let handles_before = decoder.remaining_handles();
14092            if let Some((inlined, num_bytes, num_handles)) =
14093                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14094            {
14095                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14096                if inlined != (member_inline_size <= 4) {
14097                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14098                }
14099                let inner_offset;
14100                let mut inner_depth = depth.clone();
14101                if inlined {
14102                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14103                    inner_offset = next_offset;
14104                } else {
14105                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14106                    inner_depth.increment()?;
14107                }
14108                let val_ref = self.peer_id.get_or_insert_with(|| {
14109                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
14110                });
14111                fidl::decode!(
14112                    fidl_fuchsia_bluetooth__common::PeerId,
14113                    D,
14114                    val_ref,
14115                    decoder,
14116                    inner_offset,
14117                    inner_depth
14118                )?;
14119                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14120                {
14121                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14122                }
14123                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14124                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14125                }
14126            }
14127
14128            next_offset += envelope_size;
14129            _next_ordinal_to_read += 1;
14130            if next_offset >= end_offset {
14131                return Ok(());
14132            }
14133
14134            // Decode unknown envelopes for gaps in ordinals.
14135            while _next_ordinal_to_read < 4 {
14136                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14137                _next_ordinal_to_read += 1;
14138                next_offset += envelope_size;
14139            }
14140
14141            let next_out_of_line = decoder.next_out_of_line();
14142            let handles_before = decoder.remaining_handles();
14143            if let Some((inlined, num_bytes, num_handles)) =
14144                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14145            {
14146                let member_inline_size =
14147                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14148                if inlined != (member_inline_size <= 4) {
14149                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14150                }
14151                let inner_offset;
14152                let mut inner_depth = depth.clone();
14153                if inlined {
14154                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14155                    inner_offset = next_offset;
14156                } else {
14157                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14158                    inner_depth.increment()?;
14159                }
14160                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
14161                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14162                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14163                {
14164                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14165                }
14166                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14167                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14168                }
14169            }
14170
14171            next_offset += envelope_size;
14172            _next_ordinal_to_read += 1;
14173            if next_offset >= end_offset {
14174                return Ok(());
14175            }
14176
14177            // Decode unknown envelopes for gaps in ordinals.
14178            while _next_ordinal_to_read < 5 {
14179                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14180                _next_ordinal_to_read += 1;
14181                next_offset += envelope_size;
14182            }
14183
14184            let next_out_of_line = decoder.next_out_of_line();
14185            let handles_before = decoder.remaining_handles();
14186            if let Some((inlined, num_bytes, num_handles)) =
14187                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14188            {
14189                let member_inline_size =
14190                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14191                if inlined != (member_inline_size <= 4) {
14192                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14193                }
14194                let inner_offset;
14195                let mut inner_depth = depth.clone();
14196                if inlined {
14197                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14198                    inner_offset = next_offset;
14199                } else {
14200                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14201                    inner_depth.increment()?;
14202                }
14203                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
14204                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14205                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14206                {
14207                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14208                }
14209                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14210                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14211                }
14212            }
14213
14214            next_offset += envelope_size;
14215            _next_ordinal_to_read += 1;
14216            if next_offset >= end_offset {
14217                return Ok(());
14218            }
14219
14220            // Decode unknown envelopes for gaps in ordinals.
14221            while _next_ordinal_to_read < 6 {
14222                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14223                _next_ordinal_to_read += 1;
14224                next_offset += envelope_size;
14225            }
14226
14227            let next_out_of_line = decoder.next_out_of_line();
14228            let handles_before = decoder.remaining_handles();
14229            if let Some((inlined, num_bytes, num_handles)) =
14230                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14231            {
14232                let member_inline_size =
14233                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14234                if inlined != (member_inline_size <= 4) {
14235                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14236                }
14237                let inner_offset;
14238                let mut inner_depth = depth.clone();
14239                if inlined {
14240                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14241                    inner_offset = next_offset;
14242                } else {
14243                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14244                    inner_depth.increment()?;
14245                }
14246                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
14247                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
14248                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14249                {
14250                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14251                }
14252                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14253                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14254                }
14255            }
14256
14257            next_offset += envelope_size;
14258            _next_ordinal_to_read += 1;
14259            if next_offset >= end_offset {
14260                return Ok(());
14261            }
14262
14263            // Decode unknown envelopes for gaps in ordinals.
14264            while _next_ordinal_to_read < 7 {
14265                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14266                _next_ordinal_to_read += 1;
14267                next_offset += envelope_size;
14268            }
14269
14270            let next_out_of_line = decoder.next_out_of_line();
14271            let handles_before = decoder.remaining_handles();
14272            if let Some((inlined, num_bytes, num_handles)) =
14273                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14274            {
14275                let member_inline_size =
14276                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14277                if inlined != (member_inline_size <= 4) {
14278                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14279                }
14280                let inner_offset;
14281                let mut inner_depth = depth.clone();
14282                if inlined {
14283                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14284                    inner_offset = next_offset;
14285                } else {
14286                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14287                    inner_depth.increment()?;
14288                }
14289                let val_ref = self
14290                    .periodic_advertising_interval
14291                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
14292                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14293                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14294                {
14295                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14296                }
14297                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14298                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14299                }
14300            }
14301
14302            next_offset += envelope_size;
14303
14304            // Decode the remaining unknown envelopes.
14305            while next_offset < end_offset {
14306                _next_ordinal_to_read += 1;
14307                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14308                next_offset += envelope_size;
14309            }
14310
14311            Ok(())
14312        }
14313    }
14314
14315    impl PeriodicAdvertisingSyncSyncToSubeventsRequest {
14316        #[inline(always)]
14317        fn max_ordinal_present(&self) -> u64 {
14318            if let Some(_) = self.subevents {
14319                return 1;
14320            }
14321            0
14322        }
14323    }
14324
14325    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14326        type Borrowed<'a> = &'a Self;
14327        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14328            value
14329        }
14330    }
14331
14332    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14333        type Owned = Self;
14334
14335        #[inline(always)]
14336        fn inline_align(_context: fidl::encoding::Context) -> usize {
14337            8
14338        }
14339
14340        #[inline(always)]
14341        fn inline_size(_context: fidl::encoding::Context) -> usize {
14342            16
14343        }
14344    }
14345
14346    unsafe impl<D: fidl::encoding::ResourceDialect>
14347        fidl::encoding::Encode<PeriodicAdvertisingSyncSyncToSubeventsRequest, D>
14348        for &PeriodicAdvertisingSyncSyncToSubeventsRequest
14349    {
14350        unsafe fn encode(
14351            self,
14352            encoder: &mut fidl::encoding::Encoder<'_, D>,
14353            offset: usize,
14354            mut depth: fidl::encoding::Depth,
14355        ) -> fidl::Result<()> {
14356            encoder.debug_check_bounds::<PeriodicAdvertisingSyncSyncToSubeventsRequest>(offset);
14357            // Vector header
14358            let max_ordinal: u64 = self.max_ordinal_present();
14359            encoder.write_num(max_ordinal, offset);
14360            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14361            // Calling encoder.out_of_line_offset(0) is not allowed.
14362            if max_ordinal == 0 {
14363                return Ok(());
14364            }
14365            depth.increment()?;
14366            let envelope_size = 8;
14367            let bytes_len = max_ordinal as usize * envelope_size;
14368            #[allow(unused_variables)]
14369            let offset = encoder.out_of_line_offset(bytes_len);
14370            let mut _prev_end_offset: usize = 0;
14371            if 1 > max_ordinal {
14372                return Ok(());
14373            }
14374
14375            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14376            // are envelope_size bytes.
14377            let cur_offset: usize = (1 - 1) * envelope_size;
14378
14379            // Zero reserved fields.
14380            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14381
14382            // Safety:
14383            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14384            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14385            //   envelope_size bytes, there is always sufficient room.
14386            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 128>, D>(
14387                self.subevents.as_ref().map(
14388                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::ValueTypeMarker>::borrow,
14389                ),
14390                encoder,
14391                offset + cur_offset,
14392                depth,
14393            )?;
14394
14395            _prev_end_offset = cur_offset + envelope_size;
14396
14397            Ok(())
14398        }
14399    }
14400
14401    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14402        for PeriodicAdvertisingSyncSyncToSubeventsRequest
14403    {
14404        #[inline(always)]
14405        fn new_empty() -> Self {
14406            Self::default()
14407        }
14408
14409        unsafe fn decode(
14410            &mut self,
14411            decoder: &mut fidl::encoding::Decoder<'_, D>,
14412            offset: usize,
14413            mut depth: fidl::encoding::Depth,
14414        ) -> fidl::Result<()> {
14415            decoder.debug_check_bounds::<Self>(offset);
14416            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14417                None => return Err(fidl::Error::NotNullable),
14418                Some(len) => len,
14419            };
14420            // Calling decoder.out_of_line_offset(0) is not allowed.
14421            if len == 0 {
14422                return Ok(());
14423            };
14424            depth.increment()?;
14425            let envelope_size = 8;
14426            let bytes_len = len * envelope_size;
14427            let offset = decoder.out_of_line_offset(bytes_len)?;
14428            // Decode the envelope for each type.
14429            let mut _next_ordinal_to_read = 0;
14430            let mut next_offset = offset;
14431            let end_offset = offset + bytes_len;
14432            _next_ordinal_to_read += 1;
14433            if next_offset >= end_offset {
14434                return Ok(());
14435            }
14436
14437            // Decode unknown envelopes for gaps in ordinals.
14438            while _next_ordinal_to_read < 1 {
14439                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14440                _next_ordinal_to_read += 1;
14441                next_offset += envelope_size;
14442            }
14443
14444            let next_out_of_line = decoder.next_out_of_line();
14445            let handles_before = decoder.remaining_handles();
14446            if let Some((inlined, num_bytes, num_handles)) =
14447                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14448            {
14449                let member_inline_size =
14450                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::TypeMarker>::inline_size(
14451                        decoder.context,
14452                    );
14453                if inlined != (member_inline_size <= 4) {
14454                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14455                }
14456                let inner_offset;
14457                let mut inner_depth = depth.clone();
14458                if inlined {
14459                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14460                    inner_offset = next_offset;
14461                } else {
14462                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14463                    inner_depth.increment()?;
14464                }
14465                let val_ref = self
14466                    .subevents
14467                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 128>, D));
14468                fidl::decode!(fidl::encoding::Vector<u8, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
14469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14470                {
14471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14472                }
14473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14475                }
14476            }
14477
14478            next_offset += envelope_size;
14479
14480            // Decode the remaining unknown envelopes.
14481            while next_offset < end_offset {
14482                _next_ordinal_to_read += 1;
14483                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14484                next_offset += envelope_size;
14485            }
14486
14487            Ok(())
14488        }
14489    }
14490
14491    impl PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14492        #[inline(always)]
14493        fn max_ordinal_present(&self) -> u64 {
14494            if let Some(_) = self.reports {
14495                return 1;
14496            }
14497            0
14498        }
14499    }
14500
14501    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14502        type Borrowed<'a> = &'a Self;
14503        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14504            value
14505        }
14506    }
14507
14508    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14509        type Owned = Self;
14510
14511        #[inline(always)]
14512        fn inline_align(_context: fidl::encoding::Context) -> usize {
14513            8
14514        }
14515
14516        #[inline(always)]
14517        fn inline_size(_context: fidl::encoding::Context) -> usize {
14518            16
14519        }
14520    }
14521
14522    unsafe impl<D: fidl::encoding::ResourceDialect>
14523        fidl::encoding::Encode<PeriodicAdvertisingSyncWatchAdvertisingReportResponse, D>
14524        for &PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14525    {
14526        unsafe fn encode(
14527            self,
14528            encoder: &mut fidl::encoding::Encoder<'_, D>,
14529            offset: usize,
14530            mut depth: fidl::encoding::Depth,
14531        ) -> fidl::Result<()> {
14532            encoder.debug_check_bounds::<PeriodicAdvertisingSyncWatchAdvertisingReportResponse>(
14533                offset,
14534            );
14535            // Vector header
14536            let max_ordinal: u64 = self.max_ordinal_present();
14537            encoder.write_num(max_ordinal, offset);
14538            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14539            // Calling encoder.out_of_line_offset(0) is not allowed.
14540            if max_ordinal == 0 {
14541                return Ok(());
14542            }
14543            depth.increment()?;
14544            let envelope_size = 8;
14545            let bytes_len = max_ordinal as usize * envelope_size;
14546            #[allow(unused_variables)]
14547            let offset = encoder.out_of_line_offset(bytes_len);
14548            let mut _prev_end_offset: usize = 0;
14549            if 1 > max_ordinal {
14550                return Ok(());
14551            }
14552
14553            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14554            // are envelope_size bytes.
14555            let cur_offset: usize = (1 - 1) * envelope_size;
14556
14557            // Zero reserved fields.
14558            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14559
14560            // Safety:
14561            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14562            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14563            //   envelope_size bytes, there is always sufficient room.
14564            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<SyncReport>, D>(
14565            self.reports.as_ref().map(<fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::ValueTypeMarker>::borrow),
14566            encoder, offset + cur_offset, depth
14567        )?;
14568
14569            _prev_end_offset = cur_offset + envelope_size;
14570
14571            Ok(())
14572        }
14573    }
14574
14575    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14576        for PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14577    {
14578        #[inline(always)]
14579        fn new_empty() -> Self {
14580            Self::default()
14581        }
14582
14583        unsafe fn decode(
14584            &mut self,
14585            decoder: &mut fidl::encoding::Decoder<'_, D>,
14586            offset: usize,
14587            mut depth: fidl::encoding::Depth,
14588        ) -> fidl::Result<()> {
14589            decoder.debug_check_bounds::<Self>(offset);
14590            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14591                None => return Err(fidl::Error::NotNullable),
14592                Some(len) => len,
14593            };
14594            // Calling decoder.out_of_line_offset(0) is not allowed.
14595            if len == 0 {
14596                return Ok(());
14597            };
14598            depth.increment()?;
14599            let envelope_size = 8;
14600            let bytes_len = len * envelope_size;
14601            let offset = decoder.out_of_line_offset(bytes_len)?;
14602            // Decode the envelope for each type.
14603            let mut _next_ordinal_to_read = 0;
14604            let mut next_offset = offset;
14605            let end_offset = offset + bytes_len;
14606            _next_ordinal_to_read += 1;
14607            if next_offset >= end_offset {
14608                return Ok(());
14609            }
14610
14611            // Decode unknown envelopes for gaps in ordinals.
14612            while _next_ordinal_to_read < 1 {
14613                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14614                _next_ordinal_to_read += 1;
14615                next_offset += envelope_size;
14616            }
14617
14618            let next_out_of_line = decoder.next_out_of_line();
14619            let handles_before = decoder.remaining_handles();
14620            if let Some((inlined, num_bytes, num_handles)) =
14621                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14622            {
14623                let member_inline_size = <fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14624                if inlined != (member_inline_size <= 4) {
14625                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14626                }
14627                let inner_offset;
14628                let mut inner_depth = depth.clone();
14629                if inlined {
14630                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14631                    inner_offset = next_offset;
14632                } else {
14633                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14634                    inner_depth.increment()?;
14635                }
14636                let val_ref = self.reports.get_or_insert_with(|| {
14637                    fidl::new_empty!(fidl::encoding::UnboundedVector<SyncReport>, D)
14638                });
14639                fidl::decode!(
14640                    fidl::encoding::UnboundedVector<SyncReport>,
14641                    D,
14642                    val_ref,
14643                    decoder,
14644                    inner_offset,
14645                    inner_depth
14646                )?;
14647                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14648                {
14649                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14650                }
14651                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14652                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14653                }
14654            }
14655
14656            next_offset += envelope_size;
14657
14658            // Decode the remaining unknown envelopes.
14659            while next_offset < end_offset {
14660                _next_ordinal_to_read += 1;
14661                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14662                next_offset += envelope_size;
14663            }
14664
14665            Ok(())
14666        }
14667    }
14668
14669    impl ScanData {
14670        #[inline(always)]
14671        fn max_ordinal_present(&self) -> u64 {
14672            if let Some(_) = self.broadcast_name {
14673                return 9;
14674            }
14675            if let Some(_) = self.resolvable_set_identifier {
14676                return 8;
14677            }
14678            if let Some(_) = self.timestamp {
14679                return 7;
14680            }
14681            if let Some(_) = self.uris {
14682                return 6;
14683            }
14684            if let Some(_) = self.manufacturer_data {
14685                return 5;
14686            }
14687            if let Some(_) = self.service_data {
14688                return 4;
14689            }
14690            if let Some(_) = self.service_uuids {
14691                return 3;
14692            }
14693            if let Some(_) = self.appearance {
14694                return 2;
14695            }
14696            if let Some(_) = self.tx_power {
14697                return 1;
14698            }
14699            0
14700        }
14701    }
14702
14703    impl fidl::encoding::ValueTypeMarker for ScanData {
14704        type Borrowed<'a> = &'a Self;
14705        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14706            value
14707        }
14708    }
14709
14710    unsafe impl fidl::encoding::TypeMarker for ScanData {
14711        type Owned = Self;
14712
14713        #[inline(always)]
14714        fn inline_align(_context: fidl::encoding::Context) -> usize {
14715            8
14716        }
14717
14718        #[inline(always)]
14719        fn inline_size(_context: fidl::encoding::Context) -> usize {
14720            16
14721        }
14722    }
14723
14724    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanData, D> for &ScanData {
14725        unsafe fn encode(
14726            self,
14727            encoder: &mut fidl::encoding::Encoder<'_, D>,
14728            offset: usize,
14729            mut depth: fidl::encoding::Depth,
14730        ) -> fidl::Result<()> {
14731            encoder.debug_check_bounds::<ScanData>(offset);
14732            // Vector header
14733            let max_ordinal: u64 = self.max_ordinal_present();
14734            encoder.write_num(max_ordinal, offset);
14735            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14736            // Calling encoder.out_of_line_offset(0) is not allowed.
14737            if max_ordinal == 0 {
14738                return Ok(());
14739            }
14740            depth.increment()?;
14741            let envelope_size = 8;
14742            let bytes_len = max_ordinal as usize * envelope_size;
14743            #[allow(unused_variables)]
14744            let offset = encoder.out_of_line_offset(bytes_len);
14745            let mut _prev_end_offset: usize = 0;
14746            if 1 > max_ordinal {
14747                return Ok(());
14748            }
14749
14750            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14751            // are envelope_size bytes.
14752            let cur_offset: usize = (1 - 1) * envelope_size;
14753
14754            // Zero reserved fields.
14755            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14756
14757            // Safety:
14758            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14759            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14760            //   envelope_size bytes, there is always sufficient room.
14761            fidl::encoding::encode_in_envelope_optional::<i8, D>(
14762                self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14763                encoder,
14764                offset + cur_offset,
14765                depth,
14766            )?;
14767
14768            _prev_end_offset = cur_offset + envelope_size;
14769            if 2 > max_ordinal {
14770                return Ok(());
14771            }
14772
14773            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14774            // are envelope_size bytes.
14775            let cur_offset: usize = (2 - 1) * envelope_size;
14776
14777            // Zero reserved fields.
14778            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14779
14780            // Safety:
14781            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14782            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14783            //   envelope_size bytes, there is always sufficient room.
14784            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
14785            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
14786            encoder, offset + cur_offset, depth
14787        )?;
14788
14789            _prev_end_offset = cur_offset + envelope_size;
14790            if 3 > max_ordinal {
14791                return Ok(());
14792            }
14793
14794            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14795            // are envelope_size bytes.
14796            let cur_offset: usize = (3 - 1) * envelope_size;
14797
14798            // Zero reserved fields.
14799            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14800
14801            // Safety:
14802            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14803            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14804            //   envelope_size bytes, there is always sufficient room.
14805            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
14806            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
14807            encoder, offset + cur_offset, depth
14808        )?;
14809
14810            _prev_end_offset = cur_offset + envelope_size;
14811            if 4 > max_ordinal {
14812                return Ok(());
14813            }
14814
14815            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14816            // are envelope_size bytes.
14817            let cur_offset: usize = (4 - 1) * envelope_size;
14818
14819            // Zero reserved fields.
14820            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14821
14822            // Safety:
14823            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14824            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14825            //   envelope_size bytes, there is always sufficient room.
14826            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
14827            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
14828            encoder, offset + cur_offset, depth
14829        )?;
14830
14831            _prev_end_offset = cur_offset + envelope_size;
14832            if 5 > max_ordinal {
14833                return Ok(());
14834            }
14835
14836            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14837            // are envelope_size bytes.
14838            let cur_offset: usize = (5 - 1) * envelope_size;
14839
14840            // Zero reserved fields.
14841            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14842
14843            // Safety:
14844            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14845            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14846            //   envelope_size bytes, there is always sufficient room.
14847            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
14848            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
14849            encoder, offset + cur_offset, depth
14850        )?;
14851
14852            _prev_end_offset = cur_offset + envelope_size;
14853            if 6 > max_ordinal {
14854                return Ok(());
14855            }
14856
14857            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14858            // are envelope_size bytes.
14859            let cur_offset: usize = (6 - 1) * envelope_size;
14860
14861            // Zero reserved fields.
14862            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14863
14864            // Safety:
14865            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14866            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14867            //   envelope_size bytes, there is always sufficient room.
14868            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
14869            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
14870            encoder, offset + cur_offset, depth
14871        )?;
14872
14873            _prev_end_offset = cur_offset + envelope_size;
14874            if 7 > max_ordinal {
14875                return Ok(());
14876            }
14877
14878            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14879            // are envelope_size bytes.
14880            let cur_offset: usize = (7 - 1) * envelope_size;
14881
14882            // Zero reserved fields.
14883            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14884
14885            // Safety:
14886            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14887            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14888            //   envelope_size bytes, there is always sufficient room.
14889            fidl::encoding::encode_in_envelope_optional::<i64, D>(
14890                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
14891                encoder,
14892                offset + cur_offset,
14893                depth,
14894            )?;
14895
14896            _prev_end_offset = cur_offset + envelope_size;
14897            if 8 > max_ordinal {
14898                return Ok(());
14899            }
14900
14901            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14902            // are envelope_size bytes.
14903            let cur_offset: usize = (8 - 1) * envelope_size;
14904
14905            // Zero reserved fields.
14906            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14907
14908            // Safety:
14909            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14910            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14911            //   envelope_size bytes, there is always sufficient room.
14912            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
14913                self.resolvable_set_identifier
14914                    .as_ref()
14915                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
14916                encoder,
14917                offset + cur_offset,
14918                depth,
14919            )?;
14920
14921            _prev_end_offset = cur_offset + envelope_size;
14922            if 9 > max_ordinal {
14923                return Ok(());
14924            }
14925
14926            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14927            // are envelope_size bytes.
14928            let cur_offset: usize = (9 - 1) * envelope_size;
14929
14930            // Zero reserved fields.
14931            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14932
14933            // Safety:
14934            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14935            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14936            //   envelope_size bytes, there is always sufficient room.
14937            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
14938                self.broadcast_name.as_ref().map(
14939                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
14940                ),
14941                encoder,
14942                offset + cur_offset,
14943                depth,
14944            )?;
14945
14946            _prev_end_offset = cur_offset + envelope_size;
14947
14948            Ok(())
14949        }
14950    }
14951
14952    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanData {
14953        #[inline(always)]
14954        fn new_empty() -> Self {
14955            Self::default()
14956        }
14957
14958        unsafe fn decode(
14959            &mut self,
14960            decoder: &mut fidl::encoding::Decoder<'_, D>,
14961            offset: usize,
14962            mut depth: fidl::encoding::Depth,
14963        ) -> fidl::Result<()> {
14964            decoder.debug_check_bounds::<Self>(offset);
14965            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14966                None => return Err(fidl::Error::NotNullable),
14967                Some(len) => len,
14968            };
14969            // Calling decoder.out_of_line_offset(0) is not allowed.
14970            if len == 0 {
14971                return Ok(());
14972            };
14973            depth.increment()?;
14974            let envelope_size = 8;
14975            let bytes_len = len * envelope_size;
14976            let offset = decoder.out_of_line_offset(bytes_len)?;
14977            // Decode the envelope for each type.
14978            let mut _next_ordinal_to_read = 0;
14979            let mut next_offset = offset;
14980            let end_offset = offset + bytes_len;
14981            _next_ordinal_to_read += 1;
14982            if next_offset >= end_offset {
14983                return Ok(());
14984            }
14985
14986            // Decode unknown envelopes for gaps in ordinals.
14987            while _next_ordinal_to_read < 1 {
14988                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14989                _next_ordinal_to_read += 1;
14990                next_offset += envelope_size;
14991            }
14992
14993            let next_out_of_line = decoder.next_out_of_line();
14994            let handles_before = decoder.remaining_handles();
14995            if let Some((inlined, num_bytes, num_handles)) =
14996                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14997            {
14998                let member_inline_size =
14999                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15000                if inlined != (member_inline_size <= 4) {
15001                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15002                }
15003                let inner_offset;
15004                let mut inner_depth = depth.clone();
15005                if inlined {
15006                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15007                    inner_offset = next_offset;
15008                } else {
15009                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15010                    inner_depth.increment()?;
15011                }
15012                let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
15013                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
15014                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15015                {
15016                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15017                }
15018                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15019                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15020                }
15021            }
15022
15023            next_offset += envelope_size;
15024            _next_ordinal_to_read += 1;
15025            if next_offset >= end_offset {
15026                return Ok(());
15027            }
15028
15029            // Decode unknown envelopes for gaps in ordinals.
15030            while _next_ordinal_to_read < 2 {
15031                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15032                _next_ordinal_to_read += 1;
15033                next_offset += envelope_size;
15034            }
15035
15036            let next_out_of_line = decoder.next_out_of_line();
15037            let handles_before = decoder.remaining_handles();
15038            if let Some((inlined, num_bytes, num_handles)) =
15039                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15040            {
15041                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15042                if inlined != (member_inline_size <= 4) {
15043                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15044                }
15045                let inner_offset;
15046                let mut inner_depth = depth.clone();
15047                if inlined {
15048                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15049                    inner_offset = next_offset;
15050                } else {
15051                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15052                    inner_depth.increment()?;
15053                }
15054                let val_ref = self.appearance.get_or_insert_with(|| {
15055                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
15056                });
15057                fidl::decode!(
15058                    fidl_fuchsia_bluetooth__common::Appearance,
15059                    D,
15060                    val_ref,
15061                    decoder,
15062                    inner_offset,
15063                    inner_depth
15064                )?;
15065                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15066                {
15067                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15068                }
15069                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15070                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15071                }
15072            }
15073
15074            next_offset += envelope_size;
15075            _next_ordinal_to_read += 1;
15076            if next_offset >= end_offset {
15077                return Ok(());
15078            }
15079
15080            // Decode unknown envelopes for gaps in ordinals.
15081            while _next_ordinal_to_read < 3 {
15082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15083                _next_ordinal_to_read += 1;
15084                next_offset += envelope_size;
15085            }
15086
15087            let next_out_of_line = decoder.next_out_of_line();
15088            let handles_before = decoder.remaining_handles();
15089            if let Some((inlined, num_bytes, num_handles)) =
15090                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15091            {
15092                let member_inline_size = <fidl::encoding::UnboundedVector<
15093                    fidl_fuchsia_bluetooth__common::Uuid,
15094                > as fidl::encoding::TypeMarker>::inline_size(
15095                    decoder.context
15096                );
15097                if inlined != (member_inline_size <= 4) {
15098                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15099                }
15100                let inner_offset;
15101                let mut inner_depth = depth.clone();
15102                if inlined {
15103                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15104                    inner_offset = next_offset;
15105                } else {
15106                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15107                    inner_depth.increment()?;
15108                }
15109                let val_ref = self.service_uuids.get_or_insert_with(|| {
15110                    fidl::new_empty!(
15111                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15112                        D
15113                    )
15114                });
15115                fidl::decode!(
15116                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15117                    D,
15118                    val_ref,
15119                    decoder,
15120                    inner_offset,
15121                    inner_depth
15122                )?;
15123                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15124                {
15125                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15126                }
15127                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15128                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15129                }
15130            }
15131
15132            next_offset += envelope_size;
15133            _next_ordinal_to_read += 1;
15134            if next_offset >= end_offset {
15135                return Ok(());
15136            }
15137
15138            // Decode unknown envelopes for gaps in ordinals.
15139            while _next_ordinal_to_read < 4 {
15140                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15141                _next_ordinal_to_read += 1;
15142                next_offset += envelope_size;
15143            }
15144
15145            let next_out_of_line = decoder.next_out_of_line();
15146            let handles_before = decoder.remaining_handles();
15147            if let Some((inlined, num_bytes, num_handles)) =
15148                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15149            {
15150                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15151                if inlined != (member_inline_size <= 4) {
15152                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15153                }
15154                let inner_offset;
15155                let mut inner_depth = depth.clone();
15156                if inlined {
15157                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15158                    inner_offset = next_offset;
15159                } else {
15160                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15161                    inner_depth.increment()?;
15162                }
15163                let val_ref = self.service_data.get_or_insert_with(|| {
15164                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
15165                });
15166                fidl::decode!(
15167                    fidl::encoding::UnboundedVector<ServiceData>,
15168                    D,
15169                    val_ref,
15170                    decoder,
15171                    inner_offset,
15172                    inner_depth
15173                )?;
15174                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15175                {
15176                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15177                }
15178                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15179                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15180                }
15181            }
15182
15183            next_offset += envelope_size;
15184            _next_ordinal_to_read += 1;
15185            if next_offset >= end_offset {
15186                return Ok(());
15187            }
15188
15189            // Decode unknown envelopes for gaps in ordinals.
15190            while _next_ordinal_to_read < 5 {
15191                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15192                _next_ordinal_to_read += 1;
15193                next_offset += envelope_size;
15194            }
15195
15196            let next_out_of_line = decoder.next_out_of_line();
15197            let handles_before = decoder.remaining_handles();
15198            if let Some((inlined, num_bytes, num_handles)) =
15199                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15200            {
15201                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15202                if inlined != (member_inline_size <= 4) {
15203                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15204                }
15205                let inner_offset;
15206                let mut inner_depth = depth.clone();
15207                if inlined {
15208                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15209                    inner_offset = next_offset;
15210                } else {
15211                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15212                    inner_depth.increment()?;
15213                }
15214                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
15215                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
15216                });
15217                fidl::decode!(
15218                    fidl::encoding::UnboundedVector<ManufacturerData>,
15219                    D,
15220                    val_ref,
15221                    decoder,
15222                    inner_offset,
15223                    inner_depth
15224                )?;
15225                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15226                {
15227                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15228                }
15229                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15230                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15231                }
15232            }
15233
15234            next_offset += envelope_size;
15235            _next_ordinal_to_read += 1;
15236            if next_offset >= end_offset {
15237                return Ok(());
15238            }
15239
15240            // Decode unknown envelopes for gaps in ordinals.
15241            while _next_ordinal_to_read < 6 {
15242                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15243                _next_ordinal_to_read += 1;
15244                next_offset += envelope_size;
15245            }
15246
15247            let next_out_of_line = decoder.next_out_of_line();
15248            let handles_before = decoder.remaining_handles();
15249            if let Some((inlined, num_bytes, num_handles)) =
15250                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15251            {
15252                let member_inline_size = <fidl::encoding::UnboundedVector<
15253                    fidl::encoding::BoundedString<278>,
15254                > as fidl::encoding::TypeMarker>::inline_size(
15255                    decoder.context
15256                );
15257                if inlined != (member_inline_size <= 4) {
15258                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15259                }
15260                let inner_offset;
15261                let mut inner_depth = depth.clone();
15262                if inlined {
15263                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15264                    inner_offset = next_offset;
15265                } else {
15266                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15267                    inner_depth.increment()?;
15268                }
15269                let val_ref = self.uris.get_or_insert_with(|| {
15270                    fidl::new_empty!(
15271                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15272                        D
15273                    )
15274                });
15275                fidl::decode!(
15276                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15277                    D,
15278                    val_ref,
15279                    decoder,
15280                    inner_offset,
15281                    inner_depth
15282                )?;
15283                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15284                {
15285                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15286                }
15287                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15288                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15289                }
15290            }
15291
15292            next_offset += envelope_size;
15293            _next_ordinal_to_read += 1;
15294            if next_offset >= end_offset {
15295                return Ok(());
15296            }
15297
15298            // Decode unknown envelopes for gaps in ordinals.
15299            while _next_ordinal_to_read < 7 {
15300                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15301                _next_ordinal_to_read += 1;
15302                next_offset += envelope_size;
15303            }
15304
15305            let next_out_of_line = decoder.next_out_of_line();
15306            let handles_before = decoder.remaining_handles();
15307            if let Some((inlined, num_bytes, num_handles)) =
15308                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15309            {
15310                let member_inline_size =
15311                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15312                if inlined != (member_inline_size <= 4) {
15313                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15314                }
15315                let inner_offset;
15316                let mut inner_depth = depth.clone();
15317                if inlined {
15318                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15319                    inner_offset = next_offset;
15320                } else {
15321                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15322                    inner_depth.increment()?;
15323                }
15324                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
15325                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
15326                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15327                {
15328                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15329                }
15330                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15331                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15332                }
15333            }
15334
15335            next_offset += envelope_size;
15336            _next_ordinal_to_read += 1;
15337            if next_offset >= end_offset {
15338                return Ok(());
15339            }
15340
15341            // Decode unknown envelopes for gaps in ordinals.
15342            while _next_ordinal_to_read < 8 {
15343                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15344                _next_ordinal_to_read += 1;
15345                next_offset += envelope_size;
15346            }
15347
15348            let next_out_of_line = decoder.next_out_of_line();
15349            let handles_before = decoder.remaining_handles();
15350            if let Some((inlined, num_bytes, num_handles)) =
15351                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15352            {
15353                let member_inline_size =
15354                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
15355                        decoder.context,
15356                    );
15357                if inlined != (member_inline_size <= 4) {
15358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15359                }
15360                let inner_offset;
15361                let mut inner_depth = depth.clone();
15362                if inlined {
15363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15364                    inner_offset = next_offset;
15365                } else {
15366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15367                    inner_depth.increment()?;
15368                }
15369                let val_ref = self
15370                    .resolvable_set_identifier
15371                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
15372                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
15373                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15374                {
15375                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15376                }
15377                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15378                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15379                }
15380            }
15381
15382            next_offset += envelope_size;
15383            _next_ordinal_to_read += 1;
15384            if next_offset >= end_offset {
15385                return Ok(());
15386            }
15387
15388            // Decode unknown envelopes for gaps in ordinals.
15389            while _next_ordinal_to_read < 9 {
15390                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15391                _next_ordinal_to_read += 1;
15392                next_offset += envelope_size;
15393            }
15394
15395            let next_out_of_line = decoder.next_out_of_line();
15396            let handles_before = decoder.remaining_handles();
15397            if let Some((inlined, num_bytes, num_handles)) =
15398                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15399            {
15400                let member_inline_size =
15401                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
15402                        decoder.context,
15403                    );
15404                if inlined != (member_inline_size <= 4) {
15405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15406                }
15407                let inner_offset;
15408                let mut inner_depth = depth.clone();
15409                if inlined {
15410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15411                    inner_offset = next_offset;
15412                } else {
15413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15414                    inner_depth.increment()?;
15415                }
15416                let val_ref = self
15417                    .broadcast_name
15418                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
15419                fidl::decode!(
15420                    fidl::encoding::BoundedString<128>,
15421                    D,
15422                    val_ref,
15423                    decoder,
15424                    inner_offset,
15425                    inner_depth
15426                )?;
15427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15428                {
15429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15430                }
15431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15433                }
15434            }
15435
15436            next_offset += envelope_size;
15437
15438            // Decode the remaining unknown envelopes.
15439            while next_offset < end_offset {
15440                _next_ordinal_to_read += 1;
15441                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15442                next_offset += envelope_size;
15443            }
15444
15445            Ok(())
15446        }
15447    }
15448
15449    impl ScanOptions {
15450        #[inline(always)]
15451        fn max_ordinal_present(&self) -> u64 {
15452            if let Some(_) = self.filters {
15453                return 1;
15454            }
15455            0
15456        }
15457    }
15458
15459    impl fidl::encoding::ValueTypeMarker for ScanOptions {
15460        type Borrowed<'a> = &'a Self;
15461        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15462            value
15463        }
15464    }
15465
15466    unsafe impl fidl::encoding::TypeMarker for ScanOptions {
15467        type Owned = Self;
15468
15469        #[inline(always)]
15470        fn inline_align(_context: fidl::encoding::Context) -> usize {
15471            8
15472        }
15473
15474        #[inline(always)]
15475        fn inline_size(_context: fidl::encoding::Context) -> usize {
15476            16
15477        }
15478    }
15479
15480    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOptions, D>
15481        for &ScanOptions
15482    {
15483        unsafe fn encode(
15484            self,
15485            encoder: &mut fidl::encoding::Encoder<'_, D>,
15486            offset: usize,
15487            mut depth: fidl::encoding::Depth,
15488        ) -> fidl::Result<()> {
15489            encoder.debug_check_bounds::<ScanOptions>(offset);
15490            // Vector header
15491            let max_ordinal: u64 = self.max_ordinal_present();
15492            encoder.write_num(max_ordinal, offset);
15493            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15494            // Calling encoder.out_of_line_offset(0) is not allowed.
15495            if max_ordinal == 0 {
15496                return Ok(());
15497            }
15498            depth.increment()?;
15499            let envelope_size = 8;
15500            let bytes_len = max_ordinal as usize * envelope_size;
15501            #[allow(unused_variables)]
15502            let offset = encoder.out_of_line_offset(bytes_len);
15503            let mut _prev_end_offset: usize = 0;
15504            if 1 > max_ordinal {
15505                return Ok(());
15506            }
15507
15508            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15509            // are envelope_size bytes.
15510            let cur_offset: usize = (1 - 1) * envelope_size;
15511
15512            // Zero reserved fields.
15513            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15514
15515            // Safety:
15516            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15517            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15518            //   envelope_size bytes, there is always sufficient room.
15519            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Filter>, D>(
15520            self.filters.as_ref().map(<fidl::encoding::UnboundedVector<Filter> as fidl::encoding::ValueTypeMarker>::borrow),
15521            encoder, offset + cur_offset, depth
15522        )?;
15523
15524            _prev_end_offset = cur_offset + envelope_size;
15525
15526            Ok(())
15527        }
15528    }
15529
15530    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOptions {
15531        #[inline(always)]
15532        fn new_empty() -> Self {
15533            Self::default()
15534        }
15535
15536        unsafe fn decode(
15537            &mut self,
15538            decoder: &mut fidl::encoding::Decoder<'_, D>,
15539            offset: usize,
15540            mut depth: fidl::encoding::Depth,
15541        ) -> fidl::Result<()> {
15542            decoder.debug_check_bounds::<Self>(offset);
15543            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15544                None => return Err(fidl::Error::NotNullable),
15545                Some(len) => len,
15546            };
15547            // Calling decoder.out_of_line_offset(0) is not allowed.
15548            if len == 0 {
15549                return Ok(());
15550            };
15551            depth.increment()?;
15552            let envelope_size = 8;
15553            let bytes_len = len * envelope_size;
15554            let offset = decoder.out_of_line_offset(bytes_len)?;
15555            // Decode the envelope for each type.
15556            let mut _next_ordinal_to_read = 0;
15557            let mut next_offset = offset;
15558            let end_offset = offset + bytes_len;
15559            _next_ordinal_to_read += 1;
15560            if next_offset >= end_offset {
15561                return Ok(());
15562            }
15563
15564            // Decode unknown envelopes for gaps in ordinals.
15565            while _next_ordinal_to_read < 1 {
15566                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15567                _next_ordinal_to_read += 1;
15568                next_offset += envelope_size;
15569            }
15570
15571            let next_out_of_line = decoder.next_out_of_line();
15572            let handles_before = decoder.remaining_handles();
15573            if let Some((inlined, num_bytes, num_handles)) =
15574                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15575            {
15576                let member_inline_size = <fidl::encoding::UnboundedVector<Filter> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15577                if inlined != (member_inline_size <= 4) {
15578                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15579                }
15580                let inner_offset;
15581                let mut inner_depth = depth.clone();
15582                if inlined {
15583                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15584                    inner_offset = next_offset;
15585                } else {
15586                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15587                    inner_depth.increment()?;
15588                }
15589                let val_ref = self.filters.get_or_insert_with(|| {
15590                    fidl::new_empty!(fidl::encoding::UnboundedVector<Filter>, D)
15591                });
15592                fidl::decode!(
15593                    fidl::encoding::UnboundedVector<Filter>,
15594                    D,
15595                    val_ref,
15596                    decoder,
15597                    inner_offset,
15598                    inner_depth
15599                )?;
15600                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15601                {
15602                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15603                }
15604                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15605                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15606                }
15607            }
15608
15609            next_offset += envelope_size;
15610
15611            // Decode the remaining unknown envelopes.
15612            while next_offset < end_offset {
15613                _next_ordinal_to_read += 1;
15614                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15615                next_offset += envelope_size;
15616            }
15617
15618            Ok(())
15619        }
15620    }
15621
15622    impl fidl::encoding::ValueTypeMarker for AdvertisingProcedure {
15623        type Borrowed<'a> = &'a Self;
15624        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15625            value
15626        }
15627    }
15628
15629    unsafe impl fidl::encoding::TypeMarker for AdvertisingProcedure {
15630        type Owned = Self;
15631
15632        #[inline(always)]
15633        fn inline_align(_context: fidl::encoding::Context) -> usize {
15634            8
15635        }
15636
15637        #[inline(always)]
15638        fn inline_size(_context: fidl::encoding::Context) -> usize {
15639            16
15640        }
15641    }
15642
15643    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingProcedure, D>
15644        for &AdvertisingProcedure
15645    {
15646        #[inline]
15647        unsafe fn encode(
15648            self,
15649            encoder: &mut fidl::encoding::Encoder<'_, D>,
15650            offset: usize,
15651            _depth: fidl::encoding::Depth,
15652        ) -> fidl::Result<()> {
15653            encoder.debug_check_bounds::<AdvertisingProcedure>(offset);
15654            encoder.write_num::<u64>(self.ordinal(), offset);
15655            match self {
15656                AdvertisingProcedure::Legacy(ref val) => {
15657                    fidl::encoding::encode_in_envelope::<Legacy, D>(
15658                        <Legacy as fidl::encoding::ValueTypeMarker>::borrow(val),
15659                        encoder,
15660                        offset + 8,
15661                        _depth,
15662                    )
15663                }
15664                AdvertisingProcedure::Extended(ref val) => {
15665                    fidl::encoding::encode_in_envelope::<Extended, D>(
15666                        <Extended as fidl::encoding::ValueTypeMarker>::borrow(val),
15667                        encoder,
15668                        offset + 8,
15669                        _depth,
15670                    )
15671                }
15672                AdvertisingProcedure::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
15673            }
15674        }
15675    }
15676
15677    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingProcedure {
15678        #[inline(always)]
15679        fn new_empty() -> Self {
15680            Self::__SourceBreaking { unknown_ordinal: 0 }
15681        }
15682
15683        #[inline]
15684        unsafe fn decode(
15685            &mut self,
15686            decoder: &mut fidl::encoding::Decoder<'_, D>,
15687            offset: usize,
15688            mut depth: fidl::encoding::Depth,
15689        ) -> fidl::Result<()> {
15690            decoder.debug_check_bounds::<Self>(offset);
15691            #[allow(unused_variables)]
15692            let next_out_of_line = decoder.next_out_of_line();
15693            let handles_before = decoder.remaining_handles();
15694            let (ordinal, inlined, num_bytes, num_handles) =
15695                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
15696
15697            let member_inline_size = match ordinal {
15698                1 => <Legacy as fidl::encoding::TypeMarker>::inline_size(decoder.context),
15699                2 => <Extended as fidl::encoding::TypeMarker>::inline_size(decoder.context),
15700                0 => return Err(fidl::Error::UnknownUnionTag),
15701                _ => num_bytes as usize,
15702            };
15703
15704            if inlined != (member_inline_size <= 4) {
15705                return Err(fidl::Error::InvalidInlineBitInEnvelope);
15706            }
15707            let _inner_offset;
15708            if inlined {
15709                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
15710                _inner_offset = offset + 8;
15711            } else {
15712                depth.increment()?;
15713                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15714            }
15715            match ordinal {
15716                1 => {
15717                    #[allow(irrefutable_let_patterns)]
15718                    if let AdvertisingProcedure::Legacy(_) = self {
15719                        // Do nothing, read the value into the object
15720                    } else {
15721                        // Initialize `self` to the right variant
15722                        *self = AdvertisingProcedure::Legacy(fidl::new_empty!(Legacy, D));
15723                    }
15724                    #[allow(irrefutable_let_patterns)]
15725                    if let AdvertisingProcedure::Legacy(ref mut val) = self {
15726                        fidl::decode!(Legacy, D, val, decoder, _inner_offset, depth)?;
15727                    } else {
15728                        unreachable!()
15729                    }
15730                }
15731                2 => {
15732                    #[allow(irrefutable_let_patterns)]
15733                    if let AdvertisingProcedure::Extended(_) = self {
15734                        // Do nothing, read the value into the object
15735                    } else {
15736                        // Initialize `self` to the right variant
15737                        *self = AdvertisingProcedure::Extended(fidl::new_empty!(Extended, D));
15738                    }
15739                    #[allow(irrefutable_let_patterns)]
15740                    if let AdvertisingProcedure::Extended(ref mut val) = self {
15741                        fidl::decode!(Extended, D, val, decoder, _inner_offset, depth)?;
15742                    } else {
15743                        unreachable!()
15744                    }
15745                }
15746                #[allow(deprecated)]
15747                ordinal => {
15748                    for _ in 0..num_handles {
15749                        decoder.drop_next_handle()?;
15750                    }
15751                    *self = AdvertisingProcedure::__SourceBreaking { unknown_ordinal: ordinal };
15752                }
15753            }
15754            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
15755                return Err(fidl::Error::InvalidNumBytesInEnvelope);
15756            }
15757            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15758                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15759            }
15760            Ok(())
15761        }
15762    }
15763
15764    impl fidl::encoding::ValueTypeMarker for SyncReport {
15765        type Borrowed<'a> = &'a Self;
15766        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15767            value
15768        }
15769    }
15770
15771    unsafe impl fidl::encoding::TypeMarker for SyncReport {
15772        type Owned = Self;
15773
15774        #[inline(always)]
15775        fn inline_align(_context: fidl::encoding::Context) -> usize {
15776            8
15777        }
15778
15779        #[inline(always)]
15780        fn inline_size(_context: fidl::encoding::Context) -> usize {
15781            16
15782        }
15783    }
15784
15785    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SyncReport, D>
15786        for &SyncReport
15787    {
15788        #[inline]
15789        unsafe fn encode(
15790            self,
15791            encoder: &mut fidl::encoding::Encoder<'_, D>,
15792            offset: usize,
15793            _depth: fidl::encoding::Depth,
15794        ) -> fidl::Result<()> {
15795            encoder.debug_check_bounds::<SyncReport>(offset);
15796            encoder.write_num::<u64>(self.ordinal(), offset);
15797            match self {
15798            SyncReport::PeriodicAdvertisingReport(ref val) => {
15799                fidl::encoding::encode_in_envelope::<PeriodicAdvertisingReport, D>(
15800                    <PeriodicAdvertisingReport as fidl::encoding::ValueTypeMarker>::borrow(val),
15801                    encoder, offset + 8, _depth
15802                )
15803            }
15804            SyncReport::BroadcastIsochronousGroupInfoReport(ref val) => {
15805                fidl::encoding::encode_in_envelope::<BroadcastIsochronousGroupInfoReport, D>(
15806                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::ValueTypeMarker>::borrow(val),
15807                    encoder, offset + 8, _depth
15808                )
15809            }
15810            SyncReport::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
15811        }
15812        }
15813    }
15814
15815    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SyncReport {
15816        #[inline(always)]
15817        fn new_empty() -> Self {
15818            Self::__SourceBreaking { unknown_ordinal: 0 }
15819        }
15820
15821        #[inline]
15822        unsafe fn decode(
15823            &mut self,
15824            decoder: &mut fidl::encoding::Decoder<'_, D>,
15825            offset: usize,
15826            mut depth: fidl::encoding::Depth,
15827        ) -> fidl::Result<()> {
15828            decoder.debug_check_bounds::<Self>(offset);
15829            #[allow(unused_variables)]
15830            let next_out_of_line = decoder.next_out_of_line();
15831            let handles_before = decoder.remaining_handles();
15832            let (ordinal, inlined, num_bytes, num_handles) =
15833                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
15834
15835            let member_inline_size = match ordinal {
15836                1 => <PeriodicAdvertisingReport as fidl::encoding::TypeMarker>::inline_size(
15837                    decoder.context,
15838                ),
15839                2 => {
15840                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::TypeMarker>::inline_size(
15841                        decoder.context,
15842                    )
15843                }
15844                0 => return Err(fidl::Error::UnknownUnionTag),
15845                _ => num_bytes as usize,
15846            };
15847
15848            if inlined != (member_inline_size <= 4) {
15849                return Err(fidl::Error::InvalidInlineBitInEnvelope);
15850            }
15851            let _inner_offset;
15852            if inlined {
15853                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
15854                _inner_offset = offset + 8;
15855            } else {
15856                depth.increment()?;
15857                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15858            }
15859            match ordinal {
15860                1 => {
15861                    #[allow(irrefutable_let_patterns)]
15862                    if let SyncReport::PeriodicAdvertisingReport(_) = self {
15863                        // Do nothing, read the value into the object
15864                    } else {
15865                        // Initialize `self` to the right variant
15866                        *self = SyncReport::PeriodicAdvertisingReport(fidl::new_empty!(
15867                            PeriodicAdvertisingReport,
15868                            D
15869                        ));
15870                    }
15871                    #[allow(irrefutable_let_patterns)]
15872                    if let SyncReport::PeriodicAdvertisingReport(ref mut val) = self {
15873                        fidl::decode!(
15874                            PeriodicAdvertisingReport,
15875                            D,
15876                            val,
15877                            decoder,
15878                            _inner_offset,
15879                            depth
15880                        )?;
15881                    } else {
15882                        unreachable!()
15883                    }
15884                }
15885                2 => {
15886                    #[allow(irrefutable_let_patterns)]
15887                    if let SyncReport::BroadcastIsochronousGroupInfoReport(_) = self {
15888                        // Do nothing, read the value into the object
15889                    } else {
15890                        // Initialize `self` to the right variant
15891                        *self = SyncReport::BroadcastIsochronousGroupInfoReport(fidl::new_empty!(
15892                            BroadcastIsochronousGroupInfoReport,
15893                            D
15894                        ));
15895                    }
15896                    #[allow(irrefutable_let_patterns)]
15897                    if let SyncReport::BroadcastIsochronousGroupInfoReport(ref mut val) = self {
15898                        fidl::decode!(
15899                            BroadcastIsochronousGroupInfoReport,
15900                            D,
15901                            val,
15902                            decoder,
15903                            _inner_offset,
15904                            depth
15905                        )?;
15906                    } else {
15907                        unreachable!()
15908                    }
15909                }
15910                #[allow(deprecated)]
15911                ordinal => {
15912                    for _ in 0..num_handles {
15913                        decoder.drop_next_handle()?;
15914                    }
15915                    *self = SyncReport::__SourceBreaking { unknown_ordinal: ordinal };
15916                }
15917            }
15918            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
15919                return Err(fidl::Error::InvalidNumBytesInEnvelope);
15920            }
15921            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15922                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15923            }
15924            Ok(())
15925        }
15926    }
15927}