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    #[doc(hidden)]
1423    pub __source_breaking: fidl::marker::SourceBreaking,
1424}
1425
1426impl fidl::Persistable for ScanData {}
1427
1428/// Parameters used during a scan.
1429#[derive(Clone, Debug, Default, PartialEq)]
1430pub struct ScanOptions {
1431    /// List of filters for use during a scan. A peripheral that satisfies any
1432    /// of these filters will be reported. At least 1 filter must be specified.
1433    /// While not recommended, clients that require that all peripherals be
1434    /// reported can specify an empty filter.
1435    pub filters: Option<Vec<Filter>>,
1436    #[doc(hidden)]
1437    pub __source_breaking: fidl::marker::SourceBreaking,
1438}
1439
1440impl fidl::Persistable for ScanOptions {}
1441
1442#[derive(Clone, Debug)]
1443pub enum AdvertisingProcedure {
1444    /// Advertise using legacy advertising packets. All devices should be able
1445    /// to discover this type of packet.
1446    Legacy(Legacy),
1447    /// Advertise using extended advertising packets. Extended advertising
1448    /// packets allow for a much larger amount of data to be advertised than
1449    /// legacy advertising packets (31 bytes vs 251 bytes per PDU). Extended
1450    /// advertising packets support up to 1,650 bytes in an advertisement chain,
1451    /// but they are only discoverable by newer devices using Bluetooth 5.0+.
1452    ///
1453    /// Extended advertising packets are not supported by all
1454    /// products. PeripheralError::NOT_SUPPORTED will be returned if requested
1455    /// and not supported.
1456    Extended(Extended),
1457    #[doc(hidden)]
1458    __SourceBreaking { unknown_ordinal: u64 },
1459}
1460
1461/// Pattern that matches an unknown `AdvertisingProcedure` member.
1462#[macro_export]
1463macro_rules! AdvertisingProcedureUnknown {
1464    () => {
1465        _
1466    };
1467}
1468
1469// Custom PartialEq so that unknown variants are not equal to themselves.
1470impl PartialEq for AdvertisingProcedure {
1471    fn eq(&self, other: &Self) -> bool {
1472        match (self, other) {
1473            (Self::Legacy(x), Self::Legacy(y)) => *x == *y,
1474            (Self::Extended(x), Self::Extended(y)) => *x == *y,
1475            _ => false,
1476        }
1477    }
1478}
1479
1480impl AdvertisingProcedure {
1481    #[inline]
1482    pub fn ordinal(&self) -> u64 {
1483        match *self {
1484            Self::Legacy(_) => 1,
1485            Self::Extended(_) => 2,
1486            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1487        }
1488    }
1489
1490    #[inline]
1491    pub fn unknown_variant_for_testing() -> Self {
1492        Self::__SourceBreaking { unknown_ordinal: 0 }
1493    }
1494
1495    #[inline]
1496    pub fn is_unknown(&self) -> bool {
1497        match self {
1498            Self::__SourceBreaking { .. } => true,
1499            _ => false,
1500        }
1501    }
1502}
1503
1504impl fidl::Persistable for AdvertisingProcedure {}
1505
1506#[derive(Clone, Debug)]
1507pub enum SyncReport {
1508    PeriodicAdvertisingReport(PeriodicAdvertisingReport),
1509    BroadcastIsochronousGroupInfoReport(BroadcastIsochronousGroupInfoReport),
1510    #[doc(hidden)]
1511    __SourceBreaking {
1512        unknown_ordinal: u64,
1513    },
1514}
1515
1516/// Pattern that matches an unknown `SyncReport` member.
1517#[macro_export]
1518macro_rules! SyncReportUnknown {
1519    () => {
1520        _
1521    };
1522}
1523
1524// Custom PartialEq so that unknown variants are not equal to themselves.
1525impl PartialEq for SyncReport {
1526    fn eq(&self, other: &Self) -> bool {
1527        match (self, other) {
1528            (Self::PeriodicAdvertisingReport(x), Self::PeriodicAdvertisingReport(y)) => *x == *y,
1529            (
1530                Self::BroadcastIsochronousGroupInfoReport(x),
1531                Self::BroadcastIsochronousGroupInfoReport(y),
1532            ) => *x == *y,
1533            _ => false,
1534        }
1535    }
1536}
1537
1538impl SyncReport {
1539    #[inline]
1540    pub fn ordinal(&self) -> u64 {
1541        match *self {
1542            Self::PeriodicAdvertisingReport(_) => 1,
1543            Self::BroadcastIsochronousGroupInfoReport(_) => 2,
1544            Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1545        }
1546    }
1547
1548    #[inline]
1549    pub fn unknown_variant_for_testing() -> Self {
1550        Self::__SourceBreaking { unknown_ordinal: 0 }
1551    }
1552
1553    #[inline]
1554    pub fn is_unknown(&self) -> bool {
1555        match self {
1556            Self::__SourceBreaking { .. } => true,
1557            _ => false,
1558        }
1559    }
1560}
1561
1562impl fidl::Persistable for SyncReport {}
1563
1564pub mod advertised_peripheral_ordinals {
1565    pub const ON_CONNECTED: u64 = 0x607b7716457eb178;
1566}
1567
1568pub mod advertising_handle_ordinals {}
1569
1570pub mod central_ordinals {
1571    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1572    pub const SCAN: u64 = 0x41f7121798dfe15f;
1573    pub const CONNECT: u64 = 0x31a3065f2a6913c4;
1574    pub const SYNC_TO_PERIODIC_ADVERTISING: u64 = 0x1db6df126a00c5b9;
1575    pub const CREATE_CONNECTED_ISOCHRONOUS_GROUP: u64 = 0x60323e70ae22e13;
1576    pub const GET_PERIPHERALS: u64 = 0x37ba777499c683a8;
1577    pub const GET_PERIPHERAL: u64 = 0x97f5a2f2d9c13da;
1578    pub const START_SCAN: u64 = 0xeb4cf0cd0e1132b;
1579    pub const STOP_SCAN: u64 = 0x5f79ee6a0bb037a0;
1580    pub const CONNECT_PERIPHERAL: u64 = 0x714d6c32d066d75a;
1581    pub const DISCONNECT_PERIPHERAL: u64 = 0xa9430da197362fd;
1582    pub const ON_SCAN_STATE_CHANGED: u64 = 0x5f8edc23cad04d3f;
1583    pub const ON_DEVICE_DISCOVERED: u64 = 0x708dadf20d66db6;
1584    pub const ON_PERIPHERAL_DISCONNECTED: u64 = 0x4e4c6b979b2126df;
1585}
1586
1587pub mod channel_listener_ordinals {
1588    pub const ACCEPT: u64 = 0x6f535bd36b20fc7b;
1589}
1590
1591pub mod channel_listener_registry_ordinals {
1592    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1593}
1594
1595pub mod codec_delay_ordinals {
1596    pub const GET_CODEC_LOCAL_DELAY_RANGE: u64 = 0x1cf34fdeed80b4d;
1597}
1598
1599pub mod connected_isochronous_group_ordinals {
1600    pub const ESTABLISH_STREAMS: u64 = 0xc7296c5edb4dacc;
1601    pub const REMOVE: u64 = 0xbed433babd20503;
1602}
1603
1604pub mod connection_ordinals {
1605    pub const GET_CODEC_LOCAL_DELAY_RANGE: u64 = 0x1cf34fdeed80b4d;
1606    pub const REQUEST_GATT_CLIENT: u64 = 0x2a670e0fec6ccc6b;
1607    pub const ACCEPT_CIS: u64 = 0x7e6338c237088144;
1608    pub const CONNECT_L2CAP: u64 = 0x12351316feaebce9;
1609    pub const TRANSFER_PERIODIC_ADVERTISING_SYNC: u64 = 0x1117a10b5ba1e219;
1610    pub const ACCEPT_PERIODIC_ADVERTISING_SYNC_TRANSFER: u64 = 0x441a31a7effa7e2b;
1611}
1612
1613pub mod isochronous_stream_ordinals {
1614    pub const ON_ESTABLISHED: u64 = 0x341c50e9d10f3421;
1615    pub const SETUP_DATA_PATH: u64 = 0x7ec1e2b9cc6d2fbe;
1616    pub const READ: u64 = 0x6d7d8b4950ed3a32;
1617    pub const WRITE: u64 = 0x5282e90b667d0d43;
1618}
1619
1620pub mod periodic_advertising_sync_ordinals {
1621    pub const ON_ESTABLISHED: u64 = 0x4a5c307761c40fdc;
1622    pub const ON_ERROR: u64 = 0x1c051673126ce4a;
1623    pub const WATCH_ADVERTISING_REPORT: u64 = 0x2ea610fea0e7d337;
1624    pub const SYNC_TO_SUBEVENTS: u64 = 0x653c5dab1f1d80ed;
1625    pub const CANCEL: u64 = 0xd617c037eaf5d92;
1626}
1627
1628pub mod peripheral_ordinals {
1629    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1630    pub const ADVERTISE: u64 = 0x2d9ec9260c32c17f;
1631    pub const START_ADVERTISING: u64 = 0x5875c1c575f00f7d;
1632    pub const ON_PEER_CONNECTED: u64 = 0x16135d464299e356;
1633}
1634
1635pub mod privileged_peripheral_ordinals {
1636    pub const LISTEN_L2CAP: u64 = 0x39c6e9001d102338;
1637    pub const ADVERTISE: u64 = 0x2d9ec9260c32c17f;
1638    pub const START_ADVERTISING: u64 = 0x5875c1c575f00f7d;
1639    pub const ON_PEER_CONNECTED: u64 = 0x16135d464299e356;
1640}
1641
1642pub mod scan_result_watcher_ordinals {
1643    pub const WATCH: u64 = 0x713a122e949f301a;
1644}
1645
1646mod internal {
1647    use super::*;
1648    unsafe impl fidl::encoding::TypeMarker for AdvertisingModeHint {
1649        type Owned = Self;
1650
1651        #[inline(always)]
1652        fn inline_align(_context: fidl::encoding::Context) -> usize {
1653            std::mem::align_of::<u8>()
1654        }
1655
1656        #[inline(always)]
1657        fn inline_size(_context: fidl::encoding::Context) -> usize {
1658            std::mem::size_of::<u8>()
1659        }
1660
1661        #[inline(always)]
1662        fn encode_is_copy() -> bool {
1663            true
1664        }
1665
1666        #[inline(always)]
1667        fn decode_is_copy() -> bool {
1668            false
1669        }
1670    }
1671
1672    impl fidl::encoding::ValueTypeMarker for AdvertisingModeHint {
1673        type Borrowed<'a> = Self;
1674        #[inline(always)]
1675        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1676            *value
1677        }
1678    }
1679
1680    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1681        for AdvertisingModeHint
1682    {
1683        #[inline]
1684        unsafe fn encode(
1685            self,
1686            encoder: &mut fidl::encoding::Encoder<'_, D>,
1687            offset: usize,
1688            _depth: fidl::encoding::Depth,
1689        ) -> fidl::Result<()> {
1690            encoder.debug_check_bounds::<Self>(offset);
1691            encoder.write_num(self.into_primitive(), offset);
1692            Ok(())
1693        }
1694    }
1695
1696    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingModeHint {
1697        #[inline(always)]
1698        fn new_empty() -> Self {
1699            Self::VeryFast
1700        }
1701
1702        #[inline]
1703        unsafe fn decode(
1704            &mut self,
1705            decoder: &mut fidl::encoding::Decoder<'_, D>,
1706            offset: usize,
1707            _depth: fidl::encoding::Depth,
1708        ) -> fidl::Result<()> {
1709            decoder.debug_check_bounds::<Self>(offset);
1710            let prim = decoder.read_num::<u8>(offset);
1711
1712            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1713            Ok(())
1714        }
1715    }
1716    unsafe impl fidl::encoding::TypeMarker for CentralError {
1717        type Owned = Self;
1718
1719        #[inline(always)]
1720        fn inline_align(_context: fidl::encoding::Context) -> usize {
1721            std::mem::align_of::<u32>()
1722        }
1723
1724        #[inline(always)]
1725        fn inline_size(_context: fidl::encoding::Context) -> usize {
1726            std::mem::size_of::<u32>()
1727        }
1728
1729        #[inline(always)]
1730        fn encode_is_copy() -> bool {
1731            true
1732        }
1733
1734        #[inline(always)]
1735        fn decode_is_copy() -> bool {
1736            false
1737        }
1738    }
1739
1740    impl fidl::encoding::ValueTypeMarker for CentralError {
1741        type Borrowed<'a> = Self;
1742        #[inline(always)]
1743        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1744            *value
1745        }
1746    }
1747
1748    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CentralError {
1749        #[inline]
1750        unsafe fn encode(
1751            self,
1752            encoder: &mut fidl::encoding::Encoder<'_, D>,
1753            offset: usize,
1754            _depth: fidl::encoding::Depth,
1755        ) -> fidl::Result<()> {
1756            encoder.debug_check_bounds::<Self>(offset);
1757            encoder.write_num(self.into_primitive(), offset);
1758            Ok(())
1759        }
1760    }
1761
1762    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CentralError {
1763        #[inline(always)]
1764        fn new_empty() -> Self {
1765            Self::Aborted
1766        }
1767
1768        #[inline]
1769        unsafe fn decode(
1770            &mut self,
1771            decoder: &mut fidl::encoding::Decoder<'_, D>,
1772            offset: usize,
1773            _depth: fidl::encoding::Depth,
1774        ) -> fidl::Result<()> {
1775            decoder.debug_check_bounds::<Self>(offset);
1776            let prim = decoder.read_num::<u32>(offset);
1777
1778            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1779            Ok(())
1780        }
1781    }
1782    unsafe impl fidl::encoding::TypeMarker for CigFramingOptions {
1783        type Owned = Self;
1784
1785        #[inline(always)]
1786        fn inline_align(_context: fidl::encoding::Context) -> usize {
1787            std::mem::align_of::<u32>()
1788        }
1789
1790        #[inline(always)]
1791        fn inline_size(_context: fidl::encoding::Context) -> usize {
1792            std::mem::size_of::<u32>()
1793        }
1794
1795        #[inline(always)]
1796        fn encode_is_copy() -> bool {
1797            true
1798        }
1799
1800        #[inline(always)]
1801        fn decode_is_copy() -> bool {
1802            false
1803        }
1804    }
1805
1806    impl fidl::encoding::ValueTypeMarker for CigFramingOptions {
1807        type Borrowed<'a> = Self;
1808        #[inline(always)]
1809        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1810            *value
1811        }
1812    }
1813
1814    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1815        for CigFramingOptions
1816    {
1817        #[inline]
1818        unsafe fn encode(
1819            self,
1820            encoder: &mut fidl::encoding::Encoder<'_, D>,
1821            offset: usize,
1822            _depth: fidl::encoding::Depth,
1823        ) -> fidl::Result<()> {
1824            encoder.debug_check_bounds::<Self>(offset);
1825            encoder.write_num(self.into_primitive(), offset);
1826            Ok(())
1827        }
1828    }
1829
1830    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigFramingOptions {
1831        #[inline(always)]
1832        fn new_empty() -> Self {
1833            Self::Unframed
1834        }
1835
1836        #[inline]
1837        unsafe fn decode(
1838            &mut self,
1839            decoder: &mut fidl::encoding::Decoder<'_, D>,
1840            offset: usize,
1841            _depth: fidl::encoding::Depth,
1842        ) -> fidl::Result<()> {
1843            decoder.debug_check_bounds::<Self>(offset);
1844            let prim = decoder.read_num::<u32>(offset);
1845
1846            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1847            Ok(())
1848        }
1849    }
1850    unsafe impl fidl::encoding::TypeMarker for CigPacking {
1851        type Owned = Self;
1852
1853        #[inline(always)]
1854        fn inline_align(_context: fidl::encoding::Context) -> usize {
1855            std::mem::align_of::<u32>()
1856        }
1857
1858        #[inline(always)]
1859        fn inline_size(_context: fidl::encoding::Context) -> usize {
1860            std::mem::size_of::<u32>()
1861        }
1862
1863        #[inline(always)]
1864        fn encode_is_copy() -> bool {
1865            false
1866        }
1867
1868        #[inline(always)]
1869        fn decode_is_copy() -> bool {
1870            false
1871        }
1872    }
1873
1874    impl fidl::encoding::ValueTypeMarker for CigPacking {
1875        type Borrowed<'a> = Self;
1876        #[inline(always)]
1877        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1878            *value
1879        }
1880    }
1881
1882    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CigPacking {
1883        #[inline]
1884        unsafe fn encode(
1885            self,
1886            encoder: &mut fidl::encoding::Encoder<'_, D>,
1887            offset: usize,
1888            _depth: fidl::encoding::Depth,
1889        ) -> fidl::Result<()> {
1890            encoder.debug_check_bounds::<Self>(offset);
1891            encoder.write_num(self.into_primitive(), offset);
1892            Ok(())
1893        }
1894    }
1895
1896    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigPacking {
1897        #[inline(always)]
1898        fn new_empty() -> Self {
1899            Self::unknown()
1900        }
1901
1902        #[inline]
1903        unsafe fn decode(
1904            &mut self,
1905            decoder: &mut fidl::encoding::Decoder<'_, D>,
1906            offset: usize,
1907            _depth: fidl::encoding::Depth,
1908        ) -> fidl::Result<()> {
1909            decoder.debug_check_bounds::<Self>(offset);
1910            let prim = decoder.read_num::<u32>(offset);
1911
1912            *self = Self::from_primitive_allow_unknown(prim);
1913            Ok(())
1914        }
1915    }
1916    unsafe impl fidl::encoding::TypeMarker for CreateCigError {
1917        type Owned = Self;
1918
1919        #[inline(always)]
1920        fn inline_align(_context: fidl::encoding::Context) -> usize {
1921            std::mem::align_of::<u32>()
1922        }
1923
1924        #[inline(always)]
1925        fn inline_size(_context: fidl::encoding::Context) -> usize {
1926            std::mem::size_of::<u32>()
1927        }
1928
1929        #[inline(always)]
1930        fn encode_is_copy() -> bool {
1931            false
1932        }
1933
1934        #[inline(always)]
1935        fn decode_is_copy() -> bool {
1936            false
1937        }
1938    }
1939
1940    impl fidl::encoding::ValueTypeMarker for CreateCigError {
1941        type Borrowed<'a> = Self;
1942        #[inline(always)]
1943        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1944            *value
1945        }
1946    }
1947
1948    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for CreateCigError {
1949        #[inline]
1950        unsafe fn encode(
1951            self,
1952            encoder: &mut fidl::encoding::Encoder<'_, D>,
1953            offset: usize,
1954            _depth: fidl::encoding::Depth,
1955        ) -> fidl::Result<()> {
1956            encoder.debug_check_bounds::<Self>(offset);
1957            encoder.write_num(self.into_primitive(), offset);
1958            Ok(())
1959        }
1960    }
1961
1962    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CreateCigError {
1963        #[inline(always)]
1964        fn new_empty() -> Self {
1965            Self::unknown()
1966        }
1967
1968        #[inline]
1969        unsafe fn decode(
1970            &mut self,
1971            decoder: &mut fidl::encoding::Decoder<'_, D>,
1972            offset: usize,
1973            _depth: fidl::encoding::Depth,
1974        ) -> fidl::Result<()> {
1975            decoder.debug_check_bounds::<Self>(offset);
1976            let prim = decoder.read_num::<u32>(offset);
1977
1978            *self = Self::from_primitive_allow_unknown(prim);
1979            Ok(())
1980        }
1981    }
1982    unsafe impl fidl::encoding::TypeMarker for EstablishStreamsError {
1983        type Owned = Self;
1984
1985        #[inline(always)]
1986        fn inline_align(_context: fidl::encoding::Context) -> usize {
1987            std::mem::align_of::<u32>()
1988        }
1989
1990        #[inline(always)]
1991        fn inline_size(_context: fidl::encoding::Context) -> usize {
1992            std::mem::size_of::<u32>()
1993        }
1994
1995        #[inline(always)]
1996        fn encode_is_copy() -> bool {
1997            false
1998        }
1999
2000        #[inline(always)]
2001        fn decode_is_copy() -> bool {
2002            false
2003        }
2004    }
2005
2006    impl fidl::encoding::ValueTypeMarker for EstablishStreamsError {
2007        type Borrowed<'a> = Self;
2008        #[inline(always)]
2009        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2010            *value
2011        }
2012    }
2013
2014    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2015        for EstablishStreamsError
2016    {
2017        #[inline]
2018        unsafe fn encode(
2019            self,
2020            encoder: &mut fidl::encoding::Encoder<'_, D>,
2021            offset: usize,
2022            _depth: fidl::encoding::Depth,
2023        ) -> fidl::Result<()> {
2024            encoder.debug_check_bounds::<Self>(offset);
2025            encoder.write_num(self.into_primitive(), offset);
2026            Ok(())
2027        }
2028    }
2029
2030    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EstablishStreamsError {
2031        #[inline(always)]
2032        fn new_empty() -> Self {
2033            Self::unknown()
2034        }
2035
2036        #[inline]
2037        unsafe fn decode(
2038            &mut self,
2039            decoder: &mut fidl::encoding::Decoder<'_, D>,
2040            offset: usize,
2041            _depth: fidl::encoding::Depth,
2042        ) -> fidl::Result<()> {
2043            decoder.debug_check_bounds::<Self>(offset);
2044            let prim = decoder.read_num::<u32>(offset);
2045
2046            *self = Self::from_primitive_allow_unknown(prim);
2047            Ok(())
2048        }
2049    }
2050    unsafe impl fidl::encoding::TypeMarker for IsoPacketStatusFlag {
2051        type Owned = Self;
2052
2053        #[inline(always)]
2054        fn inline_align(_context: fidl::encoding::Context) -> usize {
2055            std::mem::align_of::<u8>()
2056        }
2057
2058        #[inline(always)]
2059        fn inline_size(_context: fidl::encoding::Context) -> usize {
2060            std::mem::size_of::<u8>()
2061        }
2062
2063        #[inline(always)]
2064        fn encode_is_copy() -> bool {
2065            true
2066        }
2067
2068        #[inline(always)]
2069        fn decode_is_copy() -> bool {
2070            false
2071        }
2072    }
2073
2074    impl fidl::encoding::ValueTypeMarker for IsoPacketStatusFlag {
2075        type Borrowed<'a> = Self;
2076        #[inline(always)]
2077        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2078            *value
2079        }
2080    }
2081
2082    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2083        for IsoPacketStatusFlag
2084    {
2085        #[inline]
2086        unsafe fn encode(
2087            self,
2088            encoder: &mut fidl::encoding::Encoder<'_, D>,
2089            offset: usize,
2090            _depth: fidl::encoding::Depth,
2091        ) -> fidl::Result<()> {
2092            encoder.debug_check_bounds::<Self>(offset);
2093            encoder.write_num(self.into_primitive(), offset);
2094            Ok(())
2095        }
2096    }
2097
2098    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for IsoPacketStatusFlag {
2099        #[inline(always)]
2100        fn new_empty() -> Self {
2101            Self::ValidData
2102        }
2103
2104        #[inline]
2105        unsafe fn decode(
2106            &mut self,
2107            decoder: &mut fidl::encoding::Decoder<'_, D>,
2108            offset: usize,
2109            _depth: fidl::encoding::Depth,
2110        ) -> fidl::Result<()> {
2111            decoder.debug_check_bounds::<Self>(offset);
2112            let prim = decoder.read_num::<u8>(offset);
2113
2114            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2115            Ok(())
2116        }
2117    }
2118    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncError {
2119        type Owned = Self;
2120
2121        #[inline(always)]
2122        fn inline_align(_context: fidl::encoding::Context) -> usize {
2123            std::mem::align_of::<u32>()
2124        }
2125
2126        #[inline(always)]
2127        fn inline_size(_context: fidl::encoding::Context) -> usize {
2128            std::mem::size_of::<u32>()
2129        }
2130
2131        #[inline(always)]
2132        fn encode_is_copy() -> bool {
2133            false
2134        }
2135
2136        #[inline(always)]
2137        fn decode_is_copy() -> bool {
2138            false
2139        }
2140    }
2141
2142    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncError {
2143        type Borrowed<'a> = Self;
2144        #[inline(always)]
2145        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2146            *value
2147        }
2148    }
2149
2150    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2151        for PeriodicAdvertisingSyncError
2152    {
2153        #[inline]
2154        unsafe fn encode(
2155            self,
2156            encoder: &mut fidl::encoding::Encoder<'_, D>,
2157            offset: usize,
2158            _depth: fidl::encoding::Depth,
2159        ) -> fidl::Result<()> {
2160            encoder.debug_check_bounds::<Self>(offset);
2161            encoder.write_num(self.into_primitive(), offset);
2162            Ok(())
2163        }
2164    }
2165
2166    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2167        for PeriodicAdvertisingSyncError
2168    {
2169        #[inline(always)]
2170        fn new_empty() -> Self {
2171            Self::unknown()
2172        }
2173
2174        #[inline]
2175        unsafe fn decode(
2176            &mut self,
2177            decoder: &mut fidl::encoding::Decoder<'_, D>,
2178            offset: usize,
2179            _depth: fidl::encoding::Depth,
2180        ) -> fidl::Result<()> {
2181            decoder.debug_check_bounds::<Self>(offset);
2182            let prim = decoder.read_num::<u32>(offset);
2183
2184            *self = Self::from_primitive_allow_unknown(prim);
2185            Ok(())
2186        }
2187    }
2188    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncTransferError {
2189        type Owned = Self;
2190
2191        #[inline(always)]
2192        fn inline_align(_context: fidl::encoding::Context) -> usize {
2193            std::mem::align_of::<u32>()
2194        }
2195
2196        #[inline(always)]
2197        fn inline_size(_context: fidl::encoding::Context) -> usize {
2198            std::mem::size_of::<u32>()
2199        }
2200
2201        #[inline(always)]
2202        fn encode_is_copy() -> bool {
2203            false
2204        }
2205
2206        #[inline(always)]
2207        fn decode_is_copy() -> bool {
2208            false
2209        }
2210    }
2211
2212    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncTransferError {
2213        type Borrowed<'a> = Self;
2214        #[inline(always)]
2215        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2216            *value
2217        }
2218    }
2219
2220    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2221        for PeriodicAdvertisingSyncTransferError
2222    {
2223        #[inline]
2224        unsafe fn encode(
2225            self,
2226            encoder: &mut fidl::encoding::Encoder<'_, D>,
2227            offset: usize,
2228            _depth: fidl::encoding::Depth,
2229        ) -> fidl::Result<()> {
2230            encoder.debug_check_bounds::<Self>(offset);
2231            encoder.write_num(self.into_primitive(), offset);
2232            Ok(())
2233        }
2234    }
2235
2236    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2237        for PeriodicAdvertisingSyncTransferError
2238    {
2239        #[inline(always)]
2240        fn new_empty() -> Self {
2241            Self::unknown()
2242        }
2243
2244        #[inline]
2245        unsafe fn decode(
2246            &mut self,
2247            decoder: &mut fidl::encoding::Decoder<'_, D>,
2248            offset: usize,
2249            _depth: fidl::encoding::Depth,
2250        ) -> fidl::Result<()> {
2251            decoder.debug_check_bounds::<Self>(offset);
2252            let prim = decoder.read_num::<u32>(offset);
2253
2254            *self = Self::from_primitive_allow_unknown(prim);
2255            Ok(())
2256        }
2257    }
2258    unsafe impl fidl::encoding::TypeMarker for PeripheralError {
2259        type Owned = Self;
2260
2261        #[inline(always)]
2262        fn inline_align(_context: fidl::encoding::Context) -> usize {
2263            std::mem::align_of::<u32>()
2264        }
2265
2266        #[inline(always)]
2267        fn inline_size(_context: fidl::encoding::Context) -> usize {
2268            std::mem::size_of::<u32>()
2269        }
2270
2271        #[inline(always)]
2272        fn encode_is_copy() -> bool {
2273            true
2274        }
2275
2276        #[inline(always)]
2277        fn decode_is_copy() -> bool {
2278            false
2279        }
2280    }
2281
2282    impl fidl::encoding::ValueTypeMarker for PeripheralError {
2283        type Borrowed<'a> = Self;
2284        #[inline(always)]
2285        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2286            *value
2287        }
2288    }
2289
2290    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2291        for PeripheralError
2292    {
2293        #[inline]
2294        unsafe fn encode(
2295            self,
2296            encoder: &mut fidl::encoding::Encoder<'_, D>,
2297            offset: usize,
2298            _depth: fidl::encoding::Depth,
2299        ) -> fidl::Result<()> {
2300            encoder.debug_check_bounds::<Self>(offset);
2301            encoder.write_num(self.into_primitive(), offset);
2302            Ok(())
2303        }
2304    }
2305
2306    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeripheralError {
2307        #[inline(always)]
2308        fn new_empty() -> Self {
2309            Self::NotSupported
2310        }
2311
2312        #[inline]
2313        unsafe fn decode(
2314            &mut self,
2315            decoder: &mut fidl::encoding::Decoder<'_, D>,
2316            offset: usize,
2317            _depth: fidl::encoding::Depth,
2318        ) -> fidl::Result<()> {
2319            decoder.debug_check_bounds::<Self>(offset);
2320            let prim = decoder.read_num::<u32>(offset);
2321
2322            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2323            Ok(())
2324        }
2325    }
2326    unsafe impl fidl::encoding::TypeMarker for PhysicalLayer {
2327        type Owned = Self;
2328
2329        #[inline(always)]
2330        fn inline_align(_context: fidl::encoding::Context) -> usize {
2331            std::mem::align_of::<u8>()
2332        }
2333
2334        #[inline(always)]
2335        fn inline_size(_context: fidl::encoding::Context) -> usize {
2336            std::mem::size_of::<u8>()
2337        }
2338
2339        #[inline(always)]
2340        fn encode_is_copy() -> bool {
2341            false
2342        }
2343
2344        #[inline(always)]
2345        fn decode_is_copy() -> bool {
2346            false
2347        }
2348    }
2349
2350    impl fidl::encoding::ValueTypeMarker for PhysicalLayer {
2351        type Borrowed<'a> = Self;
2352        #[inline(always)]
2353        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2354            *value
2355        }
2356    }
2357
2358    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PhysicalLayer {
2359        #[inline]
2360        unsafe fn encode(
2361            self,
2362            encoder: &mut fidl::encoding::Encoder<'_, D>,
2363            offset: usize,
2364            _depth: fidl::encoding::Depth,
2365        ) -> fidl::Result<()> {
2366            encoder.debug_check_bounds::<Self>(offset);
2367            encoder.write_num(self.into_primitive(), offset);
2368            Ok(())
2369        }
2370    }
2371
2372    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PhysicalLayer {
2373        #[inline(always)]
2374        fn new_empty() -> Self {
2375            Self::unknown()
2376        }
2377
2378        #[inline]
2379        unsafe fn decode(
2380            &mut self,
2381            decoder: &mut fidl::encoding::Decoder<'_, D>,
2382            offset: usize,
2383            _depth: fidl::encoding::Depth,
2384        ) -> fidl::Result<()> {
2385            decoder.debug_check_bounds::<Self>(offset);
2386            let prim = decoder.read_num::<u8>(offset);
2387
2388            *self = Self::from_primitive_allow_unknown(prim);
2389            Ok(())
2390        }
2391    }
2392
2393    impl fidl::encoding::ValueTypeMarker for AdvertisingDataDeprecated {
2394        type Borrowed<'a> = &'a Self;
2395        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2396            value
2397        }
2398    }
2399
2400    unsafe impl fidl::encoding::TypeMarker for AdvertisingDataDeprecated {
2401        type Owned = Self;
2402
2403        #[inline(always)]
2404        fn inline_align(_context: fidl::encoding::Context) -> usize {
2405            8
2406        }
2407
2408        #[inline(always)]
2409        fn inline_size(_context: fidl::encoding::Context) -> usize {
2410            112
2411        }
2412    }
2413
2414    unsafe impl<D: fidl::encoding::ResourceDialect>
2415        fidl::encoding::Encode<AdvertisingDataDeprecated, D> for &AdvertisingDataDeprecated
2416    {
2417        #[inline]
2418        unsafe fn encode(
2419            self,
2420            encoder: &mut fidl::encoding::Encoder<'_, D>,
2421            offset: usize,
2422            _depth: fidl::encoding::Depth,
2423        ) -> fidl::Result<()> {
2424            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2425            // Delegate to tuple encoding.
2426            fidl::encoding::Encode::<AdvertisingDataDeprecated, D>::encode(
2427                (
2428                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
2429                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_power_level),
2430                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.appearance),
2431                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
2432                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data),
2433                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_specific_data),
2434                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.solicited_service_uuids),
2435                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>> as fidl::encoding::ValueTypeMarker>::borrow(&self.uris),
2436                ),
2437                encoder, offset, _depth
2438            )
2439        }
2440    }
2441    unsafe impl<
2442        D: fidl::encoding::ResourceDialect,
2443        T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
2444        T1: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
2445        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>, D>,
2446        T3: fidl::encoding::Encode<
2447                fidl::encoding::Optional<
2448                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2449                >,
2450                D,
2451            >,
2452        T4: fidl::encoding::Encode<
2453                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2454                D,
2455            >,
2456        T5: fidl::encoding::Encode<
2457                fidl::encoding::Optional<
2458                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2459                >,
2460                D,
2461            >,
2462        T6: fidl::encoding::Encode<
2463                fidl::encoding::Optional<
2464                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2465                >,
2466                D,
2467            >,
2468        T7: fidl::encoding::Encode<
2469                fidl::encoding::Optional<
2470                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2471                >,
2472                D,
2473            >,
2474    > fidl::encoding::Encode<AdvertisingDataDeprecated, D> for (T0, T1, T2, T3, T4, T5, T6, T7)
2475    {
2476        #[inline]
2477        unsafe fn encode(
2478            self,
2479            encoder: &mut fidl::encoding::Encoder<'_, D>,
2480            offset: usize,
2481            depth: fidl::encoding::Depth,
2482        ) -> fidl::Result<()> {
2483            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2484            // Zero out padding regions. There's no need to apply masks
2485            // because the unmasked parts will be overwritten by fields.
2486            // Write the fields.
2487            self.0.encode(encoder, offset + 0, depth)?;
2488            self.1.encode(encoder, offset + 16, depth)?;
2489            self.2.encode(encoder, offset + 24, depth)?;
2490            self.3.encode(encoder, offset + 32, depth)?;
2491            self.4.encode(encoder, offset + 48, depth)?;
2492            self.5.encode(encoder, offset + 64, depth)?;
2493            self.6.encode(encoder, offset + 80, depth)?;
2494            self.7.encode(encoder, offset + 96, depth)?;
2495            Ok(())
2496        }
2497    }
2498
2499    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2500        for AdvertisingDataDeprecated
2501    {
2502        #[inline(always)]
2503        fn new_empty() -> Self {
2504            Self {
2505                name: fidl::new_empty!(
2506                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2507                    D
2508                ),
2509                tx_power_level: fidl::new_empty!(
2510                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2511                    D
2512                ),
2513                appearance: fidl::new_empty!(
2514                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2515                    D
2516                ),
2517                service_uuids: fidl::new_empty!(
2518                    fidl::encoding::Optional<
2519                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2520                    >,
2521                    D
2522                ),
2523                service_data: fidl::new_empty!(
2524                    fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2525                    D
2526                ),
2527                manufacturer_specific_data: fidl::new_empty!(
2528                    fidl::encoding::Optional<
2529                        fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2530                    >,
2531                    D
2532                ),
2533                solicited_service_uuids: fidl::new_empty!(
2534                    fidl::encoding::Optional<
2535                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2536                    >,
2537                    D
2538                ),
2539                uris: fidl::new_empty!(
2540                    fidl::encoding::Optional<
2541                        fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2542                    >,
2543                    D
2544                ),
2545            }
2546        }
2547
2548        #[inline]
2549        unsafe fn decode(
2550            &mut self,
2551            decoder: &mut fidl::encoding::Decoder<'_, D>,
2552            offset: usize,
2553            _depth: fidl::encoding::Depth,
2554        ) -> fidl::Result<()> {
2555            decoder.debug_check_bounds::<Self>(offset);
2556            // Verify that padding bytes are zero.
2557            fidl::decode!(
2558                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2559                D,
2560                &mut self.name,
2561                decoder,
2562                offset + 0,
2563                _depth
2564            )?;
2565            fidl::decode!(
2566                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2567                D,
2568                &mut self.tx_power_level,
2569                decoder,
2570                offset + 16,
2571                _depth
2572            )?;
2573            fidl::decode!(
2574                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2575                D,
2576                &mut self.appearance,
2577                decoder,
2578                offset + 24,
2579                _depth
2580            )?;
2581            fidl::decode!(
2582                fidl::encoding::Optional<
2583                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2584                >,
2585                D,
2586                &mut self.service_uuids,
2587                decoder,
2588                offset + 32,
2589                _depth
2590            )?;
2591            fidl::decode!(
2592                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2593                D,
2594                &mut self.service_data,
2595                decoder,
2596                offset + 48,
2597                _depth
2598            )?;
2599            fidl::decode!(
2600                fidl::encoding::Optional<
2601                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2602                >,
2603                D,
2604                &mut self.manufacturer_specific_data,
2605                decoder,
2606                offset + 64,
2607                _depth
2608            )?;
2609            fidl::decode!(
2610                fidl::encoding::Optional<
2611                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2612                >,
2613                D,
2614                &mut self.solicited_service_uuids,
2615                decoder,
2616                offset + 80,
2617                _depth
2618            )?;
2619            fidl::decode!(
2620                fidl::encoding::Optional<
2621                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2622                >,
2623                D,
2624                &mut self.uris,
2625                decoder,
2626                offset + 96,
2627                _depth
2628            )?;
2629            Ok(())
2630        }
2631    }
2632
2633    impl fidl::encoding::ValueTypeMarker for CentralConnectPeripheralResponse {
2634        type Borrowed<'a> = &'a Self;
2635        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2636            value
2637        }
2638    }
2639
2640    unsafe impl fidl::encoding::TypeMarker for CentralConnectPeripheralResponse {
2641        type Owned = Self;
2642
2643        #[inline(always)]
2644        fn inline_align(_context: fidl::encoding::Context) -> usize {
2645            8
2646        }
2647
2648        #[inline(always)]
2649        fn inline_size(_context: fidl::encoding::Context) -> usize {
2650            8
2651        }
2652    }
2653
2654    unsafe impl<D: fidl::encoding::ResourceDialect>
2655        fidl::encoding::Encode<CentralConnectPeripheralResponse, D>
2656        for &CentralConnectPeripheralResponse
2657    {
2658        #[inline]
2659        unsafe fn encode(
2660            self,
2661            encoder: &mut fidl::encoding::Encoder<'_, D>,
2662            offset: usize,
2663            _depth: fidl::encoding::Depth,
2664        ) -> fidl::Result<()> {
2665            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2666            // Delegate to tuple encoding.
2667            fidl::encoding::Encode::<CentralConnectPeripheralResponse, D>::encode(
2668                (
2669                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2670                ),
2671                encoder, offset, _depth
2672            )
2673        }
2674    }
2675    unsafe impl<
2676        D: fidl::encoding::ResourceDialect,
2677        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2678    > fidl::encoding::Encode<CentralConnectPeripheralResponse, D> for (T0,)
2679    {
2680        #[inline]
2681        unsafe fn encode(
2682            self,
2683            encoder: &mut fidl::encoding::Encoder<'_, D>,
2684            offset: usize,
2685            depth: fidl::encoding::Depth,
2686        ) -> fidl::Result<()> {
2687            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2688            // Zero out padding regions. There's no need to apply masks
2689            // because the unmasked parts will be overwritten by fields.
2690            // Write the fields.
2691            self.0.encode(encoder, offset + 0, depth)?;
2692            Ok(())
2693        }
2694    }
2695
2696    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2697        for CentralConnectPeripheralResponse
2698    {
2699        #[inline(always)]
2700        fn new_empty() -> Self {
2701            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2702        }
2703
2704        #[inline]
2705        unsafe fn decode(
2706            &mut self,
2707            decoder: &mut fidl::encoding::Decoder<'_, D>,
2708            offset: usize,
2709            _depth: fidl::encoding::Depth,
2710        ) -> fidl::Result<()> {
2711            decoder.debug_check_bounds::<Self>(offset);
2712            // Verify that padding bytes are zero.
2713            fidl::decode!(
2714                fidl_fuchsia_bluetooth__common::Status,
2715                D,
2716                &mut self.status,
2717                decoder,
2718                offset + 0,
2719                _depth
2720            )?;
2721            Ok(())
2722        }
2723    }
2724
2725    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralRequest {
2726        type Borrowed<'a> = &'a Self;
2727        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2728            value
2729        }
2730    }
2731
2732    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralRequest {
2733        type Owned = Self;
2734
2735        #[inline(always)]
2736        fn inline_align(_context: fidl::encoding::Context) -> usize {
2737            8
2738        }
2739
2740        #[inline(always)]
2741        fn inline_size(_context: fidl::encoding::Context) -> usize {
2742            16
2743        }
2744    }
2745
2746    unsafe impl<D: fidl::encoding::ResourceDialect>
2747        fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D>
2748        for &CentralDisconnectPeripheralRequest
2749    {
2750        #[inline]
2751        unsafe fn encode(
2752            self,
2753            encoder: &mut fidl::encoding::Encoder<'_, D>,
2754            offset: usize,
2755            _depth: fidl::encoding::Depth,
2756        ) -> fidl::Result<()> {
2757            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2758            // Delegate to tuple encoding.
2759            fidl::encoding::Encode::<CentralDisconnectPeripheralRequest, D>::encode(
2760                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2761                    &self.identifier,
2762                ),),
2763                encoder,
2764                offset,
2765                _depth,
2766            )
2767        }
2768    }
2769    unsafe impl<
2770        D: fidl::encoding::ResourceDialect,
2771        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2772    > fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D> for (T0,)
2773    {
2774        #[inline]
2775        unsafe fn encode(
2776            self,
2777            encoder: &mut fidl::encoding::Encoder<'_, D>,
2778            offset: usize,
2779            depth: fidl::encoding::Depth,
2780        ) -> fidl::Result<()> {
2781            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2782            // Zero out padding regions. There's no need to apply masks
2783            // because the unmasked parts will be overwritten by fields.
2784            // Write the fields.
2785            self.0.encode(encoder, offset + 0, depth)?;
2786            Ok(())
2787        }
2788    }
2789
2790    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2791        for CentralDisconnectPeripheralRequest
2792    {
2793        #[inline(always)]
2794        fn new_empty() -> Self {
2795            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2796        }
2797
2798        #[inline]
2799        unsafe fn decode(
2800            &mut self,
2801            decoder: &mut fidl::encoding::Decoder<'_, D>,
2802            offset: usize,
2803            _depth: fidl::encoding::Depth,
2804        ) -> fidl::Result<()> {
2805            decoder.debug_check_bounds::<Self>(offset);
2806            // Verify that padding bytes are zero.
2807            fidl::decode!(
2808                fidl::encoding::BoundedString<16>,
2809                D,
2810                &mut self.identifier,
2811                decoder,
2812                offset + 0,
2813                _depth
2814            )?;
2815            Ok(())
2816        }
2817    }
2818
2819    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralResponse {
2820        type Borrowed<'a> = &'a Self;
2821        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2822            value
2823        }
2824    }
2825
2826    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralResponse {
2827        type Owned = Self;
2828
2829        #[inline(always)]
2830        fn inline_align(_context: fidl::encoding::Context) -> usize {
2831            8
2832        }
2833
2834        #[inline(always)]
2835        fn inline_size(_context: fidl::encoding::Context) -> usize {
2836            8
2837        }
2838    }
2839
2840    unsafe impl<D: fidl::encoding::ResourceDialect>
2841        fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D>
2842        for &CentralDisconnectPeripheralResponse
2843    {
2844        #[inline]
2845        unsafe fn encode(
2846            self,
2847            encoder: &mut fidl::encoding::Encoder<'_, D>,
2848            offset: usize,
2849            _depth: fidl::encoding::Depth,
2850        ) -> fidl::Result<()> {
2851            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2852            // Delegate to tuple encoding.
2853            fidl::encoding::Encode::<CentralDisconnectPeripheralResponse, D>::encode(
2854                (
2855                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2856                ),
2857                encoder, offset, _depth
2858            )
2859        }
2860    }
2861    unsafe impl<
2862        D: fidl::encoding::ResourceDialect,
2863        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2864    > fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D> for (T0,)
2865    {
2866        #[inline]
2867        unsafe fn encode(
2868            self,
2869            encoder: &mut fidl::encoding::Encoder<'_, D>,
2870            offset: usize,
2871            depth: fidl::encoding::Depth,
2872        ) -> fidl::Result<()> {
2873            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2874            // Zero out padding regions. There's no need to apply masks
2875            // because the unmasked parts will be overwritten by fields.
2876            // Write the fields.
2877            self.0.encode(encoder, offset + 0, depth)?;
2878            Ok(())
2879        }
2880    }
2881
2882    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2883        for CentralDisconnectPeripheralResponse
2884    {
2885        #[inline(always)]
2886        fn new_empty() -> Self {
2887            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2888        }
2889
2890        #[inline]
2891        unsafe fn decode(
2892            &mut self,
2893            decoder: &mut fidl::encoding::Decoder<'_, D>,
2894            offset: usize,
2895            _depth: fidl::encoding::Depth,
2896        ) -> fidl::Result<()> {
2897            decoder.debug_check_bounds::<Self>(offset);
2898            // Verify that padding bytes are zero.
2899            fidl::decode!(
2900                fidl_fuchsia_bluetooth__common::Status,
2901                D,
2902                &mut self.status,
2903                decoder,
2904                offset + 0,
2905                _depth
2906            )?;
2907            Ok(())
2908        }
2909    }
2910
2911    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralRequest {
2912        type Borrowed<'a> = &'a Self;
2913        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2914            value
2915        }
2916    }
2917
2918    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralRequest {
2919        type Owned = Self;
2920
2921        #[inline(always)]
2922        fn inline_align(_context: fidl::encoding::Context) -> usize {
2923            8
2924        }
2925
2926        #[inline(always)]
2927        fn inline_size(_context: fidl::encoding::Context) -> usize {
2928            16
2929        }
2930    }
2931
2932    unsafe impl<D: fidl::encoding::ResourceDialect>
2933        fidl::encoding::Encode<CentralGetPeripheralRequest, D> for &CentralGetPeripheralRequest
2934    {
2935        #[inline]
2936        unsafe fn encode(
2937            self,
2938            encoder: &mut fidl::encoding::Encoder<'_, D>,
2939            offset: usize,
2940            _depth: fidl::encoding::Depth,
2941        ) -> fidl::Result<()> {
2942            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
2943            // Delegate to tuple encoding.
2944            fidl::encoding::Encode::<CentralGetPeripheralRequest, D>::encode(
2945                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2946                    &self.identifier,
2947                ),),
2948                encoder,
2949                offset,
2950                _depth,
2951            )
2952        }
2953    }
2954    unsafe impl<
2955        D: fidl::encoding::ResourceDialect,
2956        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2957    > fidl::encoding::Encode<CentralGetPeripheralRequest, D> for (T0,)
2958    {
2959        #[inline]
2960        unsafe fn encode(
2961            self,
2962            encoder: &mut fidl::encoding::Encoder<'_, D>,
2963            offset: usize,
2964            depth: fidl::encoding::Depth,
2965        ) -> fidl::Result<()> {
2966            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
2967            // Zero out padding regions. There's no need to apply masks
2968            // because the unmasked parts will be overwritten by fields.
2969            // Write the fields.
2970            self.0.encode(encoder, offset + 0, depth)?;
2971            Ok(())
2972        }
2973    }
2974
2975    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2976        for CentralGetPeripheralRequest
2977    {
2978        #[inline(always)]
2979        fn new_empty() -> Self {
2980            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2981        }
2982
2983        #[inline]
2984        unsafe fn decode(
2985            &mut self,
2986            decoder: &mut fidl::encoding::Decoder<'_, D>,
2987            offset: usize,
2988            _depth: fidl::encoding::Depth,
2989        ) -> fidl::Result<()> {
2990            decoder.debug_check_bounds::<Self>(offset);
2991            // Verify that padding bytes are zero.
2992            fidl::decode!(
2993                fidl::encoding::BoundedString<16>,
2994                D,
2995                &mut self.identifier,
2996                decoder,
2997                offset + 0,
2998                _depth
2999            )?;
3000            Ok(())
3001        }
3002    }
3003
3004    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralResponse {
3005        type Borrowed<'a> = &'a Self;
3006        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3007            value
3008        }
3009    }
3010
3011    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralResponse {
3012        type Owned = Self;
3013
3014        #[inline(always)]
3015        fn inline_align(_context: fidl::encoding::Context) -> usize {
3016            8
3017        }
3018
3019        #[inline(always)]
3020        fn inline_size(_context: fidl::encoding::Context) -> usize {
3021            8
3022        }
3023    }
3024
3025    unsafe impl<D: fidl::encoding::ResourceDialect>
3026        fidl::encoding::Encode<CentralGetPeripheralResponse, D> for &CentralGetPeripheralResponse
3027    {
3028        #[inline]
3029        unsafe fn encode(
3030            self,
3031            encoder: &mut fidl::encoding::Encoder<'_, D>,
3032            offset: usize,
3033            _depth: fidl::encoding::Depth,
3034        ) -> fidl::Result<()> {
3035            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3036            // Delegate to tuple encoding.
3037            fidl::encoding::Encode::<CentralGetPeripheralResponse, D>::encode(
3038                (<fidl::encoding::Boxed<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(
3039                    &self.peripheral,
3040                ),),
3041                encoder,
3042                offset,
3043                _depth,
3044            )
3045        }
3046    }
3047    unsafe impl<
3048        D: fidl::encoding::ResourceDialect,
3049        T0: fidl::encoding::Encode<fidl::encoding::Boxed<RemoteDevice>, D>,
3050    > fidl::encoding::Encode<CentralGetPeripheralResponse, D> for (T0,)
3051    {
3052        #[inline]
3053        unsafe fn encode(
3054            self,
3055            encoder: &mut fidl::encoding::Encoder<'_, D>,
3056            offset: usize,
3057            depth: fidl::encoding::Depth,
3058        ) -> fidl::Result<()> {
3059            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3060            // Zero out padding regions. There's no need to apply masks
3061            // because the unmasked parts will be overwritten by fields.
3062            // Write the fields.
3063            self.0.encode(encoder, offset + 0, depth)?;
3064            Ok(())
3065        }
3066    }
3067
3068    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3069        for CentralGetPeripheralResponse
3070    {
3071        #[inline(always)]
3072        fn new_empty() -> Self {
3073            Self { peripheral: fidl::new_empty!(fidl::encoding::Boxed<RemoteDevice>, D) }
3074        }
3075
3076        #[inline]
3077        unsafe fn decode(
3078            &mut self,
3079            decoder: &mut fidl::encoding::Decoder<'_, D>,
3080            offset: usize,
3081            _depth: fidl::encoding::Depth,
3082        ) -> fidl::Result<()> {
3083            decoder.debug_check_bounds::<Self>(offset);
3084            // Verify that padding bytes are zero.
3085            fidl::decode!(
3086                fidl::encoding::Boxed<RemoteDevice>,
3087                D,
3088                &mut self.peripheral,
3089                decoder,
3090                offset + 0,
3091                _depth
3092            )?;
3093            Ok(())
3094        }
3095    }
3096
3097    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsRequest {
3098        type Borrowed<'a> = &'a Self;
3099        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3100            value
3101        }
3102    }
3103
3104    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsRequest {
3105        type Owned = Self;
3106
3107        #[inline(always)]
3108        fn inline_align(_context: fidl::encoding::Context) -> usize {
3109            8
3110        }
3111
3112        #[inline(always)]
3113        fn inline_size(_context: fidl::encoding::Context) -> usize {
3114            16
3115        }
3116    }
3117
3118    unsafe impl<D: fidl::encoding::ResourceDialect>
3119        fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for &CentralGetPeripheralsRequest
3120    {
3121        #[inline]
3122        unsafe fn encode(
3123            self,
3124            encoder: &mut fidl::encoding::Encoder<'_, D>,
3125            offset: usize,
3126            _depth: fidl::encoding::Depth,
3127        ) -> fidl::Result<()> {
3128            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3129            // Delegate to tuple encoding.
3130            fidl::encoding::Encode::<CentralGetPeripheralsRequest, D>::encode(
3131                (<fidl::encoding::Optional<
3132                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3133                > as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),),
3134                encoder,
3135                offset,
3136                _depth,
3137            )
3138        }
3139    }
3140    unsafe impl<
3141        D: fidl::encoding::ResourceDialect,
3142        T0: fidl::encoding::Encode<
3143                fidl::encoding::Optional<
3144                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3145                >,
3146                D,
3147            >,
3148    > fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for (T0,)
3149    {
3150        #[inline]
3151        unsafe fn encode(
3152            self,
3153            encoder: &mut fidl::encoding::Encoder<'_, D>,
3154            offset: usize,
3155            depth: fidl::encoding::Depth,
3156        ) -> fidl::Result<()> {
3157            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3158            // Zero out padding regions. There's no need to apply masks
3159            // because the unmasked parts will be overwritten by fields.
3160            // Write the fields.
3161            self.0.encode(encoder, offset + 0, depth)?;
3162            Ok(())
3163        }
3164    }
3165
3166    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3167        for CentralGetPeripheralsRequest
3168    {
3169        #[inline(always)]
3170        fn new_empty() -> Self {
3171            Self {
3172                service_uuids: fidl::new_empty!(
3173                    fidl::encoding::Optional<
3174                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3175                    >,
3176                    D
3177                ),
3178            }
3179        }
3180
3181        #[inline]
3182        unsafe fn decode(
3183            &mut self,
3184            decoder: &mut fidl::encoding::Decoder<'_, D>,
3185            offset: usize,
3186            _depth: fidl::encoding::Depth,
3187        ) -> fidl::Result<()> {
3188            decoder.debug_check_bounds::<Self>(offset);
3189            // Verify that padding bytes are zero.
3190            fidl::decode!(
3191                fidl::encoding::Optional<
3192                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3193                >,
3194                D,
3195                &mut self.service_uuids,
3196                decoder,
3197                offset + 0,
3198                _depth
3199            )?;
3200            Ok(())
3201        }
3202    }
3203
3204    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsResponse {
3205        type Borrowed<'a> = &'a Self;
3206        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3207            value
3208        }
3209    }
3210
3211    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsResponse {
3212        type Owned = Self;
3213
3214        #[inline(always)]
3215        fn inline_align(_context: fidl::encoding::Context) -> usize {
3216            8
3217        }
3218
3219        #[inline(always)]
3220        fn inline_size(_context: fidl::encoding::Context) -> usize {
3221            16
3222        }
3223    }
3224
3225    unsafe impl<D: fidl::encoding::ResourceDialect>
3226        fidl::encoding::Encode<CentralGetPeripheralsResponse, D>
3227        for &CentralGetPeripheralsResponse
3228    {
3229        #[inline]
3230        unsafe fn encode(
3231            self,
3232            encoder: &mut fidl::encoding::Encoder<'_, D>,
3233            offset: usize,
3234            _depth: fidl::encoding::Depth,
3235        ) -> fidl::Result<()> {
3236            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3237            // Delegate to tuple encoding.
3238            fidl::encoding::Encode::<CentralGetPeripheralsResponse, D>::encode(
3239                (
3240                    <fidl::encoding::UnboundedVector<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(&self.peripherals),
3241                ),
3242                encoder, offset, _depth
3243            )
3244        }
3245    }
3246    unsafe impl<
3247        D: fidl::encoding::ResourceDialect,
3248        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<RemoteDevice>, D>,
3249    > fidl::encoding::Encode<CentralGetPeripheralsResponse, D> for (T0,)
3250    {
3251        #[inline]
3252        unsafe fn encode(
3253            self,
3254            encoder: &mut fidl::encoding::Encoder<'_, D>,
3255            offset: usize,
3256            depth: fidl::encoding::Depth,
3257        ) -> fidl::Result<()> {
3258            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3259            // Zero out padding regions. There's no need to apply masks
3260            // because the unmasked parts will be overwritten by fields.
3261            // Write the fields.
3262            self.0.encode(encoder, offset + 0, depth)?;
3263            Ok(())
3264        }
3265    }
3266
3267    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3268        for CentralGetPeripheralsResponse
3269    {
3270        #[inline(always)]
3271        fn new_empty() -> Self {
3272            Self { peripherals: fidl::new_empty!(fidl::encoding::UnboundedVector<RemoteDevice>, D) }
3273        }
3274
3275        #[inline]
3276        unsafe fn decode(
3277            &mut self,
3278            decoder: &mut fidl::encoding::Decoder<'_, D>,
3279            offset: usize,
3280            _depth: fidl::encoding::Depth,
3281        ) -> fidl::Result<()> {
3282            decoder.debug_check_bounds::<Self>(offset);
3283            // Verify that padding bytes are zero.
3284            fidl::decode!(
3285                fidl::encoding::UnboundedVector<RemoteDevice>,
3286                D,
3287                &mut self.peripherals,
3288                decoder,
3289                offset + 0,
3290                _depth
3291            )?;
3292            Ok(())
3293        }
3294    }
3295
3296    impl fidl::encoding::ValueTypeMarker for CentralOnDeviceDiscoveredRequest {
3297        type Borrowed<'a> = &'a Self;
3298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3299            value
3300        }
3301    }
3302
3303    unsafe impl fidl::encoding::TypeMarker for CentralOnDeviceDiscoveredRequest {
3304        type Owned = Self;
3305
3306        #[inline(always)]
3307        fn inline_align(_context: fidl::encoding::Context) -> usize {
3308            8
3309        }
3310
3311        #[inline(always)]
3312        fn inline_size(_context: fidl::encoding::Context) -> usize {
3313            40
3314        }
3315    }
3316
3317    unsafe impl<D: fidl::encoding::ResourceDialect>
3318        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D>
3319        for &CentralOnDeviceDiscoveredRequest
3320    {
3321        #[inline]
3322        unsafe fn encode(
3323            self,
3324            encoder: &mut fidl::encoding::Encoder<'_, D>,
3325            offset: usize,
3326            _depth: fidl::encoding::Depth,
3327        ) -> fidl::Result<()> {
3328            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3329            // Delegate to tuple encoding.
3330            fidl::encoding::Encode::<CentralOnDeviceDiscoveredRequest, D>::encode(
3331                (<RemoteDevice as fidl::encoding::ValueTypeMarker>::borrow(&self.device),),
3332                encoder,
3333                offset,
3334                _depth,
3335            )
3336        }
3337    }
3338    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RemoteDevice, D>>
3339        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D> for (T0,)
3340    {
3341        #[inline]
3342        unsafe fn encode(
3343            self,
3344            encoder: &mut fidl::encoding::Encoder<'_, D>,
3345            offset: usize,
3346            depth: fidl::encoding::Depth,
3347        ) -> fidl::Result<()> {
3348            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3349            // Zero out padding regions. There's no need to apply masks
3350            // because the unmasked parts will be overwritten by fields.
3351            // Write the fields.
3352            self.0.encode(encoder, offset + 0, depth)?;
3353            Ok(())
3354        }
3355    }
3356
3357    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3358        for CentralOnDeviceDiscoveredRequest
3359    {
3360        #[inline(always)]
3361        fn new_empty() -> Self {
3362            Self { device: fidl::new_empty!(RemoteDevice, D) }
3363        }
3364
3365        #[inline]
3366        unsafe fn decode(
3367            &mut self,
3368            decoder: &mut fidl::encoding::Decoder<'_, D>,
3369            offset: usize,
3370            _depth: fidl::encoding::Depth,
3371        ) -> fidl::Result<()> {
3372            decoder.debug_check_bounds::<Self>(offset);
3373            // Verify that padding bytes are zero.
3374            fidl::decode!(RemoteDevice, D, &mut self.device, decoder, offset + 0, _depth)?;
3375            Ok(())
3376        }
3377    }
3378
3379    impl fidl::encoding::ValueTypeMarker for CentralOnPeripheralDisconnectedRequest {
3380        type Borrowed<'a> = &'a Self;
3381        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3382            value
3383        }
3384    }
3385
3386    unsafe impl fidl::encoding::TypeMarker for CentralOnPeripheralDisconnectedRequest {
3387        type Owned = Self;
3388
3389        #[inline(always)]
3390        fn inline_align(_context: fidl::encoding::Context) -> usize {
3391            8
3392        }
3393
3394        #[inline(always)]
3395        fn inline_size(_context: fidl::encoding::Context) -> usize {
3396            16
3397        }
3398    }
3399
3400    unsafe impl<D: fidl::encoding::ResourceDialect>
3401        fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D>
3402        for &CentralOnPeripheralDisconnectedRequest
3403    {
3404        #[inline]
3405        unsafe fn encode(
3406            self,
3407            encoder: &mut fidl::encoding::Encoder<'_, D>,
3408            offset: usize,
3409            _depth: fidl::encoding::Depth,
3410        ) -> fidl::Result<()> {
3411            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3412            // Delegate to tuple encoding.
3413            fidl::encoding::Encode::<CentralOnPeripheralDisconnectedRequest, D>::encode(
3414                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
3415                    &self.identifier,
3416                ),),
3417                encoder,
3418                offset,
3419                _depth,
3420            )
3421        }
3422    }
3423    unsafe impl<
3424        D: fidl::encoding::ResourceDialect,
3425        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
3426    > fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D> for (T0,)
3427    {
3428        #[inline]
3429        unsafe fn encode(
3430            self,
3431            encoder: &mut fidl::encoding::Encoder<'_, D>,
3432            offset: usize,
3433            depth: fidl::encoding::Depth,
3434        ) -> fidl::Result<()> {
3435            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3436            // Zero out padding regions. There's no need to apply masks
3437            // because the unmasked parts will be overwritten by fields.
3438            // Write the fields.
3439            self.0.encode(encoder, offset + 0, depth)?;
3440            Ok(())
3441        }
3442    }
3443
3444    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3445        for CentralOnPeripheralDisconnectedRequest
3446    {
3447        #[inline(always)]
3448        fn new_empty() -> Self {
3449            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
3450        }
3451
3452        #[inline]
3453        unsafe fn decode(
3454            &mut self,
3455            decoder: &mut fidl::encoding::Decoder<'_, D>,
3456            offset: usize,
3457            _depth: fidl::encoding::Depth,
3458        ) -> fidl::Result<()> {
3459            decoder.debug_check_bounds::<Self>(offset);
3460            // Verify that padding bytes are zero.
3461            fidl::decode!(
3462                fidl::encoding::BoundedString<16>,
3463                D,
3464                &mut self.identifier,
3465                decoder,
3466                offset + 0,
3467                _depth
3468            )?;
3469            Ok(())
3470        }
3471    }
3472
3473    impl fidl::encoding::ValueTypeMarker for CentralOnScanStateChangedRequest {
3474        type Borrowed<'a> = &'a Self;
3475        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3476            value
3477        }
3478    }
3479
3480    unsafe impl fidl::encoding::TypeMarker for CentralOnScanStateChangedRequest {
3481        type Owned = Self;
3482
3483        #[inline(always)]
3484        fn inline_align(_context: fidl::encoding::Context) -> usize {
3485            1
3486        }
3487
3488        #[inline(always)]
3489        fn inline_size(_context: fidl::encoding::Context) -> usize {
3490            1
3491        }
3492    }
3493
3494    unsafe impl<D: fidl::encoding::ResourceDialect>
3495        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D>
3496        for &CentralOnScanStateChangedRequest
3497    {
3498        #[inline]
3499        unsafe fn encode(
3500            self,
3501            encoder: &mut fidl::encoding::Encoder<'_, D>,
3502            offset: usize,
3503            _depth: fidl::encoding::Depth,
3504        ) -> fidl::Result<()> {
3505            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3506            // Delegate to tuple encoding.
3507            fidl::encoding::Encode::<CentralOnScanStateChangedRequest, D>::encode(
3508                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.scanning),),
3509                encoder,
3510                offset,
3511                _depth,
3512            )
3513        }
3514    }
3515    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
3516        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D> for (T0,)
3517    {
3518        #[inline]
3519        unsafe fn encode(
3520            self,
3521            encoder: &mut fidl::encoding::Encoder<'_, D>,
3522            offset: usize,
3523            depth: fidl::encoding::Depth,
3524        ) -> fidl::Result<()> {
3525            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3526            // Zero out padding regions. There's no need to apply masks
3527            // because the unmasked parts will be overwritten by fields.
3528            // Write the fields.
3529            self.0.encode(encoder, offset + 0, depth)?;
3530            Ok(())
3531        }
3532    }
3533
3534    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3535        for CentralOnScanStateChangedRequest
3536    {
3537        #[inline(always)]
3538        fn new_empty() -> Self {
3539            Self { scanning: fidl::new_empty!(bool, D) }
3540        }
3541
3542        #[inline]
3543        unsafe fn decode(
3544            &mut self,
3545            decoder: &mut fidl::encoding::Decoder<'_, D>,
3546            offset: usize,
3547            _depth: fidl::encoding::Depth,
3548        ) -> fidl::Result<()> {
3549            decoder.debug_check_bounds::<Self>(offset);
3550            // Verify that padding bytes are zero.
3551            fidl::decode!(bool, D, &mut self.scanning, decoder, offset + 0, _depth)?;
3552            Ok(())
3553        }
3554    }
3555
3556    impl fidl::encoding::ValueTypeMarker for CentralStartScanRequest {
3557        type Borrowed<'a> = &'a Self;
3558        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3559            value
3560        }
3561    }
3562
3563    unsafe impl fidl::encoding::TypeMarker for CentralStartScanRequest {
3564        type Owned = Self;
3565
3566        #[inline(always)]
3567        fn inline_align(_context: fidl::encoding::Context) -> usize {
3568            8
3569        }
3570
3571        #[inline(always)]
3572        fn inline_size(_context: fidl::encoding::Context) -> usize {
3573            8
3574        }
3575    }
3576
3577    unsafe impl<D: fidl::encoding::ResourceDialect>
3578        fidl::encoding::Encode<CentralStartScanRequest, D> for &CentralStartScanRequest
3579    {
3580        #[inline]
3581        unsafe fn encode(
3582            self,
3583            encoder: &mut fidl::encoding::Encoder<'_, D>,
3584            offset: usize,
3585            _depth: fidl::encoding::Depth,
3586        ) -> fidl::Result<()> {
3587            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3588            // Delegate to tuple encoding.
3589            fidl::encoding::Encode::<CentralStartScanRequest, D>::encode(
3590                (<fidl::encoding::Boxed<ScanFilter> as fidl::encoding::ValueTypeMarker>::borrow(
3591                    &self.filter,
3592                ),),
3593                encoder,
3594                offset,
3595                _depth,
3596            )
3597        }
3598    }
3599    unsafe impl<
3600        D: fidl::encoding::ResourceDialect,
3601        T0: fidl::encoding::Encode<fidl::encoding::Boxed<ScanFilter>, D>,
3602    > fidl::encoding::Encode<CentralStartScanRequest, D> for (T0,)
3603    {
3604        #[inline]
3605        unsafe fn encode(
3606            self,
3607            encoder: &mut fidl::encoding::Encoder<'_, D>,
3608            offset: usize,
3609            depth: fidl::encoding::Depth,
3610        ) -> fidl::Result<()> {
3611            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3612            // Zero out padding regions. There's no need to apply masks
3613            // because the unmasked parts will be overwritten by fields.
3614            // Write the fields.
3615            self.0.encode(encoder, offset + 0, depth)?;
3616            Ok(())
3617        }
3618    }
3619
3620    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3621        for CentralStartScanRequest
3622    {
3623        #[inline(always)]
3624        fn new_empty() -> Self {
3625            Self { filter: fidl::new_empty!(fidl::encoding::Boxed<ScanFilter>, D) }
3626        }
3627
3628        #[inline]
3629        unsafe fn decode(
3630            &mut self,
3631            decoder: &mut fidl::encoding::Decoder<'_, D>,
3632            offset: usize,
3633            _depth: fidl::encoding::Depth,
3634        ) -> fidl::Result<()> {
3635            decoder.debug_check_bounds::<Self>(offset);
3636            // Verify that padding bytes are zero.
3637            fidl::decode!(
3638                fidl::encoding::Boxed<ScanFilter>,
3639                D,
3640                &mut self.filter,
3641                decoder,
3642                offset + 0,
3643                _depth
3644            )?;
3645            Ok(())
3646        }
3647    }
3648
3649    impl fidl::encoding::ValueTypeMarker for CentralStartScanResponse {
3650        type Borrowed<'a> = &'a Self;
3651        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3652            value
3653        }
3654    }
3655
3656    unsafe impl fidl::encoding::TypeMarker for CentralStartScanResponse {
3657        type Owned = Self;
3658
3659        #[inline(always)]
3660        fn inline_align(_context: fidl::encoding::Context) -> usize {
3661            8
3662        }
3663
3664        #[inline(always)]
3665        fn inline_size(_context: fidl::encoding::Context) -> usize {
3666            8
3667        }
3668    }
3669
3670    unsafe impl<D: fidl::encoding::ResourceDialect>
3671        fidl::encoding::Encode<CentralStartScanResponse, D> for &CentralStartScanResponse
3672    {
3673        #[inline]
3674        unsafe fn encode(
3675            self,
3676            encoder: &mut fidl::encoding::Encoder<'_, D>,
3677            offset: usize,
3678            _depth: fidl::encoding::Depth,
3679        ) -> fidl::Result<()> {
3680            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3681            // Delegate to tuple encoding.
3682            fidl::encoding::Encode::<CentralStartScanResponse, D>::encode(
3683                (
3684                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
3685                ),
3686                encoder, offset, _depth
3687            )
3688        }
3689    }
3690    unsafe impl<
3691        D: fidl::encoding::ResourceDialect,
3692        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
3693    > fidl::encoding::Encode<CentralStartScanResponse, D> for (T0,)
3694    {
3695        #[inline]
3696        unsafe fn encode(
3697            self,
3698            encoder: &mut fidl::encoding::Encoder<'_, D>,
3699            offset: usize,
3700            depth: fidl::encoding::Depth,
3701        ) -> fidl::Result<()> {
3702            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3703            // Zero out padding regions. There's no need to apply masks
3704            // because the unmasked parts will be overwritten by fields.
3705            // Write the fields.
3706            self.0.encode(encoder, offset + 0, depth)?;
3707            Ok(())
3708        }
3709    }
3710
3711    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3712        for CentralStartScanResponse
3713    {
3714        #[inline(always)]
3715        fn new_empty() -> Self {
3716            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
3717        }
3718
3719        #[inline]
3720        unsafe fn decode(
3721            &mut self,
3722            decoder: &mut fidl::encoding::Decoder<'_, D>,
3723            offset: usize,
3724            _depth: fidl::encoding::Depth,
3725        ) -> fidl::Result<()> {
3726            decoder.debug_check_bounds::<Self>(offset);
3727            // Verify that padding bytes are zero.
3728            fidl::decode!(
3729                fidl_fuchsia_bluetooth__common::Status,
3730                D,
3731                &mut self.status,
3732                decoder,
3733                offset + 0,
3734                _depth
3735            )?;
3736            Ok(())
3737        }
3738    }
3739
3740    impl fidl::encoding::ValueTypeMarker for ManufacturerData {
3741        type Borrowed<'a> = &'a Self;
3742        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3743            value
3744        }
3745    }
3746
3747    unsafe impl fidl::encoding::TypeMarker for ManufacturerData {
3748        type Owned = Self;
3749
3750        #[inline(always)]
3751        fn inline_align(_context: fidl::encoding::Context) -> usize {
3752            8
3753        }
3754
3755        #[inline(always)]
3756        fn inline_size(_context: fidl::encoding::Context) -> usize {
3757            24
3758        }
3759    }
3760
3761    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ManufacturerData, D>
3762        for &ManufacturerData
3763    {
3764        #[inline]
3765        unsafe fn encode(
3766            self,
3767            encoder: &mut fidl::encoding::Encoder<'_, D>,
3768            offset: usize,
3769            _depth: fidl::encoding::Depth,
3770        ) -> fidl::Result<()> {
3771            encoder.debug_check_bounds::<ManufacturerData>(offset);
3772            // Delegate to tuple encoding.
3773            fidl::encoding::Encode::<ManufacturerData, D>::encode(
3774                (
3775                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3776                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(
3777                        &self.data,
3778                    ),
3779                ),
3780                encoder,
3781                offset,
3782                _depth,
3783            )
3784        }
3785    }
3786    unsafe impl<
3787        D: fidl::encoding::ResourceDialect,
3788        T0: fidl::encoding::Encode<u16, D>,
3789        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
3790    > fidl::encoding::Encode<ManufacturerData, D> for (T0, T1)
3791    {
3792        #[inline]
3793        unsafe fn encode(
3794            self,
3795            encoder: &mut fidl::encoding::Encoder<'_, D>,
3796            offset: usize,
3797            depth: fidl::encoding::Depth,
3798        ) -> fidl::Result<()> {
3799            encoder.debug_check_bounds::<ManufacturerData>(offset);
3800            // Zero out padding regions. There's no need to apply masks
3801            // because the unmasked parts will be overwritten by fields.
3802            unsafe {
3803                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3804                (ptr as *mut u64).write_unaligned(0);
3805            }
3806            // Write the fields.
3807            self.0.encode(encoder, offset + 0, depth)?;
3808            self.1.encode(encoder, offset + 8, depth)?;
3809            Ok(())
3810        }
3811    }
3812
3813    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ManufacturerData {
3814        #[inline(always)]
3815        fn new_empty() -> Self {
3816            Self {
3817                company_id: fidl::new_empty!(u16, D),
3818                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
3819            }
3820        }
3821
3822        #[inline]
3823        unsafe fn decode(
3824            &mut self,
3825            decoder: &mut fidl::encoding::Decoder<'_, D>,
3826            offset: usize,
3827            _depth: fidl::encoding::Depth,
3828        ) -> fidl::Result<()> {
3829            decoder.debug_check_bounds::<Self>(offset);
3830            // Verify that padding bytes are zero.
3831            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3832            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3833            let mask = 0xffffffffffff0000u64;
3834            let maskedval = padval & mask;
3835            if maskedval != 0 {
3836                return Err(fidl::Error::NonZeroPadding {
3837                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3838                });
3839            }
3840            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3841            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 8, _depth)?;
3842            Ok(())
3843        }
3844    }
3845
3846    impl fidl::encoding::ValueTypeMarker for ManufacturerSpecificDataEntry {
3847        type Borrowed<'a> = &'a Self;
3848        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3849            value
3850        }
3851    }
3852
3853    unsafe impl fidl::encoding::TypeMarker for ManufacturerSpecificDataEntry {
3854        type Owned = Self;
3855
3856        #[inline(always)]
3857        fn inline_align(_context: fidl::encoding::Context) -> usize {
3858            8
3859        }
3860
3861        #[inline(always)]
3862        fn inline_size(_context: fidl::encoding::Context) -> usize {
3863            24
3864        }
3865    }
3866
3867    unsafe impl<D: fidl::encoding::ResourceDialect>
3868        fidl::encoding::Encode<ManufacturerSpecificDataEntry, D>
3869        for &ManufacturerSpecificDataEntry
3870    {
3871        #[inline]
3872        unsafe fn encode(
3873            self,
3874            encoder: &mut fidl::encoding::Encoder<'_, D>,
3875            offset: usize,
3876            _depth: fidl::encoding::Depth,
3877        ) -> fidl::Result<()> {
3878            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3879            // Delegate to tuple encoding.
3880            fidl::encoding::Encode::<ManufacturerSpecificDataEntry, D>::encode(
3881                (
3882                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3883                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
3884                ),
3885                encoder, offset, _depth
3886            )
3887        }
3888    }
3889    unsafe impl<
3890        D: fidl::encoding::ResourceDialect,
3891        T0: fidl::encoding::Encode<u16, D>,
3892        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3893    > fidl::encoding::Encode<ManufacturerSpecificDataEntry, D> for (T0, T1)
3894    {
3895        #[inline]
3896        unsafe fn encode(
3897            self,
3898            encoder: &mut fidl::encoding::Encoder<'_, D>,
3899            offset: usize,
3900            depth: fidl::encoding::Depth,
3901        ) -> fidl::Result<()> {
3902            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3903            // Zero out padding regions. There's no need to apply masks
3904            // because the unmasked parts will be overwritten by fields.
3905            unsafe {
3906                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3907                (ptr as *mut u64).write_unaligned(0);
3908            }
3909            // Write the fields.
3910            self.0.encode(encoder, offset + 0, depth)?;
3911            self.1.encode(encoder, offset + 8, depth)?;
3912            Ok(())
3913        }
3914    }
3915
3916    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3917        for ManufacturerSpecificDataEntry
3918    {
3919        #[inline(always)]
3920        fn new_empty() -> Self {
3921            Self {
3922                company_id: fidl::new_empty!(u16, D),
3923                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3924            }
3925        }
3926
3927        #[inline]
3928        unsafe fn decode(
3929            &mut self,
3930            decoder: &mut fidl::encoding::Decoder<'_, D>,
3931            offset: usize,
3932            _depth: fidl::encoding::Depth,
3933        ) -> fidl::Result<()> {
3934            decoder.debug_check_bounds::<Self>(offset);
3935            // Verify that padding bytes are zero.
3936            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3937            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3938            let mask = 0xffffffffffff0000u64;
3939            let maskedval = padval & mask;
3940            if maskedval != 0 {
3941                return Err(fidl::Error::NonZeroPadding {
3942                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3943                });
3944            }
3945            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3946            fidl::decode!(
3947                fidl::encoding::UnboundedVector<u8>,
3948                D,
3949                &mut self.data,
3950                decoder,
3951                offset + 8,
3952                _depth
3953            )?;
3954            Ok(())
3955        }
3956    }
3957
3958    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncId {
3959        type Borrowed<'a> = &'a Self;
3960        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3961            value
3962        }
3963    }
3964
3965    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncId {
3966        type Owned = Self;
3967
3968        #[inline(always)]
3969        fn inline_align(_context: fidl::encoding::Context) -> usize {
3970            8
3971        }
3972
3973        #[inline(always)]
3974        fn inline_size(_context: fidl::encoding::Context) -> usize {
3975            8
3976        }
3977        #[inline(always)]
3978        fn encode_is_copy() -> bool {
3979            true
3980        }
3981
3982        #[inline(always)]
3983        fn decode_is_copy() -> bool {
3984            true
3985        }
3986    }
3987
3988    unsafe impl<D: fidl::encoding::ResourceDialect>
3989        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for &PeriodicAdvertisingSyncId
3990    {
3991        #[inline]
3992        unsafe fn encode(
3993            self,
3994            encoder: &mut fidl::encoding::Encoder<'_, D>,
3995            offset: usize,
3996            _depth: fidl::encoding::Depth,
3997        ) -> fidl::Result<()> {
3998            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
3999            unsafe {
4000                // Copy the object into the buffer.
4001                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4002                (buf_ptr as *mut PeriodicAdvertisingSyncId)
4003                    .write_unaligned((self as *const PeriodicAdvertisingSyncId).read());
4004                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4005                // done second because the memcpy will write garbage to these bytes.
4006            }
4007            Ok(())
4008        }
4009    }
4010    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
4011        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for (T0,)
4012    {
4013        #[inline]
4014        unsafe fn encode(
4015            self,
4016            encoder: &mut fidl::encoding::Encoder<'_, D>,
4017            offset: usize,
4018            depth: fidl::encoding::Depth,
4019        ) -> fidl::Result<()> {
4020            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4021            // Zero out padding regions. There's no need to apply masks
4022            // because the unmasked parts will be overwritten by fields.
4023            // Write the fields.
4024            self.0.encode(encoder, offset + 0, depth)?;
4025            Ok(())
4026        }
4027    }
4028
4029    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4030        for PeriodicAdvertisingSyncId
4031    {
4032        #[inline(always)]
4033        fn new_empty() -> Self {
4034            Self { value: fidl::new_empty!(u64, D) }
4035        }
4036
4037        #[inline]
4038        unsafe fn decode(
4039            &mut self,
4040            decoder: &mut fidl::encoding::Decoder<'_, D>,
4041            offset: usize,
4042            _depth: fidl::encoding::Depth,
4043        ) -> fidl::Result<()> {
4044            decoder.debug_check_bounds::<Self>(offset);
4045            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4046            // Verify that padding bytes are zero.
4047            // Copy from the buffer into the object.
4048            unsafe {
4049                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
4050            }
4051            Ok(())
4052        }
4053    }
4054
4055    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4056        type Borrowed<'a> = &'a Self;
4057        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4058            value
4059        }
4060    }
4061
4062    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4063        type Owned = Self;
4064
4065        #[inline(always)]
4066        fn inline_align(_context: fidl::encoding::Context) -> usize {
4067            4
4068        }
4069
4070        #[inline(always)]
4071        fn inline_size(_context: fidl::encoding::Context) -> usize {
4072            4
4073        }
4074    }
4075
4076    unsafe impl<D: fidl::encoding::ResourceDialect>
4077        fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D>
4078        for &PeriodicAdvertisingSyncOnErrorRequest
4079    {
4080        #[inline]
4081        unsafe fn encode(
4082            self,
4083            encoder: &mut fidl::encoding::Encoder<'_, D>,
4084            offset: usize,
4085            _depth: fidl::encoding::Depth,
4086        ) -> fidl::Result<()> {
4087            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4088            // Delegate to tuple encoding.
4089            fidl::encoding::Encode::<PeriodicAdvertisingSyncOnErrorRequest, D>::encode(
4090                (<PeriodicAdvertisingSyncError as fidl::encoding::ValueTypeMarker>::borrow(
4091                    &self.error,
4092                ),),
4093                encoder,
4094                offset,
4095                _depth,
4096            )
4097        }
4098    }
4099    unsafe impl<
4100        D: fidl::encoding::ResourceDialect,
4101        T0: fidl::encoding::Encode<PeriodicAdvertisingSyncError, D>,
4102    > fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D> for (T0,)
4103    {
4104        #[inline]
4105        unsafe fn encode(
4106            self,
4107            encoder: &mut fidl::encoding::Encoder<'_, D>,
4108            offset: usize,
4109            depth: fidl::encoding::Depth,
4110        ) -> fidl::Result<()> {
4111            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4112            // Zero out padding regions. There's no need to apply masks
4113            // because the unmasked parts will be overwritten by fields.
4114            // Write the fields.
4115            self.0.encode(encoder, offset + 0, depth)?;
4116            Ok(())
4117        }
4118    }
4119
4120    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4121        for PeriodicAdvertisingSyncOnErrorRequest
4122    {
4123        #[inline(always)]
4124        fn new_empty() -> Self {
4125            Self { error: fidl::new_empty!(PeriodicAdvertisingSyncError, D) }
4126        }
4127
4128        #[inline]
4129        unsafe fn decode(
4130            &mut self,
4131            decoder: &mut fidl::encoding::Decoder<'_, D>,
4132            offset: usize,
4133            _depth: fidl::encoding::Depth,
4134        ) -> fidl::Result<()> {
4135            decoder.debug_check_bounds::<Self>(offset);
4136            // Verify that padding bytes are zero.
4137            fidl::decode!(
4138                PeriodicAdvertisingSyncError,
4139                D,
4140                &mut self.error,
4141                decoder,
4142                offset + 0,
4143                _depth
4144            )?;
4145            Ok(())
4146        }
4147    }
4148
4149    impl fidl::encoding::ValueTypeMarker for RemoteDevice {
4150        type Borrowed<'a> = &'a Self;
4151        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4152            value
4153        }
4154    }
4155
4156    unsafe impl fidl::encoding::TypeMarker for RemoteDevice {
4157        type Owned = Self;
4158
4159        #[inline(always)]
4160        fn inline_align(_context: fidl::encoding::Context) -> usize {
4161            8
4162        }
4163
4164        #[inline(always)]
4165        fn inline_size(_context: fidl::encoding::Context) -> usize {
4166            40
4167        }
4168    }
4169
4170    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RemoteDevice, D>
4171        for &RemoteDevice
4172    {
4173        #[inline]
4174        unsafe fn encode(
4175            self,
4176            encoder: &mut fidl::encoding::Encoder<'_, D>,
4177            offset: usize,
4178            _depth: fidl::encoding::Depth,
4179        ) -> fidl::Result<()> {
4180            encoder.debug_check_bounds::<RemoteDevice>(offset);
4181            // Delegate to tuple encoding.
4182            fidl::encoding::Encode::<RemoteDevice, D>::encode(
4183                (
4184                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(&self.identifier),
4185                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4186                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi),
4187                    <fidl::encoding::Boxed<AdvertisingDataDeprecated> as fidl::encoding::ValueTypeMarker>::borrow(&self.advertising_data),
4188                ),
4189                encoder, offset, _depth
4190            )
4191        }
4192    }
4193    unsafe impl<
4194        D: fidl::encoding::ResourceDialect,
4195        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
4196        T1: fidl::encoding::Encode<bool, D>,
4197        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4198        T3: fidl::encoding::Encode<fidl::encoding::Boxed<AdvertisingDataDeprecated>, D>,
4199    > fidl::encoding::Encode<RemoteDevice, D> for (T0, T1, T2, T3)
4200    {
4201        #[inline]
4202        unsafe fn encode(
4203            self,
4204            encoder: &mut fidl::encoding::Encoder<'_, D>,
4205            offset: usize,
4206            depth: fidl::encoding::Depth,
4207        ) -> fidl::Result<()> {
4208            encoder.debug_check_bounds::<RemoteDevice>(offset);
4209            // Zero out padding regions. There's no need to apply masks
4210            // because the unmasked parts will be overwritten by fields.
4211            unsafe {
4212                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4213                (ptr as *mut u64).write_unaligned(0);
4214            }
4215            // Write the fields.
4216            self.0.encode(encoder, offset + 0, depth)?;
4217            self.1.encode(encoder, offset + 16, depth)?;
4218            self.2.encode(encoder, offset + 24, depth)?;
4219            self.3.encode(encoder, offset + 32, depth)?;
4220            Ok(())
4221        }
4222    }
4223
4224    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RemoteDevice {
4225        #[inline(always)]
4226        fn new_empty() -> Self {
4227            Self {
4228                identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D),
4229                connectable: fidl::new_empty!(bool, D),
4230                rssi: fidl::new_empty!(
4231                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4232                    D
4233                ),
4234                advertising_data: fidl::new_empty!(
4235                    fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4236                    D
4237                ),
4238            }
4239        }
4240
4241        #[inline]
4242        unsafe fn decode(
4243            &mut self,
4244            decoder: &mut fidl::encoding::Decoder<'_, D>,
4245            offset: usize,
4246            _depth: fidl::encoding::Depth,
4247        ) -> fidl::Result<()> {
4248            decoder.debug_check_bounds::<Self>(offset);
4249            // Verify that padding bytes are zero.
4250            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4251            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4252            let mask = 0xffffffffffffff00u64;
4253            let maskedval = padval & mask;
4254            if maskedval != 0 {
4255                return Err(fidl::Error::NonZeroPadding {
4256                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4257                });
4258            }
4259            fidl::decode!(
4260                fidl::encoding::BoundedString<16>,
4261                D,
4262                &mut self.identifier,
4263                decoder,
4264                offset + 0,
4265                _depth
4266            )?;
4267            fidl::decode!(bool, D, &mut self.connectable, decoder, offset + 16, _depth)?;
4268            fidl::decode!(
4269                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4270                D,
4271                &mut self.rssi,
4272                decoder,
4273                offset + 24,
4274                _depth
4275            )?;
4276            fidl::decode!(
4277                fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4278                D,
4279                &mut self.advertising_data,
4280                decoder,
4281                offset + 32,
4282                _depth
4283            )?;
4284            Ok(())
4285        }
4286    }
4287
4288    impl fidl::encoding::ValueTypeMarker for ScanFilter {
4289        type Borrowed<'a> = &'a Self;
4290        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4291            value
4292        }
4293    }
4294
4295    unsafe impl fidl::encoding::TypeMarker for ScanFilter {
4296        type Owned = Self;
4297
4298        #[inline(always)]
4299        fn inline_align(_context: fidl::encoding::Context) -> usize {
4300            8
4301        }
4302
4303        #[inline(always)]
4304        fn inline_size(_context: fidl::encoding::Context) -> usize {
4305            72
4306        }
4307    }
4308
4309    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanFilter, D>
4310        for &ScanFilter
4311    {
4312        #[inline]
4313        unsafe fn encode(
4314            self,
4315            encoder: &mut fidl::encoding::Encoder<'_, D>,
4316            offset: usize,
4317            _depth: fidl::encoding::Depth,
4318        ) -> fidl::Result<()> {
4319            encoder.debug_check_bounds::<ScanFilter>(offset);
4320            // Delegate to tuple encoding.
4321            fidl::encoding::Encode::<ScanFilter, D>::encode(
4322                (
4323                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
4324                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data_uuids),
4325                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_identifier),
4326                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool> as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4327                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name_substring),
4328                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.max_path_loss),
4329                ),
4330                encoder, offset, _depth
4331            )
4332        }
4333    }
4334    unsafe impl<
4335        D: fidl::encoding::ResourceDialect,
4336        T0: fidl::encoding::Encode<
4337                fidl::encoding::Optional<
4338                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4339                >,
4340                D,
4341            >,
4342        T1: fidl::encoding::Encode<
4343                fidl::encoding::Optional<
4344                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4345                >,
4346                D,
4347            >,
4348        T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>, D>,
4349        T3: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>, D>,
4350        T4: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
4351        T5: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4352    > fidl::encoding::Encode<ScanFilter, D> for (T0, T1, T2, T3, T4, T5)
4353    {
4354        #[inline]
4355        unsafe fn encode(
4356            self,
4357            encoder: &mut fidl::encoding::Encoder<'_, D>,
4358            offset: usize,
4359            depth: fidl::encoding::Depth,
4360        ) -> fidl::Result<()> {
4361            encoder.debug_check_bounds::<ScanFilter>(offset);
4362            // Zero out padding regions. There's no need to apply masks
4363            // because the unmasked parts will be overwritten by fields.
4364            // Write the fields.
4365            self.0.encode(encoder, offset + 0, depth)?;
4366            self.1.encode(encoder, offset + 16, depth)?;
4367            self.2.encode(encoder, offset + 32, depth)?;
4368            self.3.encode(encoder, offset + 40, depth)?;
4369            self.4.encode(encoder, offset + 48, depth)?;
4370            self.5.encode(encoder, offset + 64, depth)?;
4371            Ok(())
4372        }
4373    }
4374
4375    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanFilter {
4376        #[inline(always)]
4377        fn new_empty() -> Self {
4378            Self {
4379                service_uuids: fidl::new_empty!(
4380                    fidl::encoding::Optional<
4381                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4382                    >,
4383                    D
4384                ),
4385                service_data_uuids: fidl::new_empty!(
4386                    fidl::encoding::Optional<
4387                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4388                    >,
4389                    D
4390                ),
4391                manufacturer_identifier: fidl::new_empty!(
4392                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4393                    D
4394                ),
4395                connectable: fidl::new_empty!(
4396                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4397                    D
4398                ),
4399                name_substring: fidl::new_empty!(
4400                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4401                    D
4402                ),
4403                max_path_loss: fidl::new_empty!(
4404                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4405                    D
4406                ),
4407            }
4408        }
4409
4410        #[inline]
4411        unsafe fn decode(
4412            &mut self,
4413            decoder: &mut fidl::encoding::Decoder<'_, D>,
4414            offset: usize,
4415            _depth: fidl::encoding::Depth,
4416        ) -> fidl::Result<()> {
4417            decoder.debug_check_bounds::<Self>(offset);
4418            // Verify that padding bytes are zero.
4419            fidl::decode!(
4420                fidl::encoding::Optional<
4421                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4422                >,
4423                D,
4424                &mut self.service_uuids,
4425                decoder,
4426                offset + 0,
4427                _depth
4428            )?;
4429            fidl::decode!(
4430                fidl::encoding::Optional<
4431                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4432                >,
4433                D,
4434                &mut self.service_data_uuids,
4435                decoder,
4436                offset + 16,
4437                _depth
4438            )?;
4439            fidl::decode!(
4440                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4441                D,
4442                &mut self.manufacturer_identifier,
4443                decoder,
4444                offset + 32,
4445                _depth
4446            )?;
4447            fidl::decode!(
4448                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4449                D,
4450                &mut self.connectable,
4451                decoder,
4452                offset + 40,
4453                _depth
4454            )?;
4455            fidl::decode!(
4456                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4457                D,
4458                &mut self.name_substring,
4459                decoder,
4460                offset + 48,
4461                _depth
4462            )?;
4463            fidl::decode!(
4464                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4465                D,
4466                &mut self.max_path_loss,
4467                decoder,
4468                offset + 64,
4469                _depth
4470            )?;
4471            Ok(())
4472        }
4473    }
4474
4475    impl fidl::encoding::ValueTypeMarker for ScanResultWatcherWatchResponse {
4476        type Borrowed<'a> = &'a Self;
4477        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4478            value
4479        }
4480    }
4481
4482    unsafe impl fidl::encoding::TypeMarker for ScanResultWatcherWatchResponse {
4483        type Owned = Self;
4484
4485        #[inline(always)]
4486        fn inline_align(_context: fidl::encoding::Context) -> usize {
4487            8
4488        }
4489
4490        #[inline(always)]
4491        fn inline_size(_context: fidl::encoding::Context) -> usize {
4492            16
4493        }
4494    }
4495
4496    unsafe impl<D: fidl::encoding::ResourceDialect>
4497        fidl::encoding::Encode<ScanResultWatcherWatchResponse, D>
4498        for &ScanResultWatcherWatchResponse
4499    {
4500        #[inline]
4501        unsafe fn encode(
4502            self,
4503            encoder: &mut fidl::encoding::Encoder<'_, D>,
4504            offset: usize,
4505            _depth: fidl::encoding::Depth,
4506        ) -> fidl::Result<()> {
4507            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4508            // Delegate to tuple encoding.
4509            fidl::encoding::Encode::<ScanResultWatcherWatchResponse, D>::encode(
4510                (
4511                    <fidl::encoding::UnboundedVector<Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.updated),
4512                ),
4513                encoder, offset, _depth
4514            )
4515        }
4516    }
4517    unsafe impl<
4518        D: fidl::encoding::ResourceDialect,
4519        T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Peer>, D>,
4520    > fidl::encoding::Encode<ScanResultWatcherWatchResponse, D> for (T0,)
4521    {
4522        #[inline]
4523        unsafe fn encode(
4524            self,
4525            encoder: &mut fidl::encoding::Encoder<'_, D>,
4526            offset: usize,
4527            depth: fidl::encoding::Depth,
4528        ) -> fidl::Result<()> {
4529            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4530            // Zero out padding regions. There's no need to apply masks
4531            // because the unmasked parts will be overwritten by fields.
4532            // Write the fields.
4533            self.0.encode(encoder, offset + 0, depth)?;
4534            Ok(())
4535        }
4536    }
4537
4538    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4539        for ScanResultWatcherWatchResponse
4540    {
4541        #[inline(always)]
4542        fn new_empty() -> Self {
4543            Self { updated: fidl::new_empty!(fidl::encoding::UnboundedVector<Peer>, D) }
4544        }
4545
4546        #[inline]
4547        unsafe fn decode(
4548            &mut self,
4549            decoder: &mut fidl::encoding::Decoder<'_, D>,
4550            offset: usize,
4551            _depth: fidl::encoding::Depth,
4552        ) -> fidl::Result<()> {
4553            decoder.debug_check_bounds::<Self>(offset);
4554            // Verify that padding bytes are zero.
4555            fidl::decode!(
4556                fidl::encoding::UnboundedVector<Peer>,
4557                D,
4558                &mut self.updated,
4559                decoder,
4560                offset + 0,
4561                _depth
4562            )?;
4563            Ok(())
4564        }
4565    }
4566
4567    impl fidl::encoding::ValueTypeMarker for ServiceData {
4568        type Borrowed<'a> = &'a Self;
4569        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4570            value
4571        }
4572    }
4573
4574    unsafe impl fidl::encoding::TypeMarker for ServiceData {
4575        type Owned = Self;
4576
4577        #[inline(always)]
4578        fn inline_align(_context: fidl::encoding::Context) -> usize {
4579            8
4580        }
4581
4582        #[inline(always)]
4583        fn inline_size(_context: fidl::encoding::Context) -> usize {
4584            32
4585        }
4586    }
4587
4588    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceData, D>
4589        for &ServiceData
4590    {
4591        #[inline]
4592        unsafe fn encode(
4593            self,
4594            encoder: &mut fidl::encoding::Encoder<'_, D>,
4595            offset: usize,
4596            _depth: fidl::encoding::Depth,
4597        ) -> fidl::Result<()> {
4598            encoder.debug_check_bounds::<ServiceData>(offset);
4599            // Delegate to tuple encoding.
4600            fidl::encoding::Encode::<ServiceData, D>::encode(
4601                (
4602                    <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4603                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4604                ),
4605                encoder, offset, _depth
4606            )
4607        }
4608    }
4609    unsafe impl<
4610        D: fidl::encoding::ResourceDialect,
4611        T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Uuid, D>,
4612        T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
4613    > fidl::encoding::Encode<ServiceData, D> for (T0, T1)
4614    {
4615        #[inline]
4616        unsafe fn encode(
4617            self,
4618            encoder: &mut fidl::encoding::Encoder<'_, D>,
4619            offset: usize,
4620            depth: fidl::encoding::Depth,
4621        ) -> fidl::Result<()> {
4622            encoder.debug_check_bounds::<ServiceData>(offset);
4623            // Zero out padding regions. There's no need to apply masks
4624            // because the unmasked parts will be overwritten by fields.
4625            // Write the fields.
4626            self.0.encode(encoder, offset + 0, depth)?;
4627            self.1.encode(encoder, offset + 16, depth)?;
4628            Ok(())
4629        }
4630    }
4631
4632    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceData {
4633        #[inline(always)]
4634        fn new_empty() -> Self {
4635            Self {
4636                uuid: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D),
4637                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
4638            }
4639        }
4640
4641        #[inline]
4642        unsafe fn decode(
4643            &mut self,
4644            decoder: &mut fidl::encoding::Decoder<'_, D>,
4645            offset: usize,
4646            _depth: fidl::encoding::Depth,
4647        ) -> fidl::Result<()> {
4648            decoder.debug_check_bounds::<Self>(offset);
4649            // Verify that padding bytes are zero.
4650            fidl::decode!(
4651                fidl_fuchsia_bluetooth__common::Uuid,
4652                D,
4653                &mut self.uuid,
4654                decoder,
4655                offset + 0,
4656                _depth
4657            )?;
4658            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 16, _depth)?;
4659            Ok(())
4660        }
4661    }
4662
4663    impl fidl::encoding::ValueTypeMarker for ServiceDataEntry {
4664        type Borrowed<'a> = &'a Self;
4665        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4666            value
4667        }
4668    }
4669
4670    unsafe impl fidl::encoding::TypeMarker for ServiceDataEntry {
4671        type Owned = Self;
4672
4673        #[inline(always)]
4674        fn inline_align(_context: fidl::encoding::Context) -> usize {
4675            8
4676        }
4677
4678        #[inline(always)]
4679        fn inline_size(_context: fidl::encoding::Context) -> usize {
4680            32
4681        }
4682    }
4683
4684    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceDataEntry, D>
4685        for &ServiceDataEntry
4686    {
4687        #[inline]
4688        unsafe fn encode(
4689            self,
4690            encoder: &mut fidl::encoding::Encoder<'_, D>,
4691            offset: usize,
4692            _depth: fidl::encoding::Depth,
4693        ) -> fidl::Result<()> {
4694            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4695            // Delegate to tuple encoding.
4696            fidl::encoding::Encode::<ServiceDataEntry, D>::encode(
4697                (
4698                    <fidl::encoding::BoundedString<36> as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4699                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4700                ),
4701                encoder, offset, _depth
4702            )
4703        }
4704    }
4705    unsafe impl<
4706        D: fidl::encoding::ResourceDialect,
4707        T0: fidl::encoding::Encode<fidl::encoding::BoundedString<36>, D>,
4708        T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4709    > fidl::encoding::Encode<ServiceDataEntry, D> for (T0, T1)
4710    {
4711        #[inline]
4712        unsafe fn encode(
4713            self,
4714            encoder: &mut fidl::encoding::Encoder<'_, D>,
4715            offset: usize,
4716            depth: fidl::encoding::Depth,
4717        ) -> fidl::Result<()> {
4718            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4719            // Zero out padding regions. There's no need to apply masks
4720            // because the unmasked parts will be overwritten by fields.
4721            // Write the fields.
4722            self.0.encode(encoder, offset + 0, depth)?;
4723            self.1.encode(encoder, offset + 16, depth)?;
4724            Ok(())
4725        }
4726    }
4727
4728    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceDataEntry {
4729        #[inline(always)]
4730        fn new_empty() -> Self {
4731            Self {
4732                uuid: fidl::new_empty!(fidl::encoding::BoundedString<36>, D),
4733                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4734            }
4735        }
4736
4737        #[inline]
4738        unsafe fn decode(
4739            &mut self,
4740            decoder: &mut fidl::encoding::Decoder<'_, D>,
4741            offset: usize,
4742            _depth: fidl::encoding::Depth,
4743        ) -> fidl::Result<()> {
4744            decoder.debug_check_bounds::<Self>(offset);
4745            // Verify that padding bytes are zero.
4746            fidl::decode!(
4747                fidl::encoding::BoundedString<36>,
4748                D,
4749                &mut self.uuid,
4750                decoder,
4751                offset + 0,
4752                _depth
4753            )?;
4754            fidl::decode!(
4755                fidl::encoding::UnboundedVector<u8>,
4756                D,
4757                &mut self.data,
4758                decoder,
4759                offset + 16,
4760                _depth
4761            )?;
4762            Ok(())
4763        }
4764    }
4765
4766    impl AcceptedChannelParameters {
4767        #[inline(always)]
4768        fn max_ordinal_present(&self) -> u64 {
4769            if let Some(_) = self.max_packet_size {
4770                return 2;
4771            }
4772            if let Some(_) = self.accepted_channel_modes {
4773                return 1;
4774            }
4775            0
4776        }
4777    }
4778
4779    impl fidl::encoding::ValueTypeMarker for AcceptedChannelParameters {
4780        type Borrowed<'a> = &'a Self;
4781        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4782            value
4783        }
4784    }
4785
4786    unsafe impl fidl::encoding::TypeMarker for AcceptedChannelParameters {
4787        type Owned = Self;
4788
4789        #[inline(always)]
4790        fn inline_align(_context: fidl::encoding::Context) -> usize {
4791            8
4792        }
4793
4794        #[inline(always)]
4795        fn inline_size(_context: fidl::encoding::Context) -> usize {
4796            16
4797        }
4798    }
4799
4800    unsafe impl<D: fidl::encoding::ResourceDialect>
4801        fidl::encoding::Encode<AcceptedChannelParameters, D> for &AcceptedChannelParameters
4802    {
4803        unsafe fn encode(
4804            self,
4805            encoder: &mut fidl::encoding::Encoder<'_, D>,
4806            offset: usize,
4807            mut depth: fidl::encoding::Depth,
4808        ) -> fidl::Result<()> {
4809            encoder.debug_check_bounds::<AcceptedChannelParameters>(offset);
4810            // Vector header
4811            let max_ordinal: u64 = self.max_ordinal_present();
4812            encoder.write_num(max_ordinal, offset);
4813            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4814            // Calling encoder.out_of_line_offset(0) is not allowed.
4815            if max_ordinal == 0 {
4816                return Ok(());
4817            }
4818            depth.increment()?;
4819            let envelope_size = 8;
4820            let bytes_len = max_ordinal as usize * envelope_size;
4821            #[allow(unused_variables)]
4822            let offset = encoder.out_of_line_offset(bytes_len);
4823            let mut _prev_end_offset: usize = 0;
4824            if 1 > max_ordinal {
4825                return Ok(());
4826            }
4827
4828            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4829            // are envelope_size bytes.
4830            let cur_offset: usize = (1 - 1) * envelope_size;
4831
4832            // Zero reserved fields.
4833            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4834
4835            // Safety:
4836            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4837            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4838            //   envelope_size bytes, there is always sufficient room.
4839            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>, D>(
4840            self.accepted_channel_modes.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode> as fidl::encoding::ValueTypeMarker>::borrow),
4841            encoder, offset + cur_offset, depth
4842        )?;
4843
4844            _prev_end_offset = cur_offset + envelope_size;
4845            if 2 > max_ordinal {
4846                return Ok(());
4847            }
4848
4849            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4850            // are envelope_size bytes.
4851            let cur_offset: usize = (2 - 1) * envelope_size;
4852
4853            // Zero reserved fields.
4854            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4855
4856            // Safety:
4857            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4858            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4859            //   envelope_size bytes, there is always sufficient room.
4860            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4861                self.max_packet_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4862                encoder,
4863                offset + cur_offset,
4864                depth,
4865            )?;
4866
4867            _prev_end_offset = cur_offset + envelope_size;
4868
4869            Ok(())
4870        }
4871    }
4872
4873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4874        for AcceptedChannelParameters
4875    {
4876        #[inline(always)]
4877        fn new_empty() -> Self {
4878            Self::default()
4879        }
4880
4881        unsafe fn decode(
4882            &mut self,
4883            decoder: &mut fidl::encoding::Decoder<'_, D>,
4884            offset: usize,
4885            mut depth: fidl::encoding::Depth,
4886        ) -> fidl::Result<()> {
4887            decoder.debug_check_bounds::<Self>(offset);
4888            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4889                None => return Err(fidl::Error::NotNullable),
4890                Some(len) => len,
4891            };
4892            // Calling decoder.out_of_line_offset(0) is not allowed.
4893            if len == 0 {
4894                return Ok(());
4895            };
4896            depth.increment()?;
4897            let envelope_size = 8;
4898            let bytes_len = len * envelope_size;
4899            let offset = decoder.out_of_line_offset(bytes_len)?;
4900            // Decode the envelope for each type.
4901            let mut _next_ordinal_to_read = 0;
4902            let mut next_offset = offset;
4903            let end_offset = offset + bytes_len;
4904            _next_ordinal_to_read += 1;
4905            if next_offset >= end_offset {
4906                return Ok(());
4907            }
4908
4909            // Decode unknown envelopes for gaps in ordinals.
4910            while _next_ordinal_to_read < 1 {
4911                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4912                _next_ordinal_to_read += 1;
4913                next_offset += envelope_size;
4914            }
4915
4916            let next_out_of_line = decoder.next_out_of_line();
4917            let handles_before = decoder.remaining_handles();
4918            if let Some((inlined, num_bytes, num_handles)) =
4919                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4920            {
4921                let member_inline_size = <fidl::encoding::UnboundedVector<
4922                    fidl_fuchsia_bluetooth__common::ChannelMode,
4923                > as fidl::encoding::TypeMarker>::inline_size(
4924                    decoder.context
4925                );
4926                if inlined != (member_inline_size <= 4) {
4927                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4928                }
4929                let inner_offset;
4930                let mut inner_depth = depth.clone();
4931                if inlined {
4932                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4933                    inner_offset = next_offset;
4934                } else {
4935                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4936                    inner_depth.increment()?;
4937                }
4938                let val_ref = self.accepted_channel_modes.get_or_insert_with(|| {
4939                    fidl::new_empty!(
4940                        fidl::encoding::UnboundedVector<
4941                            fidl_fuchsia_bluetooth__common::ChannelMode,
4942                        >,
4943                        D
4944                    )
4945                });
4946                fidl::decode!(
4947                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>,
4948                    D,
4949                    val_ref,
4950                    decoder,
4951                    inner_offset,
4952                    inner_depth
4953                )?;
4954                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4955                {
4956                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4957                }
4958                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4959                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4960                }
4961            }
4962
4963            next_offset += envelope_size;
4964            _next_ordinal_to_read += 1;
4965            if next_offset >= end_offset {
4966                return Ok(());
4967            }
4968
4969            // Decode unknown envelopes for gaps in ordinals.
4970            while _next_ordinal_to_read < 2 {
4971                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4972                _next_ordinal_to_read += 1;
4973                next_offset += envelope_size;
4974            }
4975
4976            let next_out_of_line = decoder.next_out_of_line();
4977            let handles_before = decoder.remaining_handles();
4978            if let Some((inlined, num_bytes, num_handles)) =
4979                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4980            {
4981                let member_inline_size =
4982                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4983                if inlined != (member_inline_size <= 4) {
4984                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4985                }
4986                let inner_offset;
4987                let mut inner_depth = depth.clone();
4988                if inlined {
4989                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4990                    inner_offset = next_offset;
4991                } else {
4992                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4993                    inner_depth.increment()?;
4994                }
4995                let val_ref = self.max_packet_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
4996                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4997                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4998                {
4999                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5000                }
5001                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5002                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5003                }
5004            }
5005
5006            next_offset += envelope_size;
5007
5008            // Decode the remaining unknown envelopes.
5009            while next_offset < end_offset {
5010                _next_ordinal_to_read += 1;
5011                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5012                next_offset += envelope_size;
5013            }
5014
5015            Ok(())
5016        }
5017    }
5018
5019    impl AdvertisingData {
5020        #[inline(always)]
5021        fn max_ordinal_present(&self) -> u64 {
5022            if let Some(_) = self.broadcast_name {
5023                return 10;
5024            }
5025            if let Some(_) = self.resolvable_set_identifier {
5026                return 9;
5027            }
5028            if let Some(_) = self.include_tx_power_level {
5029                return 8;
5030            }
5031            if let Some(_) = self.uris {
5032                return 7;
5033            }
5034            if let Some(_) = self.manufacturer_data {
5035                return 6;
5036            }
5037            if let Some(_) = self.service_data {
5038                return 5;
5039            }
5040            if let Some(_) = self.service_uuids {
5041                return 4;
5042            }
5043            if let Some(_) = self.tx_power_level {
5044                return 3;
5045            }
5046            if let Some(_) = self.appearance {
5047                return 2;
5048            }
5049            if let Some(_) = self.name {
5050                return 1;
5051            }
5052            0
5053        }
5054    }
5055
5056    impl fidl::encoding::ValueTypeMarker for AdvertisingData {
5057        type Borrowed<'a> = &'a Self;
5058        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5059            value
5060        }
5061    }
5062
5063    unsafe impl fidl::encoding::TypeMarker for AdvertisingData {
5064        type Owned = Self;
5065
5066        #[inline(always)]
5067        fn inline_align(_context: fidl::encoding::Context) -> usize {
5068            8
5069        }
5070
5071        #[inline(always)]
5072        fn inline_size(_context: fidl::encoding::Context) -> usize {
5073            16
5074        }
5075    }
5076
5077    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingData, D>
5078        for &AdvertisingData
5079    {
5080        unsafe fn encode(
5081            self,
5082            encoder: &mut fidl::encoding::Encoder<'_, D>,
5083            offset: usize,
5084            mut depth: fidl::encoding::Depth,
5085        ) -> fidl::Result<()> {
5086            encoder.debug_check_bounds::<AdvertisingData>(offset);
5087            // Vector header
5088            let max_ordinal: u64 = self.max_ordinal_present();
5089            encoder.write_num(max_ordinal, offset);
5090            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5091            // Calling encoder.out_of_line_offset(0) is not allowed.
5092            if max_ordinal == 0 {
5093                return Ok(());
5094            }
5095            depth.increment()?;
5096            let envelope_size = 8;
5097            let bytes_len = max_ordinal as usize * envelope_size;
5098            #[allow(unused_variables)]
5099            let offset = encoder.out_of_line_offset(bytes_len);
5100            let mut _prev_end_offset: usize = 0;
5101            if 1 > max_ordinal {
5102                return Ok(());
5103            }
5104
5105            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5106            // are envelope_size bytes.
5107            let cur_offset: usize = (1 - 1) * envelope_size;
5108
5109            // Zero reserved fields.
5110            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5111
5112            // Safety:
5113            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5114            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5115            //   envelope_size bytes, there is always sufficient room.
5116            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
5117                self.name.as_ref().map(
5118                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
5119                ),
5120                encoder,
5121                offset + cur_offset,
5122                depth,
5123            )?;
5124
5125            _prev_end_offset = cur_offset + envelope_size;
5126            if 2 > max_ordinal {
5127                return Ok(());
5128            }
5129
5130            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5131            // are envelope_size bytes.
5132            let cur_offset: usize = (2 - 1) * envelope_size;
5133
5134            // Zero reserved fields.
5135            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5136
5137            // Safety:
5138            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5139            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5140            //   envelope_size bytes, there is always sufficient room.
5141            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
5142            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
5143            encoder, offset + cur_offset, depth
5144        )?;
5145
5146            _prev_end_offset = cur_offset + envelope_size;
5147            if 3 > max_ordinal {
5148                return Ok(());
5149            }
5150
5151            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5152            // are envelope_size bytes.
5153            let cur_offset: usize = (3 - 1) * envelope_size;
5154
5155            // Zero reserved fields.
5156            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5157
5158            // Safety:
5159            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5160            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5161            //   envelope_size bytes, there is always sufficient room.
5162            fidl::encoding::encode_in_envelope_optional::<i8, D>(
5163                self.tx_power_level.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5164                encoder,
5165                offset + cur_offset,
5166                depth,
5167            )?;
5168
5169            _prev_end_offset = cur_offset + envelope_size;
5170            if 4 > max_ordinal {
5171                return Ok(());
5172            }
5173
5174            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5175            // are envelope_size bytes.
5176            let cur_offset: usize = (4 - 1) * envelope_size;
5177
5178            // Zero reserved fields.
5179            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5180
5181            // Safety:
5182            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5183            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5184            //   envelope_size bytes, there is always sufficient room.
5185            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
5186            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
5187            encoder, offset + cur_offset, depth
5188        )?;
5189
5190            _prev_end_offset = cur_offset + envelope_size;
5191            if 5 > max_ordinal {
5192                return Ok(());
5193            }
5194
5195            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5196            // are envelope_size bytes.
5197            let cur_offset: usize = (5 - 1) * envelope_size;
5198
5199            // Zero reserved fields.
5200            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5201
5202            // Safety:
5203            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5204            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5205            //   envelope_size bytes, there is always sufficient room.
5206            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
5207            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
5208            encoder, offset + cur_offset, depth
5209        )?;
5210
5211            _prev_end_offset = cur_offset + envelope_size;
5212            if 6 > max_ordinal {
5213                return Ok(());
5214            }
5215
5216            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5217            // are envelope_size bytes.
5218            let cur_offset: usize = (6 - 1) * envelope_size;
5219
5220            // Zero reserved fields.
5221            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5222
5223            // Safety:
5224            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5225            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5226            //   envelope_size bytes, there is always sufficient room.
5227            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
5228            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
5229            encoder, offset + cur_offset, depth
5230        )?;
5231
5232            _prev_end_offset = cur_offset + envelope_size;
5233            if 7 > max_ordinal {
5234                return Ok(());
5235            }
5236
5237            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5238            // are envelope_size bytes.
5239            let cur_offset: usize = (7 - 1) * envelope_size;
5240
5241            // Zero reserved fields.
5242            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5243
5244            // Safety:
5245            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5246            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5247            //   envelope_size bytes, there is always sufficient room.
5248            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
5249            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
5250            encoder, offset + cur_offset, depth
5251        )?;
5252
5253            _prev_end_offset = cur_offset + envelope_size;
5254            if 8 > max_ordinal {
5255                return Ok(());
5256            }
5257
5258            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5259            // are envelope_size bytes.
5260            let cur_offset: usize = (8 - 1) * envelope_size;
5261
5262            // Zero reserved fields.
5263            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5264
5265            // Safety:
5266            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5267            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5268            //   envelope_size bytes, there is always sufficient room.
5269            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5270                self.include_tx_power_level
5271                    .as_ref()
5272                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5273                encoder,
5274                offset + cur_offset,
5275                depth,
5276            )?;
5277
5278            _prev_end_offset = cur_offset + envelope_size;
5279            if 9 > max_ordinal {
5280                return Ok(());
5281            }
5282
5283            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5284            // are envelope_size bytes.
5285            let cur_offset: usize = (9 - 1) * envelope_size;
5286
5287            // Zero reserved fields.
5288            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5289
5290            // Safety:
5291            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5292            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5293            //   envelope_size bytes, there is always sufficient room.
5294            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5295                self.resolvable_set_identifier
5296                    .as_ref()
5297                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5298                encoder,
5299                offset + cur_offset,
5300                depth,
5301            )?;
5302
5303            _prev_end_offset = cur_offset + envelope_size;
5304            if 10 > max_ordinal {
5305                return Ok(());
5306            }
5307
5308            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5309            // are envelope_size bytes.
5310            let cur_offset: usize = (10 - 1) * envelope_size;
5311
5312            // Zero reserved fields.
5313            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5314
5315            // Safety:
5316            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5317            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5318            //   envelope_size bytes, there is always sufficient room.
5319            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5320                self.broadcast_name.as_ref().map(
5321                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5322                ),
5323                encoder,
5324                offset + cur_offset,
5325                depth,
5326            )?;
5327
5328            _prev_end_offset = cur_offset + envelope_size;
5329
5330            Ok(())
5331        }
5332    }
5333
5334    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingData {
5335        #[inline(always)]
5336        fn new_empty() -> Self {
5337            Self::default()
5338        }
5339
5340        unsafe fn decode(
5341            &mut self,
5342            decoder: &mut fidl::encoding::Decoder<'_, D>,
5343            offset: usize,
5344            mut depth: fidl::encoding::Depth,
5345        ) -> fidl::Result<()> {
5346            decoder.debug_check_bounds::<Self>(offset);
5347            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5348                None => return Err(fidl::Error::NotNullable),
5349                Some(len) => len,
5350            };
5351            // Calling decoder.out_of_line_offset(0) is not allowed.
5352            if len == 0 {
5353                return Ok(());
5354            };
5355            depth.increment()?;
5356            let envelope_size = 8;
5357            let bytes_len = len * envelope_size;
5358            let offset = decoder.out_of_line_offset(bytes_len)?;
5359            // Decode the envelope for each type.
5360            let mut _next_ordinal_to_read = 0;
5361            let mut next_offset = offset;
5362            let end_offset = offset + bytes_len;
5363            _next_ordinal_to_read += 1;
5364            if next_offset >= end_offset {
5365                return Ok(());
5366            }
5367
5368            // Decode unknown envelopes for gaps in ordinals.
5369            while _next_ordinal_to_read < 1 {
5370                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5371                _next_ordinal_to_read += 1;
5372                next_offset += envelope_size;
5373            }
5374
5375            let next_out_of_line = decoder.next_out_of_line();
5376            let handles_before = decoder.remaining_handles();
5377            if let Some((inlined, num_bytes, num_handles)) =
5378                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5379            {
5380                let member_inline_size =
5381                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
5382                        decoder.context,
5383                    );
5384                if inlined != (member_inline_size <= 4) {
5385                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5386                }
5387                let inner_offset;
5388                let mut inner_depth = depth.clone();
5389                if inlined {
5390                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5391                    inner_offset = next_offset;
5392                } else {
5393                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5394                    inner_depth.increment()?;
5395                }
5396                let val_ref = self
5397                    .name
5398                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
5399                fidl::decode!(
5400                    fidl::encoding::BoundedString<248>,
5401                    D,
5402                    val_ref,
5403                    decoder,
5404                    inner_offset,
5405                    inner_depth
5406                )?;
5407                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5408                {
5409                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5410                }
5411                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5412                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5413                }
5414            }
5415
5416            next_offset += envelope_size;
5417            _next_ordinal_to_read += 1;
5418            if next_offset >= end_offset {
5419                return Ok(());
5420            }
5421
5422            // Decode unknown envelopes for gaps in ordinals.
5423            while _next_ordinal_to_read < 2 {
5424                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5425                _next_ordinal_to_read += 1;
5426                next_offset += envelope_size;
5427            }
5428
5429            let next_out_of_line = decoder.next_out_of_line();
5430            let handles_before = decoder.remaining_handles();
5431            if let Some((inlined, num_bytes, num_handles)) =
5432                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5433            {
5434                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5435                if inlined != (member_inline_size <= 4) {
5436                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5437                }
5438                let inner_offset;
5439                let mut inner_depth = depth.clone();
5440                if inlined {
5441                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5442                    inner_offset = next_offset;
5443                } else {
5444                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5445                    inner_depth.increment()?;
5446                }
5447                let val_ref = self.appearance.get_or_insert_with(|| {
5448                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
5449                });
5450                fidl::decode!(
5451                    fidl_fuchsia_bluetooth__common::Appearance,
5452                    D,
5453                    val_ref,
5454                    decoder,
5455                    inner_offset,
5456                    inner_depth
5457                )?;
5458                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5459                {
5460                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5461                }
5462                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5463                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5464                }
5465            }
5466
5467            next_offset += envelope_size;
5468            _next_ordinal_to_read += 1;
5469            if next_offset >= end_offset {
5470                return Ok(());
5471            }
5472
5473            // Decode unknown envelopes for gaps in ordinals.
5474            while _next_ordinal_to_read < 3 {
5475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5476                _next_ordinal_to_read += 1;
5477                next_offset += envelope_size;
5478            }
5479
5480            let next_out_of_line = decoder.next_out_of_line();
5481            let handles_before = decoder.remaining_handles();
5482            if let Some((inlined, num_bytes, num_handles)) =
5483                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5484            {
5485                let member_inline_size =
5486                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5487                if inlined != (member_inline_size <= 4) {
5488                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5489                }
5490                let inner_offset;
5491                let mut inner_depth = depth.clone();
5492                if inlined {
5493                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5494                    inner_offset = next_offset;
5495                } else {
5496                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5497                    inner_depth.increment()?;
5498                }
5499                let val_ref = self.tx_power_level.get_or_insert_with(|| fidl::new_empty!(i8, D));
5500                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5502                {
5503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5504                }
5505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5507                }
5508            }
5509
5510            next_offset += envelope_size;
5511            _next_ordinal_to_read += 1;
5512            if next_offset >= end_offset {
5513                return Ok(());
5514            }
5515
5516            // Decode unknown envelopes for gaps in ordinals.
5517            while _next_ordinal_to_read < 4 {
5518                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5519                _next_ordinal_to_read += 1;
5520                next_offset += envelope_size;
5521            }
5522
5523            let next_out_of_line = decoder.next_out_of_line();
5524            let handles_before = decoder.remaining_handles();
5525            if let Some((inlined, num_bytes, num_handles)) =
5526                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5527            {
5528                let member_inline_size = <fidl::encoding::UnboundedVector<
5529                    fidl_fuchsia_bluetooth__common::Uuid,
5530                > as fidl::encoding::TypeMarker>::inline_size(
5531                    decoder.context
5532                );
5533                if inlined != (member_inline_size <= 4) {
5534                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5535                }
5536                let inner_offset;
5537                let mut inner_depth = depth.clone();
5538                if inlined {
5539                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5540                    inner_offset = next_offset;
5541                } else {
5542                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5543                    inner_depth.increment()?;
5544                }
5545                let val_ref = self.service_uuids.get_or_insert_with(|| {
5546                    fidl::new_empty!(
5547                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5548                        D
5549                    )
5550                });
5551                fidl::decode!(
5552                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5553                    D,
5554                    val_ref,
5555                    decoder,
5556                    inner_offset,
5557                    inner_depth
5558                )?;
5559                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5560                {
5561                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5562                }
5563                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5564                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5565                }
5566            }
5567
5568            next_offset += envelope_size;
5569            _next_ordinal_to_read += 1;
5570            if next_offset >= end_offset {
5571                return Ok(());
5572            }
5573
5574            // Decode unknown envelopes for gaps in ordinals.
5575            while _next_ordinal_to_read < 5 {
5576                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5577                _next_ordinal_to_read += 1;
5578                next_offset += envelope_size;
5579            }
5580
5581            let next_out_of_line = decoder.next_out_of_line();
5582            let handles_before = decoder.remaining_handles();
5583            if let Some((inlined, num_bytes, num_handles)) =
5584                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5585            {
5586                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5587                if inlined != (member_inline_size <= 4) {
5588                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5589                }
5590                let inner_offset;
5591                let mut inner_depth = depth.clone();
5592                if inlined {
5593                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5594                    inner_offset = next_offset;
5595                } else {
5596                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5597                    inner_depth.increment()?;
5598                }
5599                let val_ref = self.service_data.get_or_insert_with(|| {
5600                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
5601                });
5602                fidl::decode!(
5603                    fidl::encoding::UnboundedVector<ServiceData>,
5604                    D,
5605                    val_ref,
5606                    decoder,
5607                    inner_offset,
5608                    inner_depth
5609                )?;
5610                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5611                {
5612                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5613                }
5614                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5615                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5616                }
5617            }
5618
5619            next_offset += envelope_size;
5620            _next_ordinal_to_read += 1;
5621            if next_offset >= end_offset {
5622                return Ok(());
5623            }
5624
5625            // Decode unknown envelopes for gaps in ordinals.
5626            while _next_ordinal_to_read < 6 {
5627                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5628                _next_ordinal_to_read += 1;
5629                next_offset += envelope_size;
5630            }
5631
5632            let next_out_of_line = decoder.next_out_of_line();
5633            let handles_before = decoder.remaining_handles();
5634            if let Some((inlined, num_bytes, num_handles)) =
5635                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5636            {
5637                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5638                if inlined != (member_inline_size <= 4) {
5639                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5640                }
5641                let inner_offset;
5642                let mut inner_depth = depth.clone();
5643                if inlined {
5644                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5645                    inner_offset = next_offset;
5646                } else {
5647                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5648                    inner_depth.increment()?;
5649                }
5650                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
5651                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
5652                });
5653                fidl::decode!(
5654                    fidl::encoding::UnboundedVector<ManufacturerData>,
5655                    D,
5656                    val_ref,
5657                    decoder,
5658                    inner_offset,
5659                    inner_depth
5660                )?;
5661                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5662                {
5663                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5664                }
5665                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5666                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5667                }
5668            }
5669
5670            next_offset += envelope_size;
5671            _next_ordinal_to_read += 1;
5672            if next_offset >= end_offset {
5673                return Ok(());
5674            }
5675
5676            // Decode unknown envelopes for gaps in ordinals.
5677            while _next_ordinal_to_read < 7 {
5678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5679                _next_ordinal_to_read += 1;
5680                next_offset += envelope_size;
5681            }
5682
5683            let next_out_of_line = decoder.next_out_of_line();
5684            let handles_before = decoder.remaining_handles();
5685            if let Some((inlined, num_bytes, num_handles)) =
5686                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5687            {
5688                let member_inline_size = <fidl::encoding::UnboundedVector<
5689                    fidl::encoding::BoundedString<278>,
5690                > as fidl::encoding::TypeMarker>::inline_size(
5691                    decoder.context
5692                );
5693                if inlined != (member_inline_size <= 4) {
5694                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5695                }
5696                let inner_offset;
5697                let mut inner_depth = depth.clone();
5698                if inlined {
5699                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5700                    inner_offset = next_offset;
5701                } else {
5702                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5703                    inner_depth.increment()?;
5704                }
5705                let val_ref = self.uris.get_or_insert_with(|| {
5706                    fidl::new_empty!(
5707                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5708                        D
5709                    )
5710                });
5711                fidl::decode!(
5712                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5713                    D,
5714                    val_ref,
5715                    decoder,
5716                    inner_offset,
5717                    inner_depth
5718                )?;
5719                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5720                {
5721                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5722                }
5723                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5724                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5725                }
5726            }
5727
5728            next_offset += envelope_size;
5729            _next_ordinal_to_read += 1;
5730            if next_offset >= end_offset {
5731                return Ok(());
5732            }
5733
5734            // Decode unknown envelopes for gaps in ordinals.
5735            while _next_ordinal_to_read < 8 {
5736                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5737                _next_ordinal_to_read += 1;
5738                next_offset += envelope_size;
5739            }
5740
5741            let next_out_of_line = decoder.next_out_of_line();
5742            let handles_before = decoder.remaining_handles();
5743            if let Some((inlined, num_bytes, num_handles)) =
5744                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5745            {
5746                let member_inline_size =
5747                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5748                if inlined != (member_inline_size <= 4) {
5749                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5750                }
5751                let inner_offset;
5752                let mut inner_depth = depth.clone();
5753                if inlined {
5754                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5755                    inner_offset = next_offset;
5756                } else {
5757                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5758                    inner_depth.increment()?;
5759                }
5760                let val_ref =
5761                    self.include_tx_power_level.get_or_insert_with(|| fidl::new_empty!(bool, D));
5762                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5763                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5764                {
5765                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5766                }
5767                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5768                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5769                }
5770            }
5771
5772            next_offset += envelope_size;
5773            _next_ordinal_to_read += 1;
5774            if next_offset >= end_offset {
5775                return Ok(());
5776            }
5777
5778            // Decode unknown envelopes for gaps in ordinals.
5779            while _next_ordinal_to_read < 9 {
5780                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5781                _next_ordinal_to_read += 1;
5782                next_offset += envelope_size;
5783            }
5784
5785            let next_out_of_line = decoder.next_out_of_line();
5786            let handles_before = decoder.remaining_handles();
5787            if let Some((inlined, num_bytes, num_handles)) =
5788                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5789            {
5790                let member_inline_size =
5791                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5792                        decoder.context,
5793                    );
5794                if inlined != (member_inline_size <= 4) {
5795                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5796                }
5797                let inner_offset;
5798                let mut inner_depth = depth.clone();
5799                if inlined {
5800                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5801                    inner_offset = next_offset;
5802                } else {
5803                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5804                    inner_depth.increment()?;
5805                }
5806                let val_ref = self
5807                    .resolvable_set_identifier
5808                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5809                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5810                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5811                {
5812                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5813                }
5814                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5815                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5816                }
5817            }
5818
5819            next_offset += envelope_size;
5820            _next_ordinal_to_read += 1;
5821            if next_offset >= end_offset {
5822                return Ok(());
5823            }
5824
5825            // Decode unknown envelopes for gaps in ordinals.
5826            while _next_ordinal_to_read < 10 {
5827                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5828                _next_ordinal_to_read += 1;
5829                next_offset += envelope_size;
5830            }
5831
5832            let next_out_of_line = decoder.next_out_of_line();
5833            let handles_before = decoder.remaining_handles();
5834            if let Some((inlined, num_bytes, num_handles)) =
5835                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5836            {
5837                let member_inline_size =
5838                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5839                        decoder.context,
5840                    );
5841                if inlined != (member_inline_size <= 4) {
5842                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5843                }
5844                let inner_offset;
5845                let mut inner_depth = depth.clone();
5846                if inlined {
5847                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5848                    inner_offset = next_offset;
5849                } else {
5850                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5851                    inner_depth.increment()?;
5852                }
5853                let val_ref = self
5854                    .broadcast_name
5855                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5856                fidl::decode!(
5857                    fidl::encoding::BoundedString<128>,
5858                    D,
5859                    val_ref,
5860                    decoder,
5861                    inner_offset,
5862                    inner_depth
5863                )?;
5864                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5865                {
5866                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5867                }
5868                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5869                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5870                }
5871            }
5872
5873            next_offset += envelope_size;
5874
5875            // Decode the remaining unknown envelopes.
5876            while next_offset < end_offset {
5877                _next_ordinal_to_read += 1;
5878                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5879                next_offset += envelope_size;
5880            }
5881
5882            Ok(())
5883        }
5884    }
5885
5886    impl AdvertisingParameters {
5887        #[inline(always)]
5888        fn max_ordinal_present(&self) -> u64 {
5889            if let Some(_) = self.address_type {
5890                return 7;
5891            }
5892            if let Some(_) = self.advertising_procedure {
5893                return 6;
5894            }
5895            if let Some(_) = self.connection_options {
5896                return 5;
5897            }
5898            if let Some(_) = self.connectable {
5899                return 4;
5900            }
5901            if let Some(_) = self.mode_hint {
5902                return 3;
5903            }
5904            if let Some(_) = self.scan_response {
5905                return 2;
5906            }
5907            if let Some(_) = self.data {
5908                return 1;
5909            }
5910            0
5911        }
5912    }
5913
5914    impl fidl::encoding::ValueTypeMarker for AdvertisingParameters {
5915        type Borrowed<'a> = &'a Self;
5916        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5917            value
5918        }
5919    }
5920
5921    unsafe impl fidl::encoding::TypeMarker for AdvertisingParameters {
5922        type Owned = Self;
5923
5924        #[inline(always)]
5925        fn inline_align(_context: fidl::encoding::Context) -> usize {
5926            8
5927        }
5928
5929        #[inline(always)]
5930        fn inline_size(_context: fidl::encoding::Context) -> usize {
5931            16
5932        }
5933    }
5934
5935    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingParameters, D>
5936        for &AdvertisingParameters
5937    {
5938        unsafe fn encode(
5939            self,
5940            encoder: &mut fidl::encoding::Encoder<'_, D>,
5941            offset: usize,
5942            mut depth: fidl::encoding::Depth,
5943        ) -> fidl::Result<()> {
5944            encoder.debug_check_bounds::<AdvertisingParameters>(offset);
5945            // Vector header
5946            let max_ordinal: u64 = self.max_ordinal_present();
5947            encoder.write_num(max_ordinal, offset);
5948            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5949            // Calling encoder.out_of_line_offset(0) is not allowed.
5950            if max_ordinal == 0 {
5951                return Ok(());
5952            }
5953            depth.increment()?;
5954            let envelope_size = 8;
5955            let bytes_len = max_ordinal as usize * envelope_size;
5956            #[allow(unused_variables)]
5957            let offset = encoder.out_of_line_offset(bytes_len);
5958            let mut _prev_end_offset: usize = 0;
5959            if 1 > max_ordinal {
5960                return Ok(());
5961            }
5962
5963            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5964            // are envelope_size bytes.
5965            let cur_offset: usize = (1 - 1) * envelope_size;
5966
5967            // Zero reserved fields.
5968            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5969
5970            // Safety:
5971            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5972            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5973            //   envelope_size bytes, there is always sufficient room.
5974            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
5975                self.data
5976                    .as_ref()
5977                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
5978                encoder,
5979                offset + cur_offset,
5980                depth,
5981            )?;
5982
5983            _prev_end_offset = cur_offset + envelope_size;
5984            if 2 > max_ordinal {
5985                return Ok(());
5986            }
5987
5988            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5989            // are envelope_size bytes.
5990            let cur_offset: usize = (2 - 1) * envelope_size;
5991
5992            // Zero reserved fields.
5993            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5994
5995            // Safety:
5996            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5997            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5998            //   envelope_size bytes, there is always sufficient room.
5999            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6000                self.scan_response
6001                    .as_ref()
6002                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6003                encoder,
6004                offset + cur_offset,
6005                depth,
6006            )?;
6007
6008            _prev_end_offset = cur_offset + envelope_size;
6009            if 3 > max_ordinal {
6010                return Ok(());
6011            }
6012
6013            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6014            // are envelope_size bytes.
6015            let cur_offset: usize = (3 - 1) * envelope_size;
6016
6017            // Zero reserved fields.
6018            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6019
6020            // Safety:
6021            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6022            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6023            //   envelope_size bytes, there is always sufficient room.
6024            fidl::encoding::encode_in_envelope_optional::<AdvertisingModeHint, D>(
6025                self.mode_hint
6026                    .as_ref()
6027                    .map(<AdvertisingModeHint as fidl::encoding::ValueTypeMarker>::borrow),
6028                encoder,
6029                offset + cur_offset,
6030                depth,
6031            )?;
6032
6033            _prev_end_offset = cur_offset + envelope_size;
6034            if 4 > max_ordinal {
6035                return Ok(());
6036            }
6037
6038            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6039            // are envelope_size bytes.
6040            let cur_offset: usize = (4 - 1) * envelope_size;
6041
6042            // Zero reserved fields.
6043            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6044
6045            // Safety:
6046            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6047            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6048            //   envelope_size bytes, there is always sufficient room.
6049            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6050                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6051                encoder,
6052                offset + cur_offset,
6053                depth,
6054            )?;
6055
6056            _prev_end_offset = cur_offset + envelope_size;
6057            if 5 > max_ordinal {
6058                return Ok(());
6059            }
6060
6061            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6062            // are envelope_size bytes.
6063            let cur_offset: usize = (5 - 1) * envelope_size;
6064
6065            // Zero reserved fields.
6066            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6067
6068            // Safety:
6069            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6070            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6071            //   envelope_size bytes, there is always sufficient room.
6072            fidl::encoding::encode_in_envelope_optional::<ConnectionOptions, D>(
6073                self.connection_options
6074                    .as_ref()
6075                    .map(<ConnectionOptions as fidl::encoding::ValueTypeMarker>::borrow),
6076                encoder,
6077                offset + cur_offset,
6078                depth,
6079            )?;
6080
6081            _prev_end_offset = cur_offset + envelope_size;
6082            if 6 > max_ordinal {
6083                return Ok(());
6084            }
6085
6086            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6087            // are envelope_size bytes.
6088            let cur_offset: usize = (6 - 1) * envelope_size;
6089
6090            // Zero reserved fields.
6091            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6092
6093            // Safety:
6094            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6095            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6096            //   envelope_size bytes, there is always sufficient room.
6097            fidl::encoding::encode_in_envelope_optional::<AdvertisingProcedure, D>(
6098                self.advertising_procedure
6099                    .as_ref()
6100                    .map(<AdvertisingProcedure as fidl::encoding::ValueTypeMarker>::borrow),
6101                encoder,
6102                offset + cur_offset,
6103                depth,
6104            )?;
6105
6106            _prev_end_offset = cur_offset + envelope_size;
6107            if 7 > max_ordinal {
6108                return Ok(());
6109            }
6110
6111            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6112            // are envelope_size bytes.
6113            let cur_offset: usize = (7 - 1) * envelope_size;
6114
6115            // Zero reserved fields.
6116            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6117
6118            // Safety:
6119            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6120            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6121            //   envelope_size bytes, there is always sufficient room.
6122            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AddressType, D>(
6123            self.address_type.as_ref().map(<fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
6124            encoder, offset + cur_offset, depth
6125        )?;
6126
6127            _prev_end_offset = cur_offset + envelope_size;
6128
6129            Ok(())
6130        }
6131    }
6132
6133    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingParameters {
6134        #[inline(always)]
6135        fn new_empty() -> Self {
6136            Self::default()
6137        }
6138
6139        unsafe fn decode(
6140            &mut self,
6141            decoder: &mut fidl::encoding::Decoder<'_, D>,
6142            offset: usize,
6143            mut depth: fidl::encoding::Depth,
6144        ) -> fidl::Result<()> {
6145            decoder.debug_check_bounds::<Self>(offset);
6146            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6147                None => return Err(fidl::Error::NotNullable),
6148                Some(len) => len,
6149            };
6150            // Calling decoder.out_of_line_offset(0) is not allowed.
6151            if len == 0 {
6152                return Ok(());
6153            };
6154            depth.increment()?;
6155            let envelope_size = 8;
6156            let bytes_len = len * envelope_size;
6157            let offset = decoder.out_of_line_offset(bytes_len)?;
6158            // Decode the envelope for each type.
6159            let mut _next_ordinal_to_read = 0;
6160            let mut next_offset = offset;
6161            let end_offset = offset + bytes_len;
6162            _next_ordinal_to_read += 1;
6163            if next_offset >= end_offset {
6164                return Ok(());
6165            }
6166
6167            // Decode unknown envelopes for gaps in ordinals.
6168            while _next_ordinal_to_read < 1 {
6169                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6170                _next_ordinal_to_read += 1;
6171                next_offset += envelope_size;
6172            }
6173
6174            let next_out_of_line = decoder.next_out_of_line();
6175            let handles_before = decoder.remaining_handles();
6176            if let Some((inlined, num_bytes, num_handles)) =
6177                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6178            {
6179                let member_inline_size =
6180                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6181                if inlined != (member_inline_size <= 4) {
6182                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6183                }
6184                let inner_offset;
6185                let mut inner_depth = depth.clone();
6186                if inlined {
6187                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6188                    inner_offset = next_offset;
6189                } else {
6190                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6191                    inner_depth.increment()?;
6192                }
6193                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6194                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6195                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6196                {
6197                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6198                }
6199                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6200                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6201                }
6202            }
6203
6204            next_offset += envelope_size;
6205            _next_ordinal_to_read += 1;
6206            if next_offset >= end_offset {
6207                return Ok(());
6208            }
6209
6210            // Decode unknown envelopes for gaps in ordinals.
6211            while _next_ordinal_to_read < 2 {
6212                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6213                _next_ordinal_to_read += 1;
6214                next_offset += envelope_size;
6215            }
6216
6217            let next_out_of_line = decoder.next_out_of_line();
6218            let handles_before = decoder.remaining_handles();
6219            if let Some((inlined, num_bytes, num_handles)) =
6220                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6221            {
6222                let member_inline_size =
6223                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6224                if inlined != (member_inline_size <= 4) {
6225                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6226                }
6227                let inner_offset;
6228                let mut inner_depth = depth.clone();
6229                if inlined {
6230                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6231                    inner_offset = next_offset;
6232                } else {
6233                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6234                    inner_depth.increment()?;
6235                }
6236                let val_ref =
6237                    self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6238                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6239                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6240                {
6241                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6242                }
6243                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6244                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6245                }
6246            }
6247
6248            next_offset += envelope_size;
6249            _next_ordinal_to_read += 1;
6250            if next_offset >= end_offset {
6251                return Ok(());
6252            }
6253
6254            // Decode unknown envelopes for gaps in ordinals.
6255            while _next_ordinal_to_read < 3 {
6256                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6257                _next_ordinal_to_read += 1;
6258                next_offset += envelope_size;
6259            }
6260
6261            let next_out_of_line = decoder.next_out_of_line();
6262            let handles_before = decoder.remaining_handles();
6263            if let Some((inlined, num_bytes, num_handles)) =
6264                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6265            {
6266                let member_inline_size =
6267                    <AdvertisingModeHint as fidl::encoding::TypeMarker>::inline_size(
6268                        decoder.context,
6269                    );
6270                if inlined != (member_inline_size <= 4) {
6271                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6272                }
6273                let inner_offset;
6274                let mut inner_depth = depth.clone();
6275                if inlined {
6276                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6277                    inner_offset = next_offset;
6278                } else {
6279                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6280                    inner_depth.increment()?;
6281                }
6282                let val_ref =
6283                    self.mode_hint.get_or_insert_with(|| fidl::new_empty!(AdvertisingModeHint, D));
6284                fidl::decode!(AdvertisingModeHint, D, val_ref, decoder, inner_offset, inner_depth)?;
6285                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6286                {
6287                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6288                }
6289                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6290                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6291                }
6292            }
6293
6294            next_offset += envelope_size;
6295            _next_ordinal_to_read += 1;
6296            if next_offset >= end_offset {
6297                return Ok(());
6298            }
6299
6300            // Decode unknown envelopes for gaps in ordinals.
6301            while _next_ordinal_to_read < 4 {
6302                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6303                _next_ordinal_to_read += 1;
6304                next_offset += envelope_size;
6305            }
6306
6307            let next_out_of_line = decoder.next_out_of_line();
6308            let handles_before = decoder.remaining_handles();
6309            if let Some((inlined, num_bytes, num_handles)) =
6310                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6311            {
6312                let member_inline_size =
6313                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6314                if inlined != (member_inline_size <= 4) {
6315                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6316                }
6317                let inner_offset;
6318                let mut inner_depth = depth.clone();
6319                if inlined {
6320                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6321                    inner_offset = next_offset;
6322                } else {
6323                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6324                    inner_depth.increment()?;
6325                }
6326                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6327                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6328                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6329                {
6330                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6331                }
6332                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6333                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6334                }
6335            }
6336
6337            next_offset += envelope_size;
6338            _next_ordinal_to_read += 1;
6339            if next_offset >= end_offset {
6340                return Ok(());
6341            }
6342
6343            // Decode unknown envelopes for gaps in ordinals.
6344            while _next_ordinal_to_read < 5 {
6345                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6346                _next_ordinal_to_read += 1;
6347                next_offset += envelope_size;
6348            }
6349
6350            let next_out_of_line = decoder.next_out_of_line();
6351            let handles_before = decoder.remaining_handles();
6352            if let Some((inlined, num_bytes, num_handles)) =
6353                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6354            {
6355                let member_inline_size =
6356                    <ConnectionOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6357                if inlined != (member_inline_size <= 4) {
6358                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6359                }
6360                let inner_offset;
6361                let mut inner_depth = depth.clone();
6362                if inlined {
6363                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6364                    inner_offset = next_offset;
6365                } else {
6366                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6367                    inner_depth.increment()?;
6368                }
6369                let val_ref = self
6370                    .connection_options
6371                    .get_or_insert_with(|| fidl::new_empty!(ConnectionOptions, D));
6372                fidl::decode!(ConnectionOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
6373                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6374                {
6375                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6376                }
6377                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6378                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6379                }
6380            }
6381
6382            next_offset += envelope_size;
6383            _next_ordinal_to_read += 1;
6384            if next_offset >= end_offset {
6385                return Ok(());
6386            }
6387
6388            // Decode unknown envelopes for gaps in ordinals.
6389            while _next_ordinal_to_read < 6 {
6390                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6391                _next_ordinal_to_read += 1;
6392                next_offset += envelope_size;
6393            }
6394
6395            let next_out_of_line = decoder.next_out_of_line();
6396            let handles_before = decoder.remaining_handles();
6397            if let Some((inlined, num_bytes, num_handles)) =
6398                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6399            {
6400                let member_inline_size =
6401                    <AdvertisingProcedure as fidl::encoding::TypeMarker>::inline_size(
6402                        decoder.context,
6403                    );
6404                if inlined != (member_inline_size <= 4) {
6405                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6406                }
6407                let inner_offset;
6408                let mut inner_depth = depth.clone();
6409                if inlined {
6410                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6411                    inner_offset = next_offset;
6412                } else {
6413                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6414                    inner_depth.increment()?;
6415                }
6416                let val_ref = self
6417                    .advertising_procedure
6418                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingProcedure, D));
6419                fidl::decode!(
6420                    AdvertisingProcedure,
6421                    D,
6422                    val_ref,
6423                    decoder,
6424                    inner_offset,
6425                    inner_depth
6426                )?;
6427                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6428                {
6429                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6430                }
6431                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6432                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6433                }
6434            }
6435
6436            next_offset += envelope_size;
6437            _next_ordinal_to_read += 1;
6438            if next_offset >= end_offset {
6439                return Ok(());
6440            }
6441
6442            // Decode unknown envelopes for gaps in ordinals.
6443            while _next_ordinal_to_read < 7 {
6444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6445                _next_ordinal_to_read += 1;
6446                next_offset += envelope_size;
6447            }
6448
6449            let next_out_of_line = decoder.next_out_of_line();
6450            let handles_before = decoder.remaining_handles();
6451            if let Some((inlined, num_bytes, num_handles)) =
6452                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6453            {
6454                let member_inline_size = <fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6455                if inlined != (member_inline_size <= 4) {
6456                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6457                }
6458                let inner_offset;
6459                let mut inner_depth = depth.clone();
6460                if inlined {
6461                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6462                    inner_offset = next_offset;
6463                } else {
6464                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6465                    inner_depth.increment()?;
6466                }
6467                let val_ref = self.address_type.get_or_insert_with(|| {
6468                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::AddressType, D)
6469                });
6470                fidl::decode!(
6471                    fidl_fuchsia_bluetooth__common::AddressType,
6472                    D,
6473                    val_ref,
6474                    decoder,
6475                    inner_offset,
6476                    inner_depth
6477                )?;
6478                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6479                {
6480                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6481                }
6482                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6483                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6484                }
6485            }
6486
6487            next_offset += envelope_size;
6488
6489            // Decode the remaining unknown envelopes.
6490            while next_offset < end_offset {
6491                _next_ordinal_to_read += 1;
6492                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6493                next_offset += envelope_size;
6494            }
6495
6496            Ok(())
6497        }
6498    }
6499
6500    impl BroadcastIsochronousGroupInfo {
6501        #[inline(always)]
6502        fn max_ordinal_present(&self) -> u64 {
6503            if let Some(_) = self.encryption {
6504                return 4;
6505            }
6506            if let Some(_) = self.phy {
6507                return 3;
6508            }
6509            if let Some(_) = self.max_sdu_size {
6510                return 2;
6511            }
6512            if let Some(_) = self.streams_count {
6513                return 1;
6514            }
6515            0
6516        }
6517    }
6518
6519    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfo {
6520        type Borrowed<'a> = &'a Self;
6521        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6522            value
6523        }
6524    }
6525
6526    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfo {
6527        type Owned = Self;
6528
6529        #[inline(always)]
6530        fn inline_align(_context: fidl::encoding::Context) -> usize {
6531            8
6532        }
6533
6534        #[inline(always)]
6535        fn inline_size(_context: fidl::encoding::Context) -> usize {
6536            16
6537        }
6538    }
6539
6540    unsafe impl<D: fidl::encoding::ResourceDialect>
6541        fidl::encoding::Encode<BroadcastIsochronousGroupInfo, D>
6542        for &BroadcastIsochronousGroupInfo
6543    {
6544        unsafe fn encode(
6545            self,
6546            encoder: &mut fidl::encoding::Encoder<'_, D>,
6547            offset: usize,
6548            mut depth: fidl::encoding::Depth,
6549        ) -> fidl::Result<()> {
6550            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfo>(offset);
6551            // Vector header
6552            let max_ordinal: u64 = self.max_ordinal_present();
6553            encoder.write_num(max_ordinal, offset);
6554            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6555            // Calling encoder.out_of_line_offset(0) is not allowed.
6556            if max_ordinal == 0 {
6557                return Ok(());
6558            }
6559            depth.increment()?;
6560            let envelope_size = 8;
6561            let bytes_len = max_ordinal as usize * envelope_size;
6562            #[allow(unused_variables)]
6563            let offset = encoder.out_of_line_offset(bytes_len);
6564            let mut _prev_end_offset: usize = 0;
6565            if 1 > max_ordinal {
6566                return Ok(());
6567            }
6568
6569            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6570            // are envelope_size bytes.
6571            let cur_offset: usize = (1 - 1) * envelope_size;
6572
6573            // Zero reserved fields.
6574            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6575
6576            // Safety:
6577            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6578            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6579            //   envelope_size bytes, there is always sufficient room.
6580            fidl::encoding::encode_in_envelope_optional::<u8, D>(
6581                self.streams_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6582                encoder,
6583                offset + cur_offset,
6584                depth,
6585            )?;
6586
6587            _prev_end_offset = cur_offset + envelope_size;
6588            if 2 > max_ordinal {
6589                return Ok(());
6590            }
6591
6592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6593            // are envelope_size bytes.
6594            let cur_offset: usize = (2 - 1) * envelope_size;
6595
6596            // Zero reserved fields.
6597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6598
6599            // Safety:
6600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6602            //   envelope_size bytes, there is always sufficient room.
6603            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6604                self.max_sdu_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6605                encoder,
6606                offset + cur_offset,
6607                depth,
6608            )?;
6609
6610            _prev_end_offset = cur_offset + envelope_size;
6611            if 3 > max_ordinal {
6612                return Ok(());
6613            }
6614
6615            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6616            // are envelope_size bytes.
6617            let cur_offset: usize = (3 - 1) * envelope_size;
6618
6619            // Zero reserved fields.
6620            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6621
6622            // Safety:
6623            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6624            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6625            //   envelope_size bytes, there is always sufficient room.
6626            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
6627                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
6628                encoder,
6629                offset + cur_offset,
6630                depth,
6631            )?;
6632
6633            _prev_end_offset = cur_offset + envelope_size;
6634            if 4 > max_ordinal {
6635                return Ok(());
6636            }
6637
6638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6639            // are envelope_size bytes.
6640            let cur_offset: usize = (4 - 1) * envelope_size;
6641
6642            // Zero reserved fields.
6643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6644
6645            // Safety:
6646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6648            //   envelope_size bytes, there is always sufficient room.
6649            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6650                self.encryption.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6651                encoder,
6652                offset + cur_offset,
6653                depth,
6654            )?;
6655
6656            _prev_end_offset = cur_offset + envelope_size;
6657
6658            Ok(())
6659        }
6660    }
6661
6662    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6663        for BroadcastIsochronousGroupInfo
6664    {
6665        #[inline(always)]
6666        fn new_empty() -> Self {
6667            Self::default()
6668        }
6669
6670        unsafe fn decode(
6671            &mut self,
6672            decoder: &mut fidl::encoding::Decoder<'_, D>,
6673            offset: usize,
6674            mut depth: fidl::encoding::Depth,
6675        ) -> fidl::Result<()> {
6676            decoder.debug_check_bounds::<Self>(offset);
6677            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6678                None => return Err(fidl::Error::NotNullable),
6679                Some(len) => len,
6680            };
6681            // Calling decoder.out_of_line_offset(0) is not allowed.
6682            if len == 0 {
6683                return Ok(());
6684            };
6685            depth.increment()?;
6686            let envelope_size = 8;
6687            let bytes_len = len * envelope_size;
6688            let offset = decoder.out_of_line_offset(bytes_len)?;
6689            // Decode the envelope for each type.
6690            let mut _next_ordinal_to_read = 0;
6691            let mut next_offset = offset;
6692            let end_offset = offset + bytes_len;
6693            _next_ordinal_to_read += 1;
6694            if next_offset >= end_offset {
6695                return Ok(());
6696            }
6697
6698            // Decode unknown envelopes for gaps in ordinals.
6699            while _next_ordinal_to_read < 1 {
6700                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6701                _next_ordinal_to_read += 1;
6702                next_offset += envelope_size;
6703            }
6704
6705            let next_out_of_line = decoder.next_out_of_line();
6706            let handles_before = decoder.remaining_handles();
6707            if let Some((inlined, num_bytes, num_handles)) =
6708                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6709            {
6710                let member_inline_size =
6711                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6712                if inlined != (member_inline_size <= 4) {
6713                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6714                }
6715                let inner_offset;
6716                let mut inner_depth = depth.clone();
6717                if inlined {
6718                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6719                    inner_offset = next_offset;
6720                } else {
6721                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6722                    inner_depth.increment()?;
6723                }
6724                let val_ref = self.streams_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
6725                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6727                {
6728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6729                }
6730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6732                }
6733            }
6734
6735            next_offset += envelope_size;
6736            _next_ordinal_to_read += 1;
6737            if next_offset >= end_offset {
6738                return Ok(());
6739            }
6740
6741            // Decode unknown envelopes for gaps in ordinals.
6742            while _next_ordinal_to_read < 2 {
6743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6744                _next_ordinal_to_read += 1;
6745                next_offset += envelope_size;
6746            }
6747
6748            let next_out_of_line = decoder.next_out_of_line();
6749            let handles_before = decoder.remaining_handles();
6750            if let Some((inlined, num_bytes, num_handles)) =
6751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6752            {
6753                let member_inline_size =
6754                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6755                if inlined != (member_inline_size <= 4) {
6756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6757                }
6758                let inner_offset;
6759                let mut inner_depth = depth.clone();
6760                if inlined {
6761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6762                    inner_offset = next_offset;
6763                } else {
6764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6765                    inner_depth.increment()?;
6766                }
6767                let val_ref = self.max_sdu_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6768                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6769                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6770                {
6771                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6772                }
6773                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6774                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6775                }
6776            }
6777
6778            next_offset += envelope_size;
6779            _next_ordinal_to_read += 1;
6780            if next_offset >= end_offset {
6781                return Ok(());
6782            }
6783
6784            // Decode unknown envelopes for gaps in ordinals.
6785            while _next_ordinal_to_read < 3 {
6786                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6787                _next_ordinal_to_read += 1;
6788                next_offset += envelope_size;
6789            }
6790
6791            let next_out_of_line = decoder.next_out_of_line();
6792            let handles_before = decoder.remaining_handles();
6793            if let Some((inlined, num_bytes, num_handles)) =
6794                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6795            {
6796                let member_inline_size =
6797                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6798                if inlined != (member_inline_size <= 4) {
6799                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6800                }
6801                let inner_offset;
6802                let mut inner_depth = depth.clone();
6803                if inlined {
6804                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6805                    inner_offset = next_offset;
6806                } else {
6807                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6808                    inner_depth.increment()?;
6809                }
6810                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
6811                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
6812                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6813                {
6814                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6815                }
6816                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6817                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6818                }
6819            }
6820
6821            next_offset += envelope_size;
6822            _next_ordinal_to_read += 1;
6823            if next_offset >= end_offset {
6824                return Ok(());
6825            }
6826
6827            // Decode unknown envelopes for gaps in ordinals.
6828            while _next_ordinal_to_read < 4 {
6829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6830                _next_ordinal_to_read += 1;
6831                next_offset += envelope_size;
6832            }
6833
6834            let next_out_of_line = decoder.next_out_of_line();
6835            let handles_before = decoder.remaining_handles();
6836            if let Some((inlined, num_bytes, num_handles)) =
6837                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6838            {
6839                let member_inline_size =
6840                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6841                if inlined != (member_inline_size <= 4) {
6842                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6843                }
6844                let inner_offset;
6845                let mut inner_depth = depth.clone();
6846                if inlined {
6847                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6848                    inner_offset = next_offset;
6849                } else {
6850                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6851                    inner_depth.increment()?;
6852                }
6853                let val_ref = self.encryption.get_or_insert_with(|| fidl::new_empty!(bool, D));
6854                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6855                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6856                {
6857                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6858                }
6859                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6860                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6861                }
6862            }
6863
6864            next_offset += envelope_size;
6865
6866            // Decode the remaining unknown envelopes.
6867            while next_offset < end_offset {
6868                _next_ordinal_to_read += 1;
6869                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6870                next_offset += envelope_size;
6871            }
6872
6873            Ok(())
6874        }
6875    }
6876
6877    impl BroadcastIsochronousGroupInfoReport {
6878        #[inline(always)]
6879        fn max_ordinal_present(&self) -> u64 {
6880            if let Some(_) = self.timestamp {
6881                return 2;
6882            }
6883            if let Some(_) = self.info {
6884                return 1;
6885            }
6886            0
6887        }
6888    }
6889
6890    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfoReport {
6891        type Borrowed<'a> = &'a Self;
6892        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6893            value
6894        }
6895    }
6896
6897    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfoReport {
6898        type Owned = Self;
6899
6900        #[inline(always)]
6901        fn inline_align(_context: fidl::encoding::Context) -> usize {
6902            8
6903        }
6904
6905        #[inline(always)]
6906        fn inline_size(_context: fidl::encoding::Context) -> usize {
6907            16
6908        }
6909    }
6910
6911    unsafe impl<D: fidl::encoding::ResourceDialect>
6912        fidl::encoding::Encode<BroadcastIsochronousGroupInfoReport, D>
6913        for &BroadcastIsochronousGroupInfoReport
6914    {
6915        unsafe fn encode(
6916            self,
6917            encoder: &mut fidl::encoding::Encoder<'_, D>,
6918            offset: usize,
6919            mut depth: fidl::encoding::Depth,
6920        ) -> fidl::Result<()> {
6921            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfoReport>(offset);
6922            // Vector header
6923            let max_ordinal: u64 = self.max_ordinal_present();
6924            encoder.write_num(max_ordinal, offset);
6925            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6926            // Calling encoder.out_of_line_offset(0) is not allowed.
6927            if max_ordinal == 0 {
6928                return Ok(());
6929            }
6930            depth.increment()?;
6931            let envelope_size = 8;
6932            let bytes_len = max_ordinal as usize * envelope_size;
6933            #[allow(unused_variables)]
6934            let offset = encoder.out_of_line_offset(bytes_len);
6935            let mut _prev_end_offset: usize = 0;
6936            if 1 > max_ordinal {
6937                return Ok(());
6938            }
6939
6940            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6941            // are envelope_size bytes.
6942            let cur_offset: usize = (1 - 1) * envelope_size;
6943
6944            // Zero reserved fields.
6945            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6946
6947            // Safety:
6948            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6949            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6950            //   envelope_size bytes, there is always sufficient room.
6951            fidl::encoding::encode_in_envelope_optional::<BroadcastIsochronousGroupInfo, D>(
6952                self.info.as_ref().map(
6953                    <BroadcastIsochronousGroupInfo as fidl::encoding::ValueTypeMarker>::borrow,
6954                ),
6955                encoder,
6956                offset + cur_offset,
6957                depth,
6958            )?;
6959
6960            _prev_end_offset = cur_offset + envelope_size;
6961            if 2 > max_ordinal {
6962                return Ok(());
6963            }
6964
6965            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6966            // are envelope_size bytes.
6967            let cur_offset: usize = (2 - 1) * envelope_size;
6968
6969            // Zero reserved fields.
6970            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6971
6972            // Safety:
6973            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6974            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6975            //   envelope_size bytes, there is always sufficient room.
6976            fidl::encoding::encode_in_envelope_optional::<i64, D>(
6977                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6978                encoder,
6979                offset + cur_offset,
6980                depth,
6981            )?;
6982
6983            _prev_end_offset = cur_offset + envelope_size;
6984
6985            Ok(())
6986        }
6987    }
6988
6989    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6990        for BroadcastIsochronousGroupInfoReport
6991    {
6992        #[inline(always)]
6993        fn new_empty() -> Self {
6994            Self::default()
6995        }
6996
6997        unsafe fn decode(
6998            &mut self,
6999            decoder: &mut fidl::encoding::Decoder<'_, D>,
7000            offset: usize,
7001            mut depth: fidl::encoding::Depth,
7002        ) -> fidl::Result<()> {
7003            decoder.debug_check_bounds::<Self>(offset);
7004            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7005                None => return Err(fidl::Error::NotNullable),
7006                Some(len) => len,
7007            };
7008            // Calling decoder.out_of_line_offset(0) is not allowed.
7009            if len == 0 {
7010                return Ok(());
7011            };
7012            depth.increment()?;
7013            let envelope_size = 8;
7014            let bytes_len = len * envelope_size;
7015            let offset = decoder.out_of_line_offset(bytes_len)?;
7016            // Decode the envelope for each type.
7017            let mut _next_ordinal_to_read = 0;
7018            let mut next_offset = offset;
7019            let end_offset = offset + bytes_len;
7020            _next_ordinal_to_read += 1;
7021            if next_offset >= end_offset {
7022                return Ok(());
7023            }
7024
7025            // Decode unknown envelopes for gaps in ordinals.
7026            while _next_ordinal_to_read < 1 {
7027                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7028                _next_ordinal_to_read += 1;
7029                next_offset += envelope_size;
7030            }
7031
7032            let next_out_of_line = decoder.next_out_of_line();
7033            let handles_before = decoder.remaining_handles();
7034            if let Some((inlined, num_bytes, num_handles)) =
7035                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7036            {
7037                let member_inline_size =
7038                    <BroadcastIsochronousGroupInfo as fidl::encoding::TypeMarker>::inline_size(
7039                        decoder.context,
7040                    );
7041                if inlined != (member_inline_size <= 4) {
7042                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7043                }
7044                let inner_offset;
7045                let mut inner_depth = depth.clone();
7046                if inlined {
7047                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7048                    inner_offset = next_offset;
7049                } else {
7050                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7051                    inner_depth.increment()?;
7052                }
7053                let val_ref = self
7054                    .info
7055                    .get_or_insert_with(|| fidl::new_empty!(BroadcastIsochronousGroupInfo, D));
7056                fidl::decode!(
7057                    BroadcastIsochronousGroupInfo,
7058                    D,
7059                    val_ref,
7060                    decoder,
7061                    inner_offset,
7062                    inner_depth
7063                )?;
7064                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7065                {
7066                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7067                }
7068                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7069                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7070                }
7071            }
7072
7073            next_offset += envelope_size;
7074            _next_ordinal_to_read += 1;
7075            if next_offset >= end_offset {
7076                return Ok(());
7077            }
7078
7079            // Decode unknown envelopes for gaps in ordinals.
7080            while _next_ordinal_to_read < 2 {
7081                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7082                _next_ordinal_to_read += 1;
7083                next_offset += envelope_size;
7084            }
7085
7086            let next_out_of_line = decoder.next_out_of_line();
7087            let handles_before = decoder.remaining_handles();
7088            if let Some((inlined, num_bytes, num_handles)) =
7089                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7090            {
7091                let member_inline_size =
7092                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7093                if inlined != (member_inline_size <= 4) {
7094                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7095                }
7096                let inner_offset;
7097                let mut inner_depth = depth.clone();
7098                if inlined {
7099                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7100                    inner_offset = next_offset;
7101                } else {
7102                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7103                    inner_depth.increment()?;
7104                }
7105                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
7106                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7107                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7108                {
7109                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7110                }
7111                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7112                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7113                }
7114            }
7115
7116            next_offset += envelope_size;
7117
7118            // Decode the remaining unknown envelopes.
7119            while next_offset < end_offset {
7120                _next_ordinal_to_read += 1;
7121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7122                next_offset += envelope_size;
7123            }
7124
7125            Ok(())
7126        }
7127    }
7128
7129    impl CentralCreateConnectedIsochronousGroupResponse {
7130        #[inline(always)]
7131        fn max_ordinal_present(&self) -> u64 {
7132            if let Some(_) = self.cig_id {
7133                return 1;
7134            }
7135            0
7136        }
7137    }
7138
7139    impl fidl::encoding::ValueTypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7140        type Borrowed<'a> = &'a Self;
7141        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7142            value
7143        }
7144    }
7145
7146    unsafe impl fidl::encoding::TypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7147        type Owned = Self;
7148
7149        #[inline(always)]
7150        fn inline_align(_context: fidl::encoding::Context) -> usize {
7151            8
7152        }
7153
7154        #[inline(always)]
7155        fn inline_size(_context: fidl::encoding::Context) -> usize {
7156            16
7157        }
7158    }
7159
7160    unsafe impl<D: fidl::encoding::ResourceDialect>
7161        fidl::encoding::Encode<CentralCreateConnectedIsochronousGroupResponse, D>
7162        for &CentralCreateConnectedIsochronousGroupResponse
7163    {
7164        unsafe fn encode(
7165            self,
7166            encoder: &mut fidl::encoding::Encoder<'_, D>,
7167            offset: usize,
7168            mut depth: fidl::encoding::Depth,
7169        ) -> fidl::Result<()> {
7170            encoder.debug_check_bounds::<CentralCreateConnectedIsochronousGroupResponse>(offset);
7171            // Vector header
7172            let max_ordinal: u64 = self.max_ordinal_present();
7173            encoder.write_num(max_ordinal, offset);
7174            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7175            // Calling encoder.out_of_line_offset(0) is not allowed.
7176            if max_ordinal == 0 {
7177                return Ok(());
7178            }
7179            depth.increment()?;
7180            let envelope_size = 8;
7181            let bytes_len = max_ordinal as usize * envelope_size;
7182            #[allow(unused_variables)]
7183            let offset = encoder.out_of_line_offset(bytes_len);
7184            let mut _prev_end_offset: usize = 0;
7185            if 1 > max_ordinal {
7186                return Ok(());
7187            }
7188
7189            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7190            // are envelope_size bytes.
7191            let cur_offset: usize = (1 - 1) * envelope_size;
7192
7193            // Zero reserved fields.
7194            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7195
7196            // Safety:
7197            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7198            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7199            //   envelope_size bytes, there is always sufficient room.
7200            fidl::encoding::encode_in_envelope_optional::<u8, D>(
7201                self.cig_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7202                encoder,
7203                offset + cur_offset,
7204                depth,
7205            )?;
7206
7207            _prev_end_offset = cur_offset + envelope_size;
7208
7209            Ok(())
7210        }
7211    }
7212
7213    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7214        for CentralCreateConnectedIsochronousGroupResponse
7215    {
7216        #[inline(always)]
7217        fn new_empty() -> Self {
7218            Self::default()
7219        }
7220
7221        unsafe fn decode(
7222            &mut self,
7223            decoder: &mut fidl::encoding::Decoder<'_, D>,
7224            offset: usize,
7225            mut depth: fidl::encoding::Depth,
7226        ) -> fidl::Result<()> {
7227            decoder.debug_check_bounds::<Self>(offset);
7228            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7229                None => return Err(fidl::Error::NotNullable),
7230                Some(len) => len,
7231            };
7232            // Calling decoder.out_of_line_offset(0) is not allowed.
7233            if len == 0 {
7234                return Ok(());
7235            };
7236            depth.increment()?;
7237            let envelope_size = 8;
7238            let bytes_len = len * envelope_size;
7239            let offset = decoder.out_of_line_offset(bytes_len)?;
7240            // Decode the envelope for each type.
7241            let mut _next_ordinal_to_read = 0;
7242            let mut next_offset = offset;
7243            let end_offset = offset + bytes_len;
7244            _next_ordinal_to_read += 1;
7245            if next_offset >= end_offset {
7246                return Ok(());
7247            }
7248
7249            // Decode unknown envelopes for gaps in ordinals.
7250            while _next_ordinal_to_read < 1 {
7251                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7252                _next_ordinal_to_read += 1;
7253                next_offset += envelope_size;
7254            }
7255
7256            let next_out_of_line = decoder.next_out_of_line();
7257            let handles_before = decoder.remaining_handles();
7258            if let Some((inlined, num_bytes, num_handles)) =
7259                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7260            {
7261                let member_inline_size =
7262                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7263                if inlined != (member_inline_size <= 4) {
7264                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7265                }
7266                let inner_offset;
7267                let mut inner_depth = depth.clone();
7268                if inlined {
7269                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7270                    inner_offset = next_offset;
7271                } else {
7272                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7273                    inner_depth.increment()?;
7274                }
7275                let val_ref = self.cig_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7276                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7277                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7278                {
7279                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7280                }
7281                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7282                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7283                }
7284            }
7285
7286            next_offset += envelope_size;
7287
7288            // Decode the remaining unknown envelopes.
7289            while next_offset < end_offset {
7290                _next_ordinal_to_read += 1;
7291                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7292                next_offset += envelope_size;
7293            }
7294
7295            Ok(())
7296        }
7297    }
7298
7299    impl ChannelListenerRegistryListenL2capResponse {
7300        #[inline(always)]
7301        fn max_ordinal_present(&self) -> u64 {
7302            if let Some(_) = self.psm {
7303                return 1;
7304            }
7305            0
7306        }
7307    }
7308
7309    impl fidl::encoding::ValueTypeMarker for ChannelListenerRegistryListenL2capResponse {
7310        type Borrowed<'a> = &'a Self;
7311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7312            value
7313        }
7314    }
7315
7316    unsafe impl fidl::encoding::TypeMarker for ChannelListenerRegistryListenL2capResponse {
7317        type Owned = Self;
7318
7319        #[inline(always)]
7320        fn inline_align(_context: fidl::encoding::Context) -> usize {
7321            8
7322        }
7323
7324        #[inline(always)]
7325        fn inline_size(_context: fidl::encoding::Context) -> usize {
7326            16
7327        }
7328    }
7329
7330    unsafe impl<D: fidl::encoding::ResourceDialect>
7331        fidl::encoding::Encode<ChannelListenerRegistryListenL2capResponse, D>
7332        for &ChannelListenerRegistryListenL2capResponse
7333    {
7334        unsafe fn encode(
7335            self,
7336            encoder: &mut fidl::encoding::Encoder<'_, D>,
7337            offset: usize,
7338            mut depth: fidl::encoding::Depth,
7339        ) -> fidl::Result<()> {
7340            encoder.debug_check_bounds::<ChannelListenerRegistryListenL2capResponse>(offset);
7341            // Vector header
7342            let max_ordinal: u64 = self.max_ordinal_present();
7343            encoder.write_num(max_ordinal, offset);
7344            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7345            // Calling encoder.out_of_line_offset(0) is not allowed.
7346            if max_ordinal == 0 {
7347                return Ok(());
7348            }
7349            depth.increment()?;
7350            let envelope_size = 8;
7351            let bytes_len = max_ordinal as usize * envelope_size;
7352            #[allow(unused_variables)]
7353            let offset = encoder.out_of_line_offset(bytes_len);
7354            let mut _prev_end_offset: usize = 0;
7355            if 1 > max_ordinal {
7356                return Ok(());
7357            }
7358
7359            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7360            // are envelope_size bytes.
7361            let cur_offset: usize = (1 - 1) * envelope_size;
7362
7363            // Zero reserved fields.
7364            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7365
7366            // Safety:
7367            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7368            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7369            //   envelope_size bytes, there is always sufficient room.
7370            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7371                self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7372                encoder,
7373                offset + cur_offset,
7374                depth,
7375            )?;
7376
7377            _prev_end_offset = cur_offset + envelope_size;
7378
7379            Ok(())
7380        }
7381    }
7382
7383    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7384        for ChannelListenerRegistryListenL2capResponse
7385    {
7386        #[inline(always)]
7387        fn new_empty() -> Self {
7388            Self::default()
7389        }
7390
7391        unsafe fn decode(
7392            &mut self,
7393            decoder: &mut fidl::encoding::Decoder<'_, D>,
7394            offset: usize,
7395            mut depth: fidl::encoding::Depth,
7396        ) -> fidl::Result<()> {
7397            decoder.debug_check_bounds::<Self>(offset);
7398            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7399                None => return Err(fidl::Error::NotNullable),
7400                Some(len) => len,
7401            };
7402            // Calling decoder.out_of_line_offset(0) is not allowed.
7403            if len == 0 {
7404                return Ok(());
7405            };
7406            depth.increment()?;
7407            let envelope_size = 8;
7408            let bytes_len = len * envelope_size;
7409            let offset = decoder.out_of_line_offset(bytes_len)?;
7410            // Decode the envelope for each type.
7411            let mut _next_ordinal_to_read = 0;
7412            let mut next_offset = offset;
7413            let end_offset = offset + bytes_len;
7414            _next_ordinal_to_read += 1;
7415            if next_offset >= end_offset {
7416                return Ok(());
7417            }
7418
7419            // Decode unknown envelopes for gaps in ordinals.
7420            while _next_ordinal_to_read < 1 {
7421                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7422                _next_ordinal_to_read += 1;
7423                next_offset += envelope_size;
7424            }
7425
7426            let next_out_of_line = decoder.next_out_of_line();
7427            let handles_before = decoder.remaining_handles();
7428            if let Some((inlined, num_bytes, num_handles)) =
7429                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7430            {
7431                let member_inline_size =
7432                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7433                if inlined != (member_inline_size <= 4) {
7434                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7435                }
7436                let inner_offset;
7437                let mut inner_depth = depth.clone();
7438                if inlined {
7439                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7440                    inner_offset = next_offset;
7441                } else {
7442                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7443                    inner_depth.increment()?;
7444                }
7445                let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
7446                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7447                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7448                {
7449                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7450                }
7451                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7452                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7453                }
7454            }
7455
7456            next_offset += envelope_size;
7457
7458            // Decode the remaining unknown envelopes.
7459            while next_offset < end_offset {
7460                _next_ordinal_to_read += 1;
7461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7462                next_offset += envelope_size;
7463            }
7464
7465            Ok(())
7466        }
7467    }
7468
7469    impl CigParameters {
7470        #[inline(always)]
7471        fn max_ordinal_present(&self) -> u64 {
7472            if let Some(_) = self.max_transport_latency_p_to_c {
7473                return 6;
7474            }
7475            if let Some(_) = self.max_transport_latency_c_to_p {
7476                return 5;
7477            }
7478            if let Some(_) = self.framing {
7479                return 4;
7480            }
7481            if let Some(_) = self.packing {
7482                return 3;
7483            }
7484            if let Some(_) = self.sdu_interval_p_to_c {
7485                return 2;
7486            }
7487            if let Some(_) = self.sdu_interval_c_to_p {
7488                return 1;
7489            }
7490            0
7491        }
7492    }
7493
7494    impl fidl::encoding::ValueTypeMarker for CigParameters {
7495        type Borrowed<'a> = &'a Self;
7496        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7497            value
7498        }
7499    }
7500
7501    unsafe impl fidl::encoding::TypeMarker for CigParameters {
7502        type Owned = Self;
7503
7504        #[inline(always)]
7505        fn inline_align(_context: fidl::encoding::Context) -> usize {
7506            8
7507        }
7508
7509        #[inline(always)]
7510        fn inline_size(_context: fidl::encoding::Context) -> usize {
7511            16
7512        }
7513    }
7514
7515    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CigParameters, D>
7516        for &CigParameters
7517    {
7518        unsafe fn encode(
7519            self,
7520            encoder: &mut fidl::encoding::Encoder<'_, D>,
7521            offset: usize,
7522            mut depth: fidl::encoding::Depth,
7523        ) -> fidl::Result<()> {
7524            encoder.debug_check_bounds::<CigParameters>(offset);
7525            // Vector header
7526            let max_ordinal: u64 = self.max_ordinal_present();
7527            encoder.write_num(max_ordinal, offset);
7528            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7529            // Calling encoder.out_of_line_offset(0) is not allowed.
7530            if max_ordinal == 0 {
7531                return Ok(());
7532            }
7533            depth.increment()?;
7534            let envelope_size = 8;
7535            let bytes_len = max_ordinal as usize * envelope_size;
7536            #[allow(unused_variables)]
7537            let offset = encoder.out_of_line_offset(bytes_len);
7538            let mut _prev_end_offset: usize = 0;
7539            if 1 > max_ordinal {
7540                return Ok(());
7541            }
7542
7543            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7544            // are envelope_size bytes.
7545            let cur_offset: usize = (1 - 1) * envelope_size;
7546
7547            // Zero reserved fields.
7548            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7549
7550            // Safety:
7551            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7552            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7553            //   envelope_size bytes, there is always sufficient room.
7554            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7555                self.sdu_interval_c_to_p
7556                    .as_ref()
7557                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7558                encoder,
7559                offset + cur_offset,
7560                depth,
7561            )?;
7562
7563            _prev_end_offset = cur_offset + envelope_size;
7564            if 2 > max_ordinal {
7565                return Ok(());
7566            }
7567
7568            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7569            // are envelope_size bytes.
7570            let cur_offset: usize = (2 - 1) * envelope_size;
7571
7572            // Zero reserved fields.
7573            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7574
7575            // Safety:
7576            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7577            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7578            //   envelope_size bytes, there is always sufficient room.
7579            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7580                self.sdu_interval_p_to_c
7581                    .as_ref()
7582                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7583                encoder,
7584                offset + cur_offset,
7585                depth,
7586            )?;
7587
7588            _prev_end_offset = cur_offset + envelope_size;
7589            if 3 > max_ordinal {
7590                return Ok(());
7591            }
7592
7593            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7594            // are envelope_size bytes.
7595            let cur_offset: usize = (3 - 1) * envelope_size;
7596
7597            // Zero reserved fields.
7598            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7599
7600            // Safety:
7601            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7602            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7603            //   envelope_size bytes, there is always sufficient room.
7604            fidl::encoding::encode_in_envelope_optional::<CigPacking, D>(
7605                self.packing.as_ref().map(<CigPacking as fidl::encoding::ValueTypeMarker>::borrow),
7606                encoder,
7607                offset + cur_offset,
7608                depth,
7609            )?;
7610
7611            _prev_end_offset = cur_offset + envelope_size;
7612            if 4 > max_ordinal {
7613                return Ok(());
7614            }
7615
7616            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7617            // are envelope_size bytes.
7618            let cur_offset: usize = (4 - 1) * envelope_size;
7619
7620            // Zero reserved fields.
7621            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7622
7623            // Safety:
7624            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7625            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7626            //   envelope_size bytes, there is always sufficient room.
7627            fidl::encoding::encode_in_envelope_optional::<CigFramingOptions, D>(
7628                self.framing
7629                    .as_ref()
7630                    .map(<CigFramingOptions as fidl::encoding::ValueTypeMarker>::borrow),
7631                encoder,
7632                offset + cur_offset,
7633                depth,
7634            )?;
7635
7636            _prev_end_offset = cur_offset + envelope_size;
7637            if 5 > max_ordinal {
7638                return Ok(());
7639            }
7640
7641            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7642            // are envelope_size bytes.
7643            let cur_offset: usize = (5 - 1) * envelope_size;
7644
7645            // Zero reserved fields.
7646            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7647
7648            // Safety:
7649            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7650            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7651            //   envelope_size bytes, there is always sufficient room.
7652            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7653                self.max_transport_latency_c_to_p
7654                    .as_ref()
7655                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7656                encoder,
7657                offset + cur_offset,
7658                depth,
7659            )?;
7660
7661            _prev_end_offset = cur_offset + envelope_size;
7662            if 6 > max_ordinal {
7663                return Ok(());
7664            }
7665
7666            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7667            // are envelope_size bytes.
7668            let cur_offset: usize = (6 - 1) * envelope_size;
7669
7670            // Zero reserved fields.
7671            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7672
7673            // Safety:
7674            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7675            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7676            //   envelope_size bytes, there is always sufficient room.
7677            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7678                self.max_transport_latency_p_to_c
7679                    .as_ref()
7680                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7681                encoder,
7682                offset + cur_offset,
7683                depth,
7684            )?;
7685
7686            _prev_end_offset = cur_offset + envelope_size;
7687
7688            Ok(())
7689        }
7690    }
7691
7692    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigParameters {
7693        #[inline(always)]
7694        fn new_empty() -> Self {
7695            Self::default()
7696        }
7697
7698        unsafe fn decode(
7699            &mut self,
7700            decoder: &mut fidl::encoding::Decoder<'_, D>,
7701            offset: usize,
7702            mut depth: fidl::encoding::Depth,
7703        ) -> fidl::Result<()> {
7704            decoder.debug_check_bounds::<Self>(offset);
7705            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7706                None => return Err(fidl::Error::NotNullable),
7707                Some(len) => len,
7708            };
7709            // Calling decoder.out_of_line_offset(0) is not allowed.
7710            if len == 0 {
7711                return Ok(());
7712            };
7713            depth.increment()?;
7714            let envelope_size = 8;
7715            let bytes_len = len * envelope_size;
7716            let offset = decoder.out_of_line_offset(bytes_len)?;
7717            // Decode the envelope for each type.
7718            let mut _next_ordinal_to_read = 0;
7719            let mut next_offset = offset;
7720            let end_offset = offset + bytes_len;
7721            _next_ordinal_to_read += 1;
7722            if next_offset >= end_offset {
7723                return Ok(());
7724            }
7725
7726            // Decode unknown envelopes for gaps in ordinals.
7727            while _next_ordinal_to_read < 1 {
7728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7729                _next_ordinal_to_read += 1;
7730                next_offset += envelope_size;
7731            }
7732
7733            let next_out_of_line = decoder.next_out_of_line();
7734            let handles_before = decoder.remaining_handles();
7735            if let Some((inlined, num_bytes, num_handles)) =
7736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7737            {
7738                let member_inline_size =
7739                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7740                if inlined != (member_inline_size <= 4) {
7741                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7742                }
7743                let inner_offset;
7744                let mut inner_depth = depth.clone();
7745                if inlined {
7746                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7747                    inner_offset = next_offset;
7748                } else {
7749                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7750                    inner_depth.increment()?;
7751                }
7752                let val_ref =
7753                    self.sdu_interval_c_to_p.get_or_insert_with(|| fidl::new_empty!(u32, D));
7754                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7755                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7756                {
7757                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7758                }
7759                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7760                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7761                }
7762            }
7763
7764            next_offset += envelope_size;
7765            _next_ordinal_to_read += 1;
7766            if next_offset >= end_offset {
7767                return Ok(());
7768            }
7769
7770            // Decode unknown envelopes for gaps in ordinals.
7771            while _next_ordinal_to_read < 2 {
7772                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7773                _next_ordinal_to_read += 1;
7774                next_offset += envelope_size;
7775            }
7776
7777            let next_out_of_line = decoder.next_out_of_line();
7778            let handles_before = decoder.remaining_handles();
7779            if let Some((inlined, num_bytes, num_handles)) =
7780                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7781            {
7782                let member_inline_size =
7783                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7784                if inlined != (member_inline_size <= 4) {
7785                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7786                }
7787                let inner_offset;
7788                let mut inner_depth = depth.clone();
7789                if inlined {
7790                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7791                    inner_offset = next_offset;
7792                } else {
7793                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7794                    inner_depth.increment()?;
7795                }
7796                let val_ref =
7797                    self.sdu_interval_p_to_c.get_or_insert_with(|| fidl::new_empty!(u32, D));
7798                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7799                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7800                {
7801                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7802                }
7803                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7804                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7805                }
7806            }
7807
7808            next_offset += envelope_size;
7809            _next_ordinal_to_read += 1;
7810            if next_offset >= end_offset {
7811                return Ok(());
7812            }
7813
7814            // Decode unknown envelopes for gaps in ordinals.
7815            while _next_ordinal_to_read < 3 {
7816                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7817                _next_ordinal_to_read += 1;
7818                next_offset += envelope_size;
7819            }
7820
7821            let next_out_of_line = decoder.next_out_of_line();
7822            let handles_before = decoder.remaining_handles();
7823            if let Some((inlined, num_bytes, num_handles)) =
7824                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7825            {
7826                let member_inline_size =
7827                    <CigPacking as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7828                if inlined != (member_inline_size <= 4) {
7829                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7830                }
7831                let inner_offset;
7832                let mut inner_depth = depth.clone();
7833                if inlined {
7834                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7835                    inner_offset = next_offset;
7836                } else {
7837                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7838                    inner_depth.increment()?;
7839                }
7840                let val_ref = self.packing.get_or_insert_with(|| fidl::new_empty!(CigPacking, D));
7841                fidl::decode!(CigPacking, D, val_ref, decoder, inner_offset, inner_depth)?;
7842                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7843                {
7844                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7845                }
7846                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7847                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7848                }
7849            }
7850
7851            next_offset += envelope_size;
7852            _next_ordinal_to_read += 1;
7853            if next_offset >= end_offset {
7854                return Ok(());
7855            }
7856
7857            // Decode unknown envelopes for gaps in ordinals.
7858            while _next_ordinal_to_read < 4 {
7859                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7860                _next_ordinal_to_read += 1;
7861                next_offset += envelope_size;
7862            }
7863
7864            let next_out_of_line = decoder.next_out_of_line();
7865            let handles_before = decoder.remaining_handles();
7866            if let Some((inlined, num_bytes, num_handles)) =
7867                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7868            {
7869                let member_inline_size =
7870                    <CigFramingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7871                if inlined != (member_inline_size <= 4) {
7872                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7873                }
7874                let inner_offset;
7875                let mut inner_depth = depth.clone();
7876                if inlined {
7877                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7878                    inner_offset = next_offset;
7879                } else {
7880                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7881                    inner_depth.increment()?;
7882                }
7883                let val_ref =
7884                    self.framing.get_or_insert_with(|| fidl::new_empty!(CigFramingOptions, D));
7885                fidl::decode!(CigFramingOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
7886                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7887                {
7888                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7889                }
7890                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7891                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7892                }
7893            }
7894
7895            next_offset += envelope_size;
7896            _next_ordinal_to_read += 1;
7897            if next_offset >= end_offset {
7898                return Ok(());
7899            }
7900
7901            // Decode unknown envelopes for gaps in ordinals.
7902            while _next_ordinal_to_read < 5 {
7903                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7904                _next_ordinal_to_read += 1;
7905                next_offset += envelope_size;
7906            }
7907
7908            let next_out_of_line = decoder.next_out_of_line();
7909            let handles_before = decoder.remaining_handles();
7910            if let Some((inlined, num_bytes, num_handles)) =
7911                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7912            {
7913                let member_inline_size =
7914                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7915                if inlined != (member_inline_size <= 4) {
7916                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7917                }
7918                let inner_offset;
7919                let mut inner_depth = depth.clone();
7920                if inlined {
7921                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7922                    inner_offset = next_offset;
7923                } else {
7924                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7925                    inner_depth.increment()?;
7926                }
7927                let val_ref = self
7928                    .max_transport_latency_c_to_p
7929                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
7930                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7931                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7932                {
7933                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7934                }
7935                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7936                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7937                }
7938            }
7939
7940            next_offset += envelope_size;
7941            _next_ordinal_to_read += 1;
7942            if next_offset >= end_offset {
7943                return Ok(());
7944            }
7945
7946            // Decode unknown envelopes for gaps in ordinals.
7947            while _next_ordinal_to_read < 6 {
7948                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7949                _next_ordinal_to_read += 1;
7950                next_offset += envelope_size;
7951            }
7952
7953            let next_out_of_line = decoder.next_out_of_line();
7954            let handles_before = decoder.remaining_handles();
7955            if let Some((inlined, num_bytes, num_handles)) =
7956                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7957            {
7958                let member_inline_size =
7959                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7960                if inlined != (member_inline_size <= 4) {
7961                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7962                }
7963                let inner_offset;
7964                let mut inner_depth = depth.clone();
7965                if inlined {
7966                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7967                    inner_offset = next_offset;
7968                } else {
7969                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7970                    inner_depth.increment()?;
7971                }
7972                let val_ref = self
7973                    .max_transport_latency_p_to_c
7974                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
7975                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7976                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7977                {
7978                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7979                }
7980                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7981                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7982                }
7983            }
7984
7985            next_offset += envelope_size;
7986
7987            // Decode the remaining unknown envelopes.
7988            while next_offset < end_offset {
7989                _next_ordinal_to_read += 1;
7990                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7991                next_offset += envelope_size;
7992            }
7993
7994            Ok(())
7995        }
7996    }
7997
7998    impl CisEstablishedParameters {
7999        #[inline(always)]
8000        fn max_ordinal_present(&self) -> u64 {
8001            if let Some(_) = self.peripheral_to_central_params {
8002                return 6;
8003            }
8004            if let Some(_) = self.central_to_peripheral_params {
8005                return 5;
8006            }
8007            if let Some(_) = self.iso_interval {
8008                return 4;
8009            }
8010            if let Some(_) = self.max_subevents {
8011                return 3;
8012            }
8013            if let Some(_) = self.cis_sync_delay {
8014                return 2;
8015            }
8016            if let Some(_) = self.cig_sync_delay {
8017                return 1;
8018            }
8019            0
8020        }
8021    }
8022
8023    impl fidl::encoding::ValueTypeMarker for CisEstablishedParameters {
8024        type Borrowed<'a> = &'a Self;
8025        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8026            value
8027        }
8028    }
8029
8030    unsafe impl fidl::encoding::TypeMarker for CisEstablishedParameters {
8031        type Owned = Self;
8032
8033        #[inline(always)]
8034        fn inline_align(_context: fidl::encoding::Context) -> usize {
8035            8
8036        }
8037
8038        #[inline(always)]
8039        fn inline_size(_context: fidl::encoding::Context) -> usize {
8040            16
8041        }
8042    }
8043
8044    unsafe impl<D: fidl::encoding::ResourceDialect>
8045        fidl::encoding::Encode<CisEstablishedParameters, D> for &CisEstablishedParameters
8046    {
8047        unsafe fn encode(
8048            self,
8049            encoder: &mut fidl::encoding::Encoder<'_, D>,
8050            offset: usize,
8051            mut depth: fidl::encoding::Depth,
8052        ) -> fidl::Result<()> {
8053            encoder.debug_check_bounds::<CisEstablishedParameters>(offset);
8054            // Vector header
8055            let max_ordinal: u64 = self.max_ordinal_present();
8056            encoder.write_num(max_ordinal, offset);
8057            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8058            // Calling encoder.out_of_line_offset(0) is not allowed.
8059            if max_ordinal == 0 {
8060                return Ok(());
8061            }
8062            depth.increment()?;
8063            let envelope_size = 8;
8064            let bytes_len = max_ordinal as usize * envelope_size;
8065            #[allow(unused_variables)]
8066            let offset = encoder.out_of_line_offset(bytes_len);
8067            let mut _prev_end_offset: usize = 0;
8068            if 1 > max_ordinal {
8069                return Ok(());
8070            }
8071
8072            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8073            // are envelope_size bytes.
8074            let cur_offset: usize = (1 - 1) * envelope_size;
8075
8076            // Zero reserved fields.
8077            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8078
8079            // Safety:
8080            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8081            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8082            //   envelope_size bytes, there is always sufficient room.
8083            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8084                self.cig_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8085                encoder,
8086                offset + cur_offset,
8087                depth,
8088            )?;
8089
8090            _prev_end_offset = cur_offset + envelope_size;
8091            if 2 > max_ordinal {
8092                return Ok(());
8093            }
8094
8095            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8096            // are envelope_size bytes.
8097            let cur_offset: usize = (2 - 1) * envelope_size;
8098
8099            // Zero reserved fields.
8100            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8101
8102            // Safety:
8103            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8104            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8105            //   envelope_size bytes, there is always sufficient room.
8106            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8107                self.cis_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8108                encoder,
8109                offset + cur_offset,
8110                depth,
8111            )?;
8112
8113            _prev_end_offset = cur_offset + envelope_size;
8114            if 3 > max_ordinal {
8115                return Ok(());
8116            }
8117
8118            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8119            // are envelope_size bytes.
8120            let cur_offset: usize = (3 - 1) * envelope_size;
8121
8122            // Zero reserved fields.
8123            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8124
8125            // Safety:
8126            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8127            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8128            //   envelope_size bytes, there is always sufficient room.
8129            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8130                self.max_subevents.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8131                encoder,
8132                offset + cur_offset,
8133                depth,
8134            )?;
8135
8136            _prev_end_offset = cur_offset + envelope_size;
8137            if 4 > max_ordinal {
8138                return Ok(());
8139            }
8140
8141            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8142            // are envelope_size bytes.
8143            let cur_offset: usize = (4 - 1) * envelope_size;
8144
8145            // Zero reserved fields.
8146            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8147
8148            // Safety:
8149            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8150            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8151            //   envelope_size bytes, there is always sufficient room.
8152            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8153                self.iso_interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8154                encoder,
8155                offset + cur_offset,
8156                depth,
8157            )?;
8158
8159            _prev_end_offset = cur_offset + envelope_size;
8160            if 5 > max_ordinal {
8161                return Ok(());
8162            }
8163
8164            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8165            // are envelope_size bytes.
8166            let cur_offset: usize = (5 - 1) * envelope_size;
8167
8168            // Zero reserved fields.
8169            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8170
8171            // Safety:
8172            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8173            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8174            //   envelope_size bytes, there is always sufficient room.
8175            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8176                self.central_to_peripheral_params
8177                    .as_ref()
8178                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8179                encoder,
8180                offset + cur_offset,
8181                depth,
8182            )?;
8183
8184            _prev_end_offset = cur_offset + envelope_size;
8185            if 6 > max_ordinal {
8186                return Ok(());
8187            }
8188
8189            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8190            // are envelope_size bytes.
8191            let cur_offset: usize = (6 - 1) * envelope_size;
8192
8193            // Zero reserved fields.
8194            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8195
8196            // Safety:
8197            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8198            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8199            //   envelope_size bytes, there is always sufficient room.
8200            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8201                self.peripheral_to_central_params
8202                    .as_ref()
8203                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8204                encoder,
8205                offset + cur_offset,
8206                depth,
8207            )?;
8208
8209            _prev_end_offset = cur_offset + envelope_size;
8210
8211            Ok(())
8212        }
8213    }
8214
8215    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8216        for CisEstablishedParameters
8217    {
8218        #[inline(always)]
8219        fn new_empty() -> Self {
8220            Self::default()
8221        }
8222
8223        unsafe fn decode(
8224            &mut self,
8225            decoder: &mut fidl::encoding::Decoder<'_, D>,
8226            offset: usize,
8227            mut depth: fidl::encoding::Depth,
8228        ) -> fidl::Result<()> {
8229            decoder.debug_check_bounds::<Self>(offset);
8230            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8231                None => return Err(fidl::Error::NotNullable),
8232                Some(len) => len,
8233            };
8234            // Calling decoder.out_of_line_offset(0) is not allowed.
8235            if len == 0 {
8236                return Ok(());
8237            };
8238            depth.increment()?;
8239            let envelope_size = 8;
8240            let bytes_len = len * envelope_size;
8241            let offset = decoder.out_of_line_offset(bytes_len)?;
8242            // Decode the envelope for each type.
8243            let mut _next_ordinal_to_read = 0;
8244            let mut next_offset = offset;
8245            let end_offset = offset + bytes_len;
8246            _next_ordinal_to_read += 1;
8247            if next_offset >= end_offset {
8248                return Ok(());
8249            }
8250
8251            // Decode unknown envelopes for gaps in ordinals.
8252            while _next_ordinal_to_read < 1 {
8253                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8254                _next_ordinal_to_read += 1;
8255                next_offset += envelope_size;
8256            }
8257
8258            let next_out_of_line = decoder.next_out_of_line();
8259            let handles_before = decoder.remaining_handles();
8260            if let Some((inlined, num_bytes, num_handles)) =
8261                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8262            {
8263                let member_inline_size =
8264                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8265                if inlined != (member_inline_size <= 4) {
8266                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8267                }
8268                let inner_offset;
8269                let mut inner_depth = depth.clone();
8270                if inlined {
8271                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8272                    inner_offset = next_offset;
8273                } else {
8274                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8275                    inner_depth.increment()?;
8276                }
8277                let val_ref = self.cig_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8278                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8279                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8280                {
8281                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8282                }
8283                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8284                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8285                }
8286            }
8287
8288            next_offset += envelope_size;
8289            _next_ordinal_to_read += 1;
8290            if next_offset >= end_offset {
8291                return Ok(());
8292            }
8293
8294            // Decode unknown envelopes for gaps in ordinals.
8295            while _next_ordinal_to_read < 2 {
8296                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8297                _next_ordinal_to_read += 1;
8298                next_offset += envelope_size;
8299            }
8300
8301            let next_out_of_line = decoder.next_out_of_line();
8302            let handles_before = decoder.remaining_handles();
8303            if let Some((inlined, num_bytes, num_handles)) =
8304                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8305            {
8306                let member_inline_size =
8307                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8308                if inlined != (member_inline_size <= 4) {
8309                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8310                }
8311                let inner_offset;
8312                let mut inner_depth = depth.clone();
8313                if inlined {
8314                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8315                    inner_offset = next_offset;
8316                } else {
8317                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8318                    inner_depth.increment()?;
8319                }
8320                let val_ref = self.cis_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8321                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8322                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8323                {
8324                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8325                }
8326                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8327                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8328                }
8329            }
8330
8331            next_offset += envelope_size;
8332            _next_ordinal_to_read += 1;
8333            if next_offset >= end_offset {
8334                return Ok(());
8335            }
8336
8337            // Decode unknown envelopes for gaps in ordinals.
8338            while _next_ordinal_to_read < 3 {
8339                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8340                _next_ordinal_to_read += 1;
8341                next_offset += envelope_size;
8342            }
8343
8344            let next_out_of_line = decoder.next_out_of_line();
8345            let handles_before = decoder.remaining_handles();
8346            if let Some((inlined, num_bytes, num_handles)) =
8347                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8348            {
8349                let member_inline_size =
8350                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8351                if inlined != (member_inline_size <= 4) {
8352                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8353                }
8354                let inner_offset;
8355                let mut inner_depth = depth.clone();
8356                if inlined {
8357                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8358                    inner_offset = next_offset;
8359                } else {
8360                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8361                    inner_depth.increment()?;
8362                }
8363                let val_ref = self.max_subevents.get_or_insert_with(|| fidl::new_empty!(u8, D));
8364                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8365                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8366                {
8367                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8368                }
8369                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8370                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8371                }
8372            }
8373
8374            next_offset += envelope_size;
8375            _next_ordinal_to_read += 1;
8376            if next_offset >= end_offset {
8377                return Ok(());
8378            }
8379
8380            // Decode unknown envelopes for gaps in ordinals.
8381            while _next_ordinal_to_read < 4 {
8382                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8383                _next_ordinal_to_read += 1;
8384                next_offset += envelope_size;
8385            }
8386
8387            let next_out_of_line = decoder.next_out_of_line();
8388            let handles_before = decoder.remaining_handles();
8389            if let Some((inlined, num_bytes, num_handles)) =
8390                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8391            {
8392                let member_inline_size =
8393                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8394                if inlined != (member_inline_size <= 4) {
8395                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8396                }
8397                let inner_offset;
8398                let mut inner_depth = depth.clone();
8399                if inlined {
8400                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8401                    inner_offset = next_offset;
8402                } else {
8403                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8404                    inner_depth.increment()?;
8405                }
8406                let val_ref = self.iso_interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
8407                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8408                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8409                {
8410                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8411                }
8412                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8413                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8414                }
8415            }
8416
8417            next_offset += envelope_size;
8418            _next_ordinal_to_read += 1;
8419            if next_offset >= end_offset {
8420                return Ok(());
8421            }
8422
8423            // Decode unknown envelopes for gaps in ordinals.
8424            while _next_ordinal_to_read < 5 {
8425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8426                _next_ordinal_to_read += 1;
8427                next_offset += envelope_size;
8428            }
8429
8430            let next_out_of_line = decoder.next_out_of_line();
8431            let handles_before = decoder.remaining_handles();
8432            if let Some((inlined, num_bytes, num_handles)) =
8433                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8434            {
8435                let member_inline_size =
8436                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8437                        decoder.context,
8438                    );
8439                if inlined != (member_inline_size <= 4) {
8440                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8441                }
8442                let inner_offset;
8443                let mut inner_depth = depth.clone();
8444                if inlined {
8445                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8446                    inner_offset = next_offset;
8447                } else {
8448                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8449                    inner_depth.increment()?;
8450                }
8451                let val_ref = self
8452                    .central_to_peripheral_params
8453                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8454                fidl::decode!(
8455                    CisUnidirectionalParams,
8456                    D,
8457                    val_ref,
8458                    decoder,
8459                    inner_offset,
8460                    inner_depth
8461                )?;
8462                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8463                {
8464                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8465                }
8466                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8467                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8468                }
8469            }
8470
8471            next_offset += envelope_size;
8472            _next_ordinal_to_read += 1;
8473            if next_offset >= end_offset {
8474                return Ok(());
8475            }
8476
8477            // Decode unknown envelopes for gaps in ordinals.
8478            while _next_ordinal_to_read < 6 {
8479                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8480                _next_ordinal_to_read += 1;
8481                next_offset += envelope_size;
8482            }
8483
8484            let next_out_of_line = decoder.next_out_of_line();
8485            let handles_before = decoder.remaining_handles();
8486            if let Some((inlined, num_bytes, num_handles)) =
8487                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8488            {
8489                let member_inline_size =
8490                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8491                        decoder.context,
8492                    );
8493                if inlined != (member_inline_size <= 4) {
8494                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8495                }
8496                let inner_offset;
8497                let mut inner_depth = depth.clone();
8498                if inlined {
8499                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8500                    inner_offset = next_offset;
8501                } else {
8502                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8503                    inner_depth.increment()?;
8504                }
8505                let val_ref = self
8506                    .peripheral_to_central_params
8507                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8508                fidl::decode!(
8509                    CisUnidirectionalParams,
8510                    D,
8511                    val_ref,
8512                    decoder,
8513                    inner_offset,
8514                    inner_depth
8515                )?;
8516                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8517                {
8518                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8519                }
8520                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8521                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8522                }
8523            }
8524
8525            next_offset += envelope_size;
8526
8527            // Decode the remaining unknown envelopes.
8528            while next_offset < end_offset {
8529                _next_ordinal_to_read += 1;
8530                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8531                next_offset += envelope_size;
8532            }
8533
8534            Ok(())
8535        }
8536    }
8537
8538    impl CisParameters {
8539        #[inline(always)]
8540        fn max_ordinal_present(&self) -> u64 {
8541            if let Some(_) = self.id {
8542                return 2;
8543            }
8544            if let Some(_) = self.cis_id {
8545                return 1;
8546            }
8547            0
8548        }
8549    }
8550
8551    impl fidl::encoding::ValueTypeMarker for CisParameters {
8552        type Borrowed<'a> = &'a Self;
8553        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8554            value
8555        }
8556    }
8557
8558    unsafe impl fidl::encoding::TypeMarker for CisParameters {
8559        type Owned = Self;
8560
8561        #[inline(always)]
8562        fn inline_align(_context: fidl::encoding::Context) -> usize {
8563            8
8564        }
8565
8566        #[inline(always)]
8567        fn inline_size(_context: fidl::encoding::Context) -> usize {
8568            16
8569        }
8570    }
8571
8572    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CisParameters, D>
8573        for &CisParameters
8574    {
8575        unsafe fn encode(
8576            self,
8577            encoder: &mut fidl::encoding::Encoder<'_, D>,
8578            offset: usize,
8579            mut depth: fidl::encoding::Depth,
8580        ) -> fidl::Result<()> {
8581            encoder.debug_check_bounds::<CisParameters>(offset);
8582            // Vector header
8583            let max_ordinal: u64 = self.max_ordinal_present();
8584            encoder.write_num(max_ordinal, offset);
8585            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8586            // Calling encoder.out_of_line_offset(0) is not allowed.
8587            if max_ordinal == 0 {
8588                return Ok(());
8589            }
8590            depth.increment()?;
8591            let envelope_size = 8;
8592            let bytes_len = max_ordinal as usize * envelope_size;
8593            #[allow(unused_variables)]
8594            let offset = encoder.out_of_line_offset(bytes_len);
8595            let mut _prev_end_offset: usize = 0;
8596            if 1 > max_ordinal {
8597                return Ok(());
8598            }
8599
8600            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8601            // are envelope_size bytes.
8602            let cur_offset: usize = (1 - 1) * envelope_size;
8603
8604            // Zero reserved fields.
8605            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8606
8607            // Safety:
8608            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8609            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8610            //   envelope_size bytes, there is always sufficient room.
8611            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8612                self.cis_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8613                encoder,
8614                offset + cur_offset,
8615                depth,
8616            )?;
8617
8618            _prev_end_offset = cur_offset + envelope_size;
8619            if 2 > max_ordinal {
8620                return Ok(());
8621            }
8622
8623            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8624            // are envelope_size bytes.
8625            let cur_offset: usize = (2 - 1) * envelope_size;
8626
8627            // Zero reserved fields.
8628            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8629
8630            // Safety:
8631            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8632            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8633            //   envelope_size bytes, there is always sufficient room.
8634            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
8635            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
8636            encoder, offset + cur_offset, depth
8637        )?;
8638
8639            _prev_end_offset = cur_offset + envelope_size;
8640
8641            Ok(())
8642        }
8643    }
8644
8645    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CisParameters {
8646        #[inline(always)]
8647        fn new_empty() -> Self {
8648            Self::default()
8649        }
8650
8651        unsafe fn decode(
8652            &mut self,
8653            decoder: &mut fidl::encoding::Decoder<'_, D>,
8654            offset: usize,
8655            mut depth: fidl::encoding::Depth,
8656        ) -> fidl::Result<()> {
8657            decoder.debug_check_bounds::<Self>(offset);
8658            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8659                None => return Err(fidl::Error::NotNullable),
8660                Some(len) => len,
8661            };
8662            // Calling decoder.out_of_line_offset(0) is not allowed.
8663            if len == 0 {
8664                return Ok(());
8665            };
8666            depth.increment()?;
8667            let envelope_size = 8;
8668            let bytes_len = len * envelope_size;
8669            let offset = decoder.out_of_line_offset(bytes_len)?;
8670            // Decode the envelope for each type.
8671            let mut _next_ordinal_to_read = 0;
8672            let mut next_offset = offset;
8673            let end_offset = offset + bytes_len;
8674            _next_ordinal_to_read += 1;
8675            if next_offset >= end_offset {
8676                return Ok(());
8677            }
8678
8679            // Decode unknown envelopes for gaps in ordinals.
8680            while _next_ordinal_to_read < 1 {
8681                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8682                _next_ordinal_to_read += 1;
8683                next_offset += envelope_size;
8684            }
8685
8686            let next_out_of_line = decoder.next_out_of_line();
8687            let handles_before = decoder.remaining_handles();
8688            if let Some((inlined, num_bytes, num_handles)) =
8689                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8690            {
8691                let member_inline_size =
8692                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8693                if inlined != (member_inline_size <= 4) {
8694                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8695                }
8696                let inner_offset;
8697                let mut inner_depth = depth.clone();
8698                if inlined {
8699                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8700                    inner_offset = next_offset;
8701                } else {
8702                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8703                    inner_depth.increment()?;
8704                }
8705                let val_ref = self.cis_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
8706                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8707                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8708                {
8709                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8710                }
8711                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8712                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8713                }
8714            }
8715
8716            next_offset += envelope_size;
8717            _next_ordinal_to_read += 1;
8718            if next_offset >= end_offset {
8719                return Ok(());
8720            }
8721
8722            // Decode unknown envelopes for gaps in ordinals.
8723            while _next_ordinal_to_read < 2 {
8724                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8725                _next_ordinal_to_read += 1;
8726                next_offset += envelope_size;
8727            }
8728
8729            let next_out_of_line = decoder.next_out_of_line();
8730            let handles_before = decoder.remaining_handles();
8731            if let Some((inlined, num_bytes, num_handles)) =
8732                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8733            {
8734                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8735                if inlined != (member_inline_size <= 4) {
8736                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8737                }
8738                let inner_offset;
8739                let mut inner_depth = depth.clone();
8740                if inlined {
8741                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8742                    inner_offset = next_offset;
8743                } else {
8744                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8745                    inner_depth.increment()?;
8746                }
8747                let val_ref = self.id.get_or_insert_with(|| {
8748                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
8749                });
8750                fidl::decode!(
8751                    fidl_fuchsia_bluetooth__common::PeerId,
8752                    D,
8753                    val_ref,
8754                    decoder,
8755                    inner_offset,
8756                    inner_depth
8757                )?;
8758                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8759                {
8760                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8761                }
8762                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8763                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8764                }
8765            }
8766
8767            next_offset += envelope_size;
8768
8769            // Decode the remaining unknown envelopes.
8770            while next_offset < end_offset {
8771                _next_ordinal_to_read += 1;
8772                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8773                next_offset += envelope_size;
8774            }
8775
8776            Ok(())
8777        }
8778    }
8779
8780    impl CisUnidirectionalParams {
8781        #[inline(always)]
8782        fn max_ordinal_present(&self) -> u64 {
8783            if let Some(_) = self.flush_timeout {
8784                return 3;
8785            }
8786            if let Some(_) = self.burst_number {
8787                return 2;
8788            }
8789            if let Some(_) = self.transport_latency {
8790                return 1;
8791            }
8792            0
8793        }
8794    }
8795
8796    impl fidl::encoding::ValueTypeMarker for CisUnidirectionalParams {
8797        type Borrowed<'a> = &'a Self;
8798        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8799            value
8800        }
8801    }
8802
8803    unsafe impl fidl::encoding::TypeMarker for CisUnidirectionalParams {
8804        type Owned = Self;
8805
8806        #[inline(always)]
8807        fn inline_align(_context: fidl::encoding::Context) -> usize {
8808            8
8809        }
8810
8811        #[inline(always)]
8812        fn inline_size(_context: fidl::encoding::Context) -> usize {
8813            16
8814        }
8815    }
8816
8817    unsafe impl<D: fidl::encoding::ResourceDialect>
8818        fidl::encoding::Encode<CisUnidirectionalParams, D> for &CisUnidirectionalParams
8819    {
8820        unsafe fn encode(
8821            self,
8822            encoder: &mut fidl::encoding::Encoder<'_, D>,
8823            offset: usize,
8824            mut depth: fidl::encoding::Depth,
8825        ) -> fidl::Result<()> {
8826            encoder.debug_check_bounds::<CisUnidirectionalParams>(offset);
8827            // Vector header
8828            let max_ordinal: u64 = self.max_ordinal_present();
8829            encoder.write_num(max_ordinal, offset);
8830            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8831            // Calling encoder.out_of_line_offset(0) is not allowed.
8832            if max_ordinal == 0 {
8833                return Ok(());
8834            }
8835            depth.increment()?;
8836            let envelope_size = 8;
8837            let bytes_len = max_ordinal as usize * envelope_size;
8838            #[allow(unused_variables)]
8839            let offset = encoder.out_of_line_offset(bytes_len);
8840            let mut _prev_end_offset: usize = 0;
8841            if 1 > max_ordinal {
8842                return Ok(());
8843            }
8844
8845            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8846            // are envelope_size bytes.
8847            let cur_offset: usize = (1 - 1) * envelope_size;
8848
8849            // Zero reserved fields.
8850            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8851
8852            // Safety:
8853            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8854            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8855            //   envelope_size bytes, there is always sufficient room.
8856            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8857                self.transport_latency
8858                    .as_ref()
8859                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8860                encoder,
8861                offset + cur_offset,
8862                depth,
8863            )?;
8864
8865            _prev_end_offset = cur_offset + envelope_size;
8866            if 2 > max_ordinal {
8867                return Ok(());
8868            }
8869
8870            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8871            // are envelope_size bytes.
8872            let cur_offset: usize = (2 - 1) * envelope_size;
8873
8874            // Zero reserved fields.
8875            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8876
8877            // Safety:
8878            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8879            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8880            //   envelope_size bytes, there is always sufficient room.
8881            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8882                self.burst_number.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8883                encoder,
8884                offset + cur_offset,
8885                depth,
8886            )?;
8887
8888            _prev_end_offset = cur_offset + envelope_size;
8889            if 3 > max_ordinal {
8890                return Ok(());
8891            }
8892
8893            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8894            // are envelope_size bytes.
8895            let cur_offset: usize = (3 - 1) * envelope_size;
8896
8897            // Zero reserved fields.
8898            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8899
8900            // Safety:
8901            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8902            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8903            //   envelope_size bytes, there is always sufficient room.
8904            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8905                self.flush_timeout.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8906                encoder,
8907                offset + cur_offset,
8908                depth,
8909            )?;
8910
8911            _prev_end_offset = cur_offset + envelope_size;
8912
8913            Ok(())
8914        }
8915    }
8916
8917    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8918        for CisUnidirectionalParams
8919    {
8920        #[inline(always)]
8921        fn new_empty() -> Self {
8922            Self::default()
8923        }
8924
8925        unsafe fn decode(
8926            &mut self,
8927            decoder: &mut fidl::encoding::Decoder<'_, D>,
8928            offset: usize,
8929            mut depth: fidl::encoding::Depth,
8930        ) -> fidl::Result<()> {
8931            decoder.debug_check_bounds::<Self>(offset);
8932            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8933                None => return Err(fidl::Error::NotNullable),
8934                Some(len) => len,
8935            };
8936            // Calling decoder.out_of_line_offset(0) is not allowed.
8937            if len == 0 {
8938                return Ok(());
8939            };
8940            depth.increment()?;
8941            let envelope_size = 8;
8942            let bytes_len = len * envelope_size;
8943            let offset = decoder.out_of_line_offset(bytes_len)?;
8944            // Decode the envelope for each type.
8945            let mut _next_ordinal_to_read = 0;
8946            let mut next_offset = offset;
8947            let end_offset = offset + bytes_len;
8948            _next_ordinal_to_read += 1;
8949            if next_offset >= end_offset {
8950                return Ok(());
8951            }
8952
8953            // Decode unknown envelopes for gaps in ordinals.
8954            while _next_ordinal_to_read < 1 {
8955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8956                _next_ordinal_to_read += 1;
8957                next_offset += envelope_size;
8958            }
8959
8960            let next_out_of_line = decoder.next_out_of_line();
8961            let handles_before = decoder.remaining_handles();
8962            if let Some((inlined, num_bytes, num_handles)) =
8963                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8964            {
8965                let member_inline_size =
8966                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8967                if inlined != (member_inline_size <= 4) {
8968                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8969                }
8970                let inner_offset;
8971                let mut inner_depth = depth.clone();
8972                if inlined {
8973                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8974                    inner_offset = next_offset;
8975                } else {
8976                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8977                    inner_depth.increment()?;
8978                }
8979                let val_ref =
8980                    self.transport_latency.get_or_insert_with(|| fidl::new_empty!(i64, D));
8981                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8982                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8983                {
8984                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8985                }
8986                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8987                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8988                }
8989            }
8990
8991            next_offset += envelope_size;
8992            _next_ordinal_to_read += 1;
8993            if next_offset >= end_offset {
8994                return Ok(());
8995            }
8996
8997            // Decode unknown envelopes for gaps in ordinals.
8998            while _next_ordinal_to_read < 2 {
8999                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9000                _next_ordinal_to_read += 1;
9001                next_offset += envelope_size;
9002            }
9003
9004            let next_out_of_line = decoder.next_out_of_line();
9005            let handles_before = decoder.remaining_handles();
9006            if let Some((inlined, num_bytes, num_handles)) =
9007                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9008            {
9009                let member_inline_size =
9010                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9011                if inlined != (member_inline_size <= 4) {
9012                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9013                }
9014                let inner_offset;
9015                let mut inner_depth = depth.clone();
9016                if inlined {
9017                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9018                    inner_offset = next_offset;
9019                } else {
9020                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9021                    inner_depth.increment()?;
9022                }
9023                let val_ref = self.burst_number.get_or_insert_with(|| fidl::new_empty!(u8, D));
9024                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9025                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9026                {
9027                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9028                }
9029                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9030                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9031                }
9032            }
9033
9034            next_offset += envelope_size;
9035            _next_ordinal_to_read += 1;
9036            if next_offset >= end_offset {
9037                return Ok(());
9038            }
9039
9040            // Decode unknown envelopes for gaps in ordinals.
9041            while _next_ordinal_to_read < 3 {
9042                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9043                _next_ordinal_to_read += 1;
9044                next_offset += envelope_size;
9045            }
9046
9047            let next_out_of_line = decoder.next_out_of_line();
9048            let handles_before = decoder.remaining_handles();
9049            if let Some((inlined, num_bytes, num_handles)) =
9050                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9051            {
9052                let member_inline_size =
9053                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9054                if inlined != (member_inline_size <= 4) {
9055                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9056                }
9057                let inner_offset;
9058                let mut inner_depth = depth.clone();
9059                if inlined {
9060                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9061                    inner_offset = next_offset;
9062                } else {
9063                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9064                    inner_depth.increment()?;
9065                }
9066                let val_ref = self.flush_timeout.get_or_insert_with(|| fidl::new_empty!(u8, D));
9067                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9068                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9069                {
9070                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9071                }
9072                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9073                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9074                }
9075            }
9076
9077            next_offset += envelope_size;
9078
9079            // Decode the remaining unknown envelopes.
9080            while next_offset < end_offset {
9081                _next_ordinal_to_read += 1;
9082                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9083                next_offset += envelope_size;
9084            }
9085
9086            Ok(())
9087        }
9088    }
9089
9090    impl CodecDelayGetCodecLocalDelayRangeRequest {
9091        #[inline(always)]
9092        fn max_ordinal_present(&self) -> u64 {
9093            if let Some(_) = self.codec_attributes {
9094                return 3;
9095            }
9096            if let Some(_) = self.data_direction {
9097                return 2;
9098            }
9099            if let Some(_) = self.logical_transport_type {
9100                return 1;
9101            }
9102            0
9103        }
9104    }
9105
9106    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9107        type Borrowed<'a> = &'a Self;
9108        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9109            value
9110        }
9111    }
9112
9113    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9114        type Owned = Self;
9115
9116        #[inline(always)]
9117        fn inline_align(_context: fidl::encoding::Context) -> usize {
9118            8
9119        }
9120
9121        #[inline(always)]
9122        fn inline_size(_context: fidl::encoding::Context) -> usize {
9123            16
9124        }
9125    }
9126
9127    unsafe impl<D: fidl::encoding::ResourceDialect>
9128        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeRequest, D>
9129        for &CodecDelayGetCodecLocalDelayRangeRequest
9130    {
9131        unsafe fn encode(
9132            self,
9133            encoder: &mut fidl::encoding::Encoder<'_, D>,
9134            offset: usize,
9135            mut depth: fidl::encoding::Depth,
9136        ) -> fidl::Result<()> {
9137            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeRequest>(offset);
9138            // Vector header
9139            let max_ordinal: u64 = self.max_ordinal_present();
9140            encoder.write_num(max_ordinal, offset);
9141            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9142            // Calling encoder.out_of_line_offset(0) is not allowed.
9143            if max_ordinal == 0 {
9144                return Ok(());
9145            }
9146            depth.increment()?;
9147            let envelope_size = 8;
9148            let bytes_len = max_ordinal as usize * envelope_size;
9149            #[allow(unused_variables)]
9150            let offset = encoder.out_of_line_offset(bytes_len);
9151            let mut _prev_end_offset: usize = 0;
9152            if 1 > max_ordinal {
9153                return Ok(());
9154            }
9155
9156            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9157            // are envelope_size bytes.
9158            let cur_offset: usize = (1 - 1) * envelope_size;
9159
9160            // Zero reserved fields.
9161            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9162
9163            // Safety:
9164            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9165            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9166            //   envelope_size bytes, there is always sufficient room.
9167            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::LogicalTransportType, D>(
9168            self.logical_transport_type.as_ref().map(<fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::ValueTypeMarker>::borrow),
9169            encoder, offset + cur_offset, depth
9170        )?;
9171
9172            _prev_end_offset = cur_offset + envelope_size;
9173            if 2 > max_ordinal {
9174                return Ok(());
9175            }
9176
9177            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9178            // are envelope_size bytes.
9179            let cur_offset: usize = (2 - 1) * envelope_size;
9180
9181            // Zero reserved fields.
9182            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9183
9184            // Safety:
9185            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9186            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9187            //   envelope_size bytes, there is always sufficient room.
9188            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
9189            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
9190            encoder, offset + cur_offset, depth
9191        )?;
9192
9193            _prev_end_offset = cur_offset + envelope_size;
9194            if 3 > max_ordinal {
9195                return Ok(());
9196            }
9197
9198            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9199            // are envelope_size bytes.
9200            let cur_offset: usize = (3 - 1) * envelope_size;
9201
9202            // Zero reserved fields.
9203            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9204
9205            // Safety:
9206            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9207            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9208            //   envelope_size bytes, there is always sufficient room.
9209            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
9210            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
9211            encoder, offset + cur_offset, depth
9212        )?;
9213
9214            _prev_end_offset = cur_offset + envelope_size;
9215
9216            Ok(())
9217        }
9218    }
9219
9220    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9221        for CodecDelayGetCodecLocalDelayRangeRequest
9222    {
9223        #[inline(always)]
9224        fn new_empty() -> Self {
9225            Self::default()
9226        }
9227
9228        unsafe fn decode(
9229            &mut self,
9230            decoder: &mut fidl::encoding::Decoder<'_, D>,
9231            offset: usize,
9232            mut depth: fidl::encoding::Depth,
9233        ) -> fidl::Result<()> {
9234            decoder.debug_check_bounds::<Self>(offset);
9235            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9236                None => return Err(fidl::Error::NotNullable),
9237                Some(len) => len,
9238            };
9239            // Calling decoder.out_of_line_offset(0) is not allowed.
9240            if len == 0 {
9241                return Ok(());
9242            };
9243            depth.increment()?;
9244            let envelope_size = 8;
9245            let bytes_len = len * envelope_size;
9246            let offset = decoder.out_of_line_offset(bytes_len)?;
9247            // Decode the envelope for each type.
9248            let mut _next_ordinal_to_read = 0;
9249            let mut next_offset = offset;
9250            let end_offset = offset + bytes_len;
9251            _next_ordinal_to_read += 1;
9252            if next_offset >= end_offset {
9253                return Ok(());
9254            }
9255
9256            // Decode unknown envelopes for gaps in ordinals.
9257            while _next_ordinal_to_read < 1 {
9258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9259                _next_ordinal_to_read += 1;
9260                next_offset += envelope_size;
9261            }
9262
9263            let next_out_of_line = decoder.next_out_of_line();
9264            let handles_before = decoder.remaining_handles();
9265            if let Some((inlined, num_bytes, num_handles)) =
9266                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9267            {
9268                let member_inline_size = <fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9269                if inlined != (member_inline_size <= 4) {
9270                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9271                }
9272                let inner_offset;
9273                let mut inner_depth = depth.clone();
9274                if inlined {
9275                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9276                    inner_offset = next_offset;
9277                } else {
9278                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9279                    inner_depth.increment()?;
9280                }
9281                let val_ref = self.logical_transport_type.get_or_insert_with(|| {
9282                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::LogicalTransportType, D)
9283                });
9284                fidl::decode!(
9285                    fidl_fuchsia_bluetooth__common::LogicalTransportType,
9286                    D,
9287                    val_ref,
9288                    decoder,
9289                    inner_offset,
9290                    inner_depth
9291                )?;
9292                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9293                {
9294                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9295                }
9296                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9297                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9298                }
9299            }
9300
9301            next_offset += envelope_size;
9302            _next_ordinal_to_read += 1;
9303            if next_offset >= end_offset {
9304                return Ok(());
9305            }
9306
9307            // Decode unknown envelopes for gaps in ordinals.
9308            while _next_ordinal_to_read < 2 {
9309                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9310                _next_ordinal_to_read += 1;
9311                next_offset += envelope_size;
9312            }
9313
9314            let next_out_of_line = decoder.next_out_of_line();
9315            let handles_before = decoder.remaining_handles();
9316            if let Some((inlined, num_bytes, num_handles)) =
9317                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9318            {
9319                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9320                if inlined != (member_inline_size <= 4) {
9321                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9322                }
9323                let inner_offset;
9324                let mut inner_depth = depth.clone();
9325                if inlined {
9326                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9327                    inner_offset = next_offset;
9328                } else {
9329                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9330                    inner_depth.increment()?;
9331                }
9332                let val_ref = self.data_direction.get_or_insert_with(|| {
9333                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
9334                });
9335                fidl::decode!(
9336                    fidl_fuchsia_bluetooth__common::DataDirection,
9337                    D,
9338                    val_ref,
9339                    decoder,
9340                    inner_offset,
9341                    inner_depth
9342                )?;
9343                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9344                {
9345                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9346                }
9347                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9348                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9349                }
9350            }
9351
9352            next_offset += envelope_size;
9353            _next_ordinal_to_read += 1;
9354            if next_offset >= end_offset {
9355                return Ok(());
9356            }
9357
9358            // Decode unknown envelopes for gaps in ordinals.
9359            while _next_ordinal_to_read < 3 {
9360                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9361                _next_ordinal_to_read += 1;
9362                next_offset += envelope_size;
9363            }
9364
9365            let next_out_of_line = decoder.next_out_of_line();
9366            let handles_before = decoder.remaining_handles();
9367            if let Some((inlined, num_bytes, num_handles)) =
9368                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9369            {
9370                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9371                if inlined != (member_inline_size <= 4) {
9372                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9373                }
9374                let inner_offset;
9375                let mut inner_depth = depth.clone();
9376                if inlined {
9377                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9378                    inner_offset = next_offset;
9379                } else {
9380                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9381                    inner_depth.increment()?;
9382                }
9383                let val_ref = self.codec_attributes.get_or_insert_with(|| {
9384                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
9385                });
9386                fidl::decode!(
9387                    fidl_fuchsia_bluetooth__common::CodecAttributes,
9388                    D,
9389                    val_ref,
9390                    decoder,
9391                    inner_offset,
9392                    inner_depth
9393                )?;
9394                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9395                {
9396                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9397                }
9398                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9399                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9400                }
9401            }
9402
9403            next_offset += envelope_size;
9404
9405            // Decode the remaining unknown envelopes.
9406            while next_offset < end_offset {
9407                _next_ordinal_to_read += 1;
9408                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9409                next_offset += envelope_size;
9410            }
9411
9412            Ok(())
9413        }
9414    }
9415
9416    impl CodecDelayGetCodecLocalDelayRangeResponse {
9417        #[inline(always)]
9418        fn max_ordinal_present(&self) -> u64 {
9419            if let Some(_) = self.max_controller_delay {
9420                return 2;
9421            }
9422            if let Some(_) = self.min_controller_delay {
9423                return 1;
9424            }
9425            0
9426        }
9427    }
9428
9429    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9430        type Borrowed<'a> = &'a Self;
9431        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9432            value
9433        }
9434    }
9435
9436    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9437        type Owned = Self;
9438
9439        #[inline(always)]
9440        fn inline_align(_context: fidl::encoding::Context) -> usize {
9441            8
9442        }
9443
9444        #[inline(always)]
9445        fn inline_size(_context: fidl::encoding::Context) -> usize {
9446            16
9447        }
9448    }
9449
9450    unsafe impl<D: fidl::encoding::ResourceDialect>
9451        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeResponse, D>
9452        for &CodecDelayGetCodecLocalDelayRangeResponse
9453    {
9454        unsafe fn encode(
9455            self,
9456            encoder: &mut fidl::encoding::Encoder<'_, D>,
9457            offset: usize,
9458            mut depth: fidl::encoding::Depth,
9459        ) -> fidl::Result<()> {
9460            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeResponse>(offset);
9461            // Vector header
9462            let max_ordinal: u64 = self.max_ordinal_present();
9463            encoder.write_num(max_ordinal, offset);
9464            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9465            // Calling encoder.out_of_line_offset(0) is not allowed.
9466            if max_ordinal == 0 {
9467                return Ok(());
9468            }
9469            depth.increment()?;
9470            let envelope_size = 8;
9471            let bytes_len = max_ordinal as usize * envelope_size;
9472            #[allow(unused_variables)]
9473            let offset = encoder.out_of_line_offset(bytes_len);
9474            let mut _prev_end_offset: usize = 0;
9475            if 1 > max_ordinal {
9476                return Ok(());
9477            }
9478
9479            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9480            // are envelope_size bytes.
9481            let cur_offset: usize = (1 - 1) * envelope_size;
9482
9483            // Zero reserved fields.
9484            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9485
9486            // Safety:
9487            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9488            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9489            //   envelope_size bytes, there is always sufficient room.
9490            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9491                self.min_controller_delay
9492                    .as_ref()
9493                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9494                encoder,
9495                offset + cur_offset,
9496                depth,
9497            )?;
9498
9499            _prev_end_offset = cur_offset + envelope_size;
9500            if 2 > max_ordinal {
9501                return Ok(());
9502            }
9503
9504            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9505            // are envelope_size bytes.
9506            let cur_offset: usize = (2 - 1) * envelope_size;
9507
9508            // Zero reserved fields.
9509            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9510
9511            // Safety:
9512            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9513            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9514            //   envelope_size bytes, there is always sufficient room.
9515            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9516                self.max_controller_delay
9517                    .as_ref()
9518                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9519                encoder,
9520                offset + cur_offset,
9521                depth,
9522            )?;
9523
9524            _prev_end_offset = cur_offset + envelope_size;
9525
9526            Ok(())
9527        }
9528    }
9529
9530    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9531        for CodecDelayGetCodecLocalDelayRangeResponse
9532    {
9533        #[inline(always)]
9534        fn new_empty() -> Self {
9535            Self::default()
9536        }
9537
9538        unsafe fn decode(
9539            &mut self,
9540            decoder: &mut fidl::encoding::Decoder<'_, D>,
9541            offset: usize,
9542            mut depth: fidl::encoding::Depth,
9543        ) -> fidl::Result<()> {
9544            decoder.debug_check_bounds::<Self>(offset);
9545            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9546                None => return Err(fidl::Error::NotNullable),
9547                Some(len) => len,
9548            };
9549            // Calling decoder.out_of_line_offset(0) is not allowed.
9550            if len == 0 {
9551                return Ok(());
9552            };
9553            depth.increment()?;
9554            let envelope_size = 8;
9555            let bytes_len = len * envelope_size;
9556            let offset = decoder.out_of_line_offset(bytes_len)?;
9557            // Decode the envelope for each type.
9558            let mut _next_ordinal_to_read = 0;
9559            let mut next_offset = offset;
9560            let end_offset = offset + bytes_len;
9561            _next_ordinal_to_read += 1;
9562            if next_offset >= end_offset {
9563                return Ok(());
9564            }
9565
9566            // Decode unknown envelopes for gaps in ordinals.
9567            while _next_ordinal_to_read < 1 {
9568                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9569                _next_ordinal_to_read += 1;
9570                next_offset += envelope_size;
9571            }
9572
9573            let next_out_of_line = decoder.next_out_of_line();
9574            let handles_before = decoder.remaining_handles();
9575            if let Some((inlined, num_bytes, num_handles)) =
9576                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9577            {
9578                let member_inline_size =
9579                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9580                if inlined != (member_inline_size <= 4) {
9581                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9582                }
9583                let inner_offset;
9584                let mut inner_depth = depth.clone();
9585                if inlined {
9586                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9587                    inner_offset = next_offset;
9588                } else {
9589                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9590                    inner_depth.increment()?;
9591                }
9592                let val_ref =
9593                    self.min_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9594                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9595                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9596                {
9597                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9598                }
9599                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9600                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9601                }
9602            }
9603
9604            next_offset += envelope_size;
9605            _next_ordinal_to_read += 1;
9606            if next_offset >= end_offset {
9607                return Ok(());
9608            }
9609
9610            // Decode unknown envelopes for gaps in ordinals.
9611            while _next_ordinal_to_read < 2 {
9612                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9613                _next_ordinal_to_read += 1;
9614                next_offset += envelope_size;
9615            }
9616
9617            let next_out_of_line = decoder.next_out_of_line();
9618            let handles_before = decoder.remaining_handles();
9619            if let Some((inlined, num_bytes, num_handles)) =
9620                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9621            {
9622                let member_inline_size =
9623                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9624                if inlined != (member_inline_size <= 4) {
9625                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9626                }
9627                let inner_offset;
9628                let mut inner_depth = depth.clone();
9629                if inlined {
9630                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9631                    inner_offset = next_offset;
9632                } else {
9633                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9634                    inner_depth.increment()?;
9635                }
9636                let val_ref =
9637                    self.max_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9638                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9639                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9640                {
9641                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9642                }
9643                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9644                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9645                }
9646            }
9647
9648            next_offset += envelope_size;
9649
9650            // Decode the remaining unknown envelopes.
9651            while next_offset < end_offset {
9652                _next_ordinal_to_read += 1;
9653                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9654                next_offset += envelope_size;
9655            }
9656
9657            Ok(())
9658        }
9659    }
9660
9661    impl ConnectedIsochronousGroupEstablishStreamsRequest {
9662        #[inline(always)]
9663        fn max_ordinal_present(&self) -> u64 {
9664            if let Some(_) = self.cis_params {
9665                return 1;
9666            }
9667            0
9668        }
9669    }
9670
9671    impl fidl::encoding::ValueTypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
9672        type Borrowed<'a> = &'a Self;
9673        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9674            value
9675        }
9676    }
9677
9678    unsafe impl fidl::encoding::TypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
9679        type Owned = Self;
9680
9681        #[inline(always)]
9682        fn inline_align(_context: fidl::encoding::Context) -> usize {
9683            8
9684        }
9685
9686        #[inline(always)]
9687        fn inline_size(_context: fidl::encoding::Context) -> usize {
9688            16
9689        }
9690    }
9691
9692    unsafe impl<D: fidl::encoding::ResourceDialect>
9693        fidl::encoding::Encode<ConnectedIsochronousGroupEstablishStreamsRequest, D>
9694        for &ConnectedIsochronousGroupEstablishStreamsRequest
9695    {
9696        unsafe fn encode(
9697            self,
9698            encoder: &mut fidl::encoding::Encoder<'_, D>,
9699            offset: usize,
9700            mut depth: fidl::encoding::Depth,
9701        ) -> fidl::Result<()> {
9702            encoder.debug_check_bounds::<ConnectedIsochronousGroupEstablishStreamsRequest>(offset);
9703            // Vector header
9704            let max_ordinal: u64 = self.max_ordinal_present();
9705            encoder.write_num(max_ordinal, offset);
9706            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9707            // Calling encoder.out_of_line_offset(0) is not allowed.
9708            if max_ordinal == 0 {
9709                return Ok(());
9710            }
9711            depth.increment()?;
9712            let envelope_size = 8;
9713            let bytes_len = max_ordinal as usize * envelope_size;
9714            #[allow(unused_variables)]
9715            let offset = encoder.out_of_line_offset(bytes_len);
9716            let mut _prev_end_offset: usize = 0;
9717            if 1 > max_ordinal {
9718                return Ok(());
9719            }
9720
9721            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9722            // are envelope_size bytes.
9723            let cur_offset: usize = (1 - 1) * envelope_size;
9724
9725            // Zero reserved fields.
9726            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9727
9728            // Safety:
9729            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9730            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9731            //   envelope_size bytes, there is always sufficient room.
9732            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CisParameters, 31>, D>(
9733            self.cis_params.as_ref().map(<fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::ValueTypeMarker>::borrow),
9734            encoder, offset + cur_offset, depth
9735        )?;
9736
9737            _prev_end_offset = cur_offset + envelope_size;
9738
9739            Ok(())
9740        }
9741    }
9742
9743    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9744        for ConnectedIsochronousGroupEstablishStreamsRequest
9745    {
9746        #[inline(always)]
9747        fn new_empty() -> Self {
9748            Self::default()
9749        }
9750
9751        unsafe fn decode(
9752            &mut self,
9753            decoder: &mut fidl::encoding::Decoder<'_, D>,
9754            offset: usize,
9755            mut depth: fidl::encoding::Depth,
9756        ) -> fidl::Result<()> {
9757            decoder.debug_check_bounds::<Self>(offset);
9758            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9759                None => return Err(fidl::Error::NotNullable),
9760                Some(len) => len,
9761            };
9762            // Calling decoder.out_of_line_offset(0) is not allowed.
9763            if len == 0 {
9764                return Ok(());
9765            };
9766            depth.increment()?;
9767            let envelope_size = 8;
9768            let bytes_len = len * envelope_size;
9769            let offset = decoder.out_of_line_offset(bytes_len)?;
9770            // Decode the envelope for each type.
9771            let mut _next_ordinal_to_read = 0;
9772            let mut next_offset = offset;
9773            let end_offset = offset + bytes_len;
9774            _next_ordinal_to_read += 1;
9775            if next_offset >= end_offset {
9776                return Ok(());
9777            }
9778
9779            // Decode unknown envelopes for gaps in ordinals.
9780            while _next_ordinal_to_read < 1 {
9781                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9782                _next_ordinal_to_read += 1;
9783                next_offset += envelope_size;
9784            }
9785
9786            let next_out_of_line = decoder.next_out_of_line();
9787            let handles_before = decoder.remaining_handles();
9788            if let Some((inlined, num_bytes, num_handles)) =
9789                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9790            {
9791                let member_inline_size = <fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9792                if inlined != (member_inline_size <= 4) {
9793                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9794                }
9795                let inner_offset;
9796                let mut inner_depth = depth.clone();
9797                if inlined {
9798                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9799                    inner_offset = next_offset;
9800                } else {
9801                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9802                    inner_depth.increment()?;
9803                }
9804                let val_ref = self.cis_params.get_or_insert_with(
9805                    || fidl::new_empty!(fidl::encoding::Vector<CisParameters, 31>, D),
9806                );
9807                fidl::decode!(fidl::encoding::Vector<CisParameters, 31>, D, val_ref, decoder, inner_offset, inner_depth)?;
9808                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9809                {
9810                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9811                }
9812                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9813                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9814                }
9815            }
9816
9817            next_offset += envelope_size;
9818
9819            // Decode the remaining unknown envelopes.
9820            while next_offset < end_offset {
9821                _next_ordinal_to_read += 1;
9822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9823                next_offset += envelope_size;
9824            }
9825
9826            Ok(())
9827        }
9828    }
9829
9830    impl ConnectionOptions {
9831        #[inline(always)]
9832        fn max_ordinal_present(&self) -> u64 {
9833            if let Some(_) = self.service_filter {
9834                return 2;
9835            }
9836            if let Some(_) = self.bondable_mode {
9837                return 1;
9838            }
9839            0
9840        }
9841    }
9842
9843    impl fidl::encoding::ValueTypeMarker for ConnectionOptions {
9844        type Borrowed<'a> = &'a Self;
9845        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9846            value
9847        }
9848    }
9849
9850    unsafe impl fidl::encoding::TypeMarker for ConnectionOptions {
9851        type Owned = Self;
9852
9853        #[inline(always)]
9854        fn inline_align(_context: fidl::encoding::Context) -> usize {
9855            8
9856        }
9857
9858        #[inline(always)]
9859        fn inline_size(_context: fidl::encoding::Context) -> usize {
9860            16
9861        }
9862    }
9863
9864    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionOptions, D>
9865        for &ConnectionOptions
9866    {
9867        unsafe fn encode(
9868            self,
9869            encoder: &mut fidl::encoding::Encoder<'_, D>,
9870            offset: usize,
9871            mut depth: fidl::encoding::Depth,
9872        ) -> fidl::Result<()> {
9873            encoder.debug_check_bounds::<ConnectionOptions>(offset);
9874            // Vector header
9875            let max_ordinal: u64 = self.max_ordinal_present();
9876            encoder.write_num(max_ordinal, offset);
9877            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9878            // Calling encoder.out_of_line_offset(0) is not allowed.
9879            if max_ordinal == 0 {
9880                return Ok(());
9881            }
9882            depth.increment()?;
9883            let envelope_size = 8;
9884            let bytes_len = max_ordinal as usize * envelope_size;
9885            #[allow(unused_variables)]
9886            let offset = encoder.out_of_line_offset(bytes_len);
9887            let mut _prev_end_offset: usize = 0;
9888            if 1 > max_ordinal {
9889                return Ok(());
9890            }
9891
9892            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9893            // are envelope_size bytes.
9894            let cur_offset: usize = (1 - 1) * envelope_size;
9895
9896            // Zero reserved fields.
9897            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9898
9899            // Safety:
9900            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9901            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9902            //   envelope_size bytes, there is always sufficient room.
9903            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9904                self.bondable_mode.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9905                encoder,
9906                offset + cur_offset,
9907                depth,
9908            )?;
9909
9910            _prev_end_offset = cur_offset + envelope_size;
9911            if 2 > max_ordinal {
9912                return Ok(());
9913            }
9914
9915            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9916            // are envelope_size bytes.
9917            let cur_offset: usize = (2 - 1) * envelope_size;
9918
9919            // Zero reserved fields.
9920            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9921
9922            // Safety:
9923            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9924            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9925            //   envelope_size bytes, there is always sufficient room.
9926            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
9927            self.service_filter.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
9928            encoder, offset + cur_offset, depth
9929        )?;
9930
9931            _prev_end_offset = cur_offset + envelope_size;
9932
9933            Ok(())
9934        }
9935    }
9936
9937    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionOptions {
9938        #[inline(always)]
9939        fn new_empty() -> Self {
9940            Self::default()
9941        }
9942
9943        unsafe fn decode(
9944            &mut self,
9945            decoder: &mut fidl::encoding::Decoder<'_, D>,
9946            offset: usize,
9947            mut depth: fidl::encoding::Depth,
9948        ) -> fidl::Result<()> {
9949            decoder.debug_check_bounds::<Self>(offset);
9950            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9951                None => return Err(fidl::Error::NotNullable),
9952                Some(len) => len,
9953            };
9954            // Calling decoder.out_of_line_offset(0) is not allowed.
9955            if len == 0 {
9956                return Ok(());
9957            };
9958            depth.increment()?;
9959            let envelope_size = 8;
9960            let bytes_len = len * envelope_size;
9961            let offset = decoder.out_of_line_offset(bytes_len)?;
9962            // Decode the envelope for each type.
9963            let mut _next_ordinal_to_read = 0;
9964            let mut next_offset = offset;
9965            let end_offset = offset + bytes_len;
9966            _next_ordinal_to_read += 1;
9967            if next_offset >= end_offset {
9968                return Ok(());
9969            }
9970
9971            // Decode unknown envelopes for gaps in ordinals.
9972            while _next_ordinal_to_read < 1 {
9973                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9974                _next_ordinal_to_read += 1;
9975                next_offset += envelope_size;
9976            }
9977
9978            let next_out_of_line = decoder.next_out_of_line();
9979            let handles_before = decoder.remaining_handles();
9980            if let Some((inlined, num_bytes, num_handles)) =
9981                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9982            {
9983                let member_inline_size =
9984                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9985                if inlined != (member_inline_size <= 4) {
9986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9987                }
9988                let inner_offset;
9989                let mut inner_depth = depth.clone();
9990                if inlined {
9991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9992                    inner_offset = next_offset;
9993                } else {
9994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9995                    inner_depth.increment()?;
9996                }
9997                let val_ref = self.bondable_mode.get_or_insert_with(|| fidl::new_empty!(bool, D));
9998                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
9999                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10000                {
10001                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10002                }
10003                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10004                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10005                }
10006            }
10007
10008            next_offset += envelope_size;
10009            _next_ordinal_to_read += 1;
10010            if next_offset >= end_offset {
10011                return Ok(());
10012            }
10013
10014            // Decode unknown envelopes for gaps in ordinals.
10015            while _next_ordinal_to_read < 2 {
10016                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10017                _next_ordinal_to_read += 1;
10018                next_offset += envelope_size;
10019            }
10020
10021            let next_out_of_line = decoder.next_out_of_line();
10022            let handles_before = decoder.remaining_handles();
10023            if let Some((inlined, num_bytes, num_handles)) =
10024                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10025            {
10026                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10027                if inlined != (member_inline_size <= 4) {
10028                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10029                }
10030                let inner_offset;
10031                let mut inner_depth = depth.clone();
10032                if inlined {
10033                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10034                    inner_offset = next_offset;
10035                } else {
10036                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10037                    inner_depth.increment()?;
10038                }
10039                let val_ref = self.service_filter.get_or_insert_with(|| {
10040                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10041                });
10042                fidl::decode!(
10043                    fidl_fuchsia_bluetooth__common::Uuid,
10044                    D,
10045                    val_ref,
10046                    decoder,
10047                    inner_offset,
10048                    inner_depth
10049                )?;
10050                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10051                {
10052                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10053                }
10054                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10055                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10056                }
10057            }
10058
10059            next_offset += envelope_size;
10060
10061            // Decode the remaining unknown envelopes.
10062            while next_offset < end_offset {
10063                _next_ordinal_to_read += 1;
10064                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10065                next_offset += envelope_size;
10066            }
10067
10068            Ok(())
10069        }
10070    }
10071
10072    impl ConnectionTransferPeriodicAdvertisingSyncRequest {
10073        #[inline(always)]
10074        fn max_ordinal_present(&self) -> u64 {
10075            if let Some(_) = self.service_data {
10076                return 2;
10077            }
10078            if let Some(_) = self.sync_id {
10079                return 1;
10080            }
10081            0
10082        }
10083    }
10084
10085    impl fidl::encoding::ValueTypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10086        type Borrowed<'a> = &'a Self;
10087        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10088            value
10089        }
10090    }
10091
10092    unsafe impl fidl::encoding::TypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10093        type Owned = Self;
10094
10095        #[inline(always)]
10096        fn inline_align(_context: fidl::encoding::Context) -> usize {
10097            8
10098        }
10099
10100        #[inline(always)]
10101        fn inline_size(_context: fidl::encoding::Context) -> usize {
10102            16
10103        }
10104    }
10105
10106    unsafe impl<D: fidl::encoding::ResourceDialect>
10107        fidl::encoding::Encode<ConnectionTransferPeriodicAdvertisingSyncRequest, D>
10108        for &ConnectionTransferPeriodicAdvertisingSyncRequest
10109    {
10110        unsafe fn encode(
10111            self,
10112            encoder: &mut fidl::encoding::Encoder<'_, D>,
10113            offset: usize,
10114            mut depth: fidl::encoding::Depth,
10115        ) -> fidl::Result<()> {
10116            encoder.debug_check_bounds::<ConnectionTransferPeriodicAdvertisingSyncRequest>(offset);
10117            // Vector header
10118            let max_ordinal: u64 = self.max_ordinal_present();
10119            encoder.write_num(max_ordinal, offset);
10120            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10121            // Calling encoder.out_of_line_offset(0) is not allowed.
10122            if max_ordinal == 0 {
10123                return Ok(());
10124            }
10125            depth.increment()?;
10126            let envelope_size = 8;
10127            let bytes_len = max_ordinal as usize * envelope_size;
10128            #[allow(unused_variables)]
10129            let offset = encoder.out_of_line_offset(bytes_len);
10130            let mut _prev_end_offset: usize = 0;
10131            if 1 > max_ordinal {
10132                return Ok(());
10133            }
10134
10135            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10136            // are envelope_size bytes.
10137            let cur_offset: usize = (1 - 1) * envelope_size;
10138
10139            // Zero reserved fields.
10140            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10141
10142            // Safety:
10143            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10144            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10145            //   envelope_size bytes, there is always sufficient room.
10146            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
10147                self.sync_id
10148                    .as_ref()
10149                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
10150                encoder,
10151                offset + cur_offset,
10152                depth,
10153            )?;
10154
10155            _prev_end_offset = cur_offset + envelope_size;
10156            if 2 > max_ordinal {
10157                return Ok(());
10158            }
10159
10160            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10161            // are envelope_size bytes.
10162            let cur_offset: usize = (2 - 1) * envelope_size;
10163
10164            // Zero reserved fields.
10165            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10166
10167            // Safety:
10168            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10169            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10170            //   envelope_size bytes, there is always sufficient room.
10171            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10172                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10173                encoder,
10174                offset + cur_offset,
10175                depth,
10176            )?;
10177
10178            _prev_end_offset = cur_offset + envelope_size;
10179
10180            Ok(())
10181        }
10182    }
10183
10184    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10185        for ConnectionTransferPeriodicAdvertisingSyncRequest
10186    {
10187        #[inline(always)]
10188        fn new_empty() -> Self {
10189            Self::default()
10190        }
10191
10192        unsafe fn decode(
10193            &mut self,
10194            decoder: &mut fidl::encoding::Decoder<'_, D>,
10195            offset: usize,
10196            mut depth: fidl::encoding::Depth,
10197        ) -> fidl::Result<()> {
10198            decoder.debug_check_bounds::<Self>(offset);
10199            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10200                None => return Err(fidl::Error::NotNullable),
10201                Some(len) => len,
10202            };
10203            // Calling decoder.out_of_line_offset(0) is not allowed.
10204            if len == 0 {
10205                return Ok(());
10206            };
10207            depth.increment()?;
10208            let envelope_size = 8;
10209            let bytes_len = len * envelope_size;
10210            let offset = decoder.out_of_line_offset(bytes_len)?;
10211            // Decode the envelope for each type.
10212            let mut _next_ordinal_to_read = 0;
10213            let mut next_offset = offset;
10214            let end_offset = offset + bytes_len;
10215            _next_ordinal_to_read += 1;
10216            if next_offset >= end_offset {
10217                return Ok(());
10218            }
10219
10220            // Decode unknown envelopes for gaps in ordinals.
10221            while _next_ordinal_to_read < 1 {
10222                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10223                _next_ordinal_to_read += 1;
10224                next_offset += envelope_size;
10225            }
10226
10227            let next_out_of_line = decoder.next_out_of_line();
10228            let handles_before = decoder.remaining_handles();
10229            if let Some((inlined, num_bytes, num_handles)) =
10230                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10231            {
10232                let member_inline_size =
10233                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
10234                        decoder.context,
10235                    );
10236                if inlined != (member_inline_size <= 4) {
10237                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10238                }
10239                let inner_offset;
10240                let mut inner_depth = depth.clone();
10241                if inlined {
10242                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10243                    inner_offset = next_offset;
10244                } else {
10245                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10246                    inner_depth.increment()?;
10247                }
10248                let val_ref = self
10249                    .sync_id
10250                    .get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
10251                fidl::decode!(
10252                    PeriodicAdvertisingSyncId,
10253                    D,
10254                    val_ref,
10255                    decoder,
10256                    inner_offset,
10257                    inner_depth
10258                )?;
10259                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10260                {
10261                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10262                }
10263                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10264                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10265                }
10266            }
10267
10268            next_offset += envelope_size;
10269            _next_ordinal_to_read += 1;
10270            if next_offset >= end_offset {
10271                return Ok(());
10272            }
10273
10274            // Decode unknown envelopes for gaps in ordinals.
10275            while _next_ordinal_to_read < 2 {
10276                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10277                _next_ordinal_to_read += 1;
10278                next_offset += envelope_size;
10279            }
10280
10281            let next_out_of_line = decoder.next_out_of_line();
10282            let handles_before = decoder.remaining_handles();
10283            if let Some((inlined, num_bytes, num_handles)) =
10284                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10285            {
10286                let member_inline_size =
10287                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10288                if inlined != (member_inline_size <= 4) {
10289                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10290                }
10291                let inner_offset;
10292                let mut inner_depth = depth.clone();
10293                if inlined {
10294                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10295                    inner_offset = next_offset;
10296                } else {
10297                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10298                    inner_depth.increment()?;
10299                }
10300                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
10301                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10302                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10303                {
10304                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10305                }
10306                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10307                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10308                }
10309            }
10310
10311            next_offset += envelope_size;
10312
10313            // Decode the remaining unknown envelopes.
10314            while next_offset < end_offset {
10315                _next_ordinal_to_read += 1;
10316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10317                next_offset += envelope_size;
10318            }
10319
10320            Ok(())
10321        }
10322    }
10323
10324    impl Extended {
10325        #[inline(always)]
10326        fn max_ordinal_present(&self) -> u64 {
10327            0
10328        }
10329    }
10330
10331    impl fidl::encoding::ValueTypeMarker for Extended {
10332        type Borrowed<'a> = &'a Self;
10333        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10334            value
10335        }
10336    }
10337
10338    unsafe impl fidl::encoding::TypeMarker for Extended {
10339        type Owned = Self;
10340
10341        #[inline(always)]
10342        fn inline_align(_context: fidl::encoding::Context) -> usize {
10343            8
10344        }
10345
10346        #[inline(always)]
10347        fn inline_size(_context: fidl::encoding::Context) -> usize {
10348            16
10349        }
10350    }
10351
10352    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Extended, D> for &Extended {
10353        unsafe fn encode(
10354            self,
10355            encoder: &mut fidl::encoding::Encoder<'_, D>,
10356            offset: usize,
10357            mut depth: fidl::encoding::Depth,
10358        ) -> fidl::Result<()> {
10359            encoder.debug_check_bounds::<Extended>(offset);
10360            // Vector header
10361            let max_ordinal: u64 = self.max_ordinal_present();
10362            encoder.write_num(max_ordinal, offset);
10363            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10364            // Calling encoder.out_of_line_offset(0) is not allowed.
10365            if max_ordinal == 0 {
10366                return Ok(());
10367            }
10368            depth.increment()?;
10369            let envelope_size = 8;
10370            let bytes_len = max_ordinal as usize * envelope_size;
10371            #[allow(unused_variables)]
10372            let offset = encoder.out_of_line_offset(bytes_len);
10373            let mut _prev_end_offset: usize = 0;
10374
10375            Ok(())
10376        }
10377    }
10378
10379    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Extended {
10380        #[inline(always)]
10381        fn new_empty() -> Self {
10382            Self::default()
10383        }
10384
10385        unsafe fn decode(
10386            &mut self,
10387            decoder: &mut fidl::encoding::Decoder<'_, D>,
10388            offset: usize,
10389            mut depth: fidl::encoding::Depth,
10390        ) -> fidl::Result<()> {
10391            decoder.debug_check_bounds::<Self>(offset);
10392            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10393                None => return Err(fidl::Error::NotNullable),
10394                Some(len) => len,
10395            };
10396            // Calling decoder.out_of_line_offset(0) is not allowed.
10397            if len == 0 {
10398                return Ok(());
10399            };
10400            depth.increment()?;
10401            let envelope_size = 8;
10402            let bytes_len = len * envelope_size;
10403            let offset = decoder.out_of_line_offset(bytes_len)?;
10404            // Decode the envelope for each type.
10405            let mut _next_ordinal_to_read = 0;
10406            let mut next_offset = offset;
10407            let end_offset = offset + bytes_len;
10408
10409            // Decode the remaining unknown envelopes.
10410            while next_offset < end_offset {
10411                _next_ordinal_to_read += 1;
10412                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10413                next_offset += envelope_size;
10414            }
10415
10416            Ok(())
10417        }
10418    }
10419
10420    impl Filter {
10421        #[inline(always)]
10422        fn max_ordinal_present(&self) -> u64 {
10423            if let Some(_) = self.solicitation_uuid {
10424                return 7;
10425            }
10426            if let Some(_) = self.max_path_loss {
10427                return 6;
10428            }
10429            if let Some(_) = self.name {
10430                return 5;
10431            }
10432            if let Some(_) = self.connectable {
10433                return 4;
10434            }
10435            if let Some(_) = self.manufacturer_id {
10436                return 3;
10437            }
10438            if let Some(_) = self.service_data_uuid {
10439                return 2;
10440            }
10441            if let Some(_) = self.service_uuid {
10442                return 1;
10443            }
10444            0
10445        }
10446    }
10447
10448    impl fidl::encoding::ValueTypeMarker for Filter {
10449        type Borrowed<'a> = &'a Self;
10450        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10451            value
10452        }
10453    }
10454
10455    unsafe impl fidl::encoding::TypeMarker for Filter {
10456        type Owned = Self;
10457
10458        #[inline(always)]
10459        fn inline_align(_context: fidl::encoding::Context) -> usize {
10460            8
10461        }
10462
10463        #[inline(always)]
10464        fn inline_size(_context: fidl::encoding::Context) -> usize {
10465            16
10466        }
10467    }
10468
10469    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Filter, D> for &Filter {
10470        unsafe fn encode(
10471            self,
10472            encoder: &mut fidl::encoding::Encoder<'_, D>,
10473            offset: usize,
10474            mut depth: fidl::encoding::Depth,
10475        ) -> fidl::Result<()> {
10476            encoder.debug_check_bounds::<Filter>(offset);
10477            // Vector header
10478            let max_ordinal: u64 = self.max_ordinal_present();
10479            encoder.write_num(max_ordinal, offset);
10480            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10481            // Calling encoder.out_of_line_offset(0) is not allowed.
10482            if max_ordinal == 0 {
10483                return Ok(());
10484            }
10485            depth.increment()?;
10486            let envelope_size = 8;
10487            let bytes_len = max_ordinal as usize * envelope_size;
10488            #[allow(unused_variables)]
10489            let offset = encoder.out_of_line_offset(bytes_len);
10490            let mut _prev_end_offset: usize = 0;
10491            if 1 > max_ordinal {
10492                return Ok(());
10493            }
10494
10495            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10496            // are envelope_size bytes.
10497            let cur_offset: usize = (1 - 1) * envelope_size;
10498
10499            // Zero reserved fields.
10500            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10501
10502            // Safety:
10503            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10504            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10505            //   envelope_size bytes, there is always sufficient room.
10506            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10507            self.service_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10508            encoder, offset + cur_offset, depth
10509        )?;
10510
10511            _prev_end_offset = cur_offset + envelope_size;
10512            if 2 > max_ordinal {
10513                return Ok(());
10514            }
10515
10516            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10517            // are envelope_size bytes.
10518            let cur_offset: usize = (2 - 1) * envelope_size;
10519
10520            // Zero reserved fields.
10521            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10522
10523            // Safety:
10524            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10525            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10526            //   envelope_size bytes, there is always sufficient room.
10527            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10528            self.service_data_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10529            encoder, offset + cur_offset, depth
10530        )?;
10531
10532            _prev_end_offset = cur_offset + envelope_size;
10533            if 3 > max_ordinal {
10534                return Ok(());
10535            }
10536
10537            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10538            // are envelope_size bytes.
10539            let cur_offset: usize = (3 - 1) * envelope_size;
10540
10541            // Zero reserved fields.
10542            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10543
10544            // Safety:
10545            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10546            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10547            //   envelope_size bytes, there is always sufficient room.
10548            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10549                self.manufacturer_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10550                encoder,
10551                offset + cur_offset,
10552                depth,
10553            )?;
10554
10555            _prev_end_offset = cur_offset + envelope_size;
10556            if 4 > max_ordinal {
10557                return Ok(());
10558            }
10559
10560            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10561            // are envelope_size bytes.
10562            let cur_offset: usize = (4 - 1) * envelope_size;
10563
10564            // Zero reserved fields.
10565            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10566
10567            // Safety:
10568            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10569            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10570            //   envelope_size bytes, there is always sufficient room.
10571            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10572                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10573                encoder,
10574                offset + cur_offset,
10575                depth,
10576            )?;
10577
10578            _prev_end_offset = cur_offset + envelope_size;
10579            if 5 > max_ordinal {
10580                return Ok(());
10581            }
10582
10583            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10584            // are envelope_size bytes.
10585            let cur_offset: usize = (5 - 1) * envelope_size;
10586
10587            // Zero reserved fields.
10588            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10589
10590            // Safety:
10591            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10592            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10593            //   envelope_size bytes, there is always sufficient room.
10594            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
10595                self.name.as_ref().map(
10596                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
10597                ),
10598                encoder,
10599                offset + cur_offset,
10600                depth,
10601            )?;
10602
10603            _prev_end_offset = cur_offset + envelope_size;
10604            if 6 > max_ordinal {
10605                return Ok(());
10606            }
10607
10608            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10609            // are envelope_size bytes.
10610            let cur_offset: usize = (6 - 1) * envelope_size;
10611
10612            // Zero reserved fields.
10613            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10614
10615            // Safety:
10616            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10617            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10618            //   envelope_size bytes, there is always sufficient room.
10619            fidl::encoding::encode_in_envelope_optional::<i8, D>(
10620                self.max_path_loss.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10621                encoder,
10622                offset + cur_offset,
10623                depth,
10624            )?;
10625
10626            _prev_end_offset = cur_offset + envelope_size;
10627            if 7 > max_ordinal {
10628                return Ok(());
10629            }
10630
10631            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10632            // are envelope_size bytes.
10633            let cur_offset: usize = (7 - 1) * envelope_size;
10634
10635            // Zero reserved fields.
10636            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10637
10638            // Safety:
10639            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10640            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10641            //   envelope_size bytes, there is always sufficient room.
10642            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10643            self.solicitation_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10644            encoder, offset + cur_offset, depth
10645        )?;
10646
10647            _prev_end_offset = cur_offset + envelope_size;
10648
10649            Ok(())
10650        }
10651    }
10652
10653    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Filter {
10654        #[inline(always)]
10655        fn new_empty() -> Self {
10656            Self::default()
10657        }
10658
10659        unsafe fn decode(
10660            &mut self,
10661            decoder: &mut fidl::encoding::Decoder<'_, D>,
10662            offset: usize,
10663            mut depth: fidl::encoding::Depth,
10664        ) -> fidl::Result<()> {
10665            decoder.debug_check_bounds::<Self>(offset);
10666            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10667                None => return Err(fidl::Error::NotNullable),
10668                Some(len) => len,
10669            };
10670            // Calling decoder.out_of_line_offset(0) is not allowed.
10671            if len == 0 {
10672                return Ok(());
10673            };
10674            depth.increment()?;
10675            let envelope_size = 8;
10676            let bytes_len = len * envelope_size;
10677            let offset = decoder.out_of_line_offset(bytes_len)?;
10678            // Decode the envelope for each type.
10679            let mut _next_ordinal_to_read = 0;
10680            let mut next_offset = offset;
10681            let end_offset = offset + bytes_len;
10682            _next_ordinal_to_read += 1;
10683            if next_offset >= end_offset {
10684                return Ok(());
10685            }
10686
10687            // Decode unknown envelopes for gaps in ordinals.
10688            while _next_ordinal_to_read < 1 {
10689                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10690                _next_ordinal_to_read += 1;
10691                next_offset += envelope_size;
10692            }
10693
10694            let next_out_of_line = decoder.next_out_of_line();
10695            let handles_before = decoder.remaining_handles();
10696            if let Some((inlined, num_bytes, num_handles)) =
10697                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10698            {
10699                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10700                if inlined != (member_inline_size <= 4) {
10701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10702                }
10703                let inner_offset;
10704                let mut inner_depth = depth.clone();
10705                if inlined {
10706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10707                    inner_offset = next_offset;
10708                } else {
10709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10710                    inner_depth.increment()?;
10711                }
10712                let val_ref = self.service_uuid.get_or_insert_with(|| {
10713                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10714                });
10715                fidl::decode!(
10716                    fidl_fuchsia_bluetooth__common::Uuid,
10717                    D,
10718                    val_ref,
10719                    decoder,
10720                    inner_offset,
10721                    inner_depth
10722                )?;
10723                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10724                {
10725                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10726                }
10727                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10728                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10729                }
10730            }
10731
10732            next_offset += envelope_size;
10733            _next_ordinal_to_read += 1;
10734            if next_offset >= end_offset {
10735                return Ok(());
10736            }
10737
10738            // Decode unknown envelopes for gaps in ordinals.
10739            while _next_ordinal_to_read < 2 {
10740                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10741                _next_ordinal_to_read += 1;
10742                next_offset += envelope_size;
10743            }
10744
10745            let next_out_of_line = decoder.next_out_of_line();
10746            let handles_before = decoder.remaining_handles();
10747            if let Some((inlined, num_bytes, num_handles)) =
10748                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10749            {
10750                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10751                if inlined != (member_inline_size <= 4) {
10752                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10753                }
10754                let inner_offset;
10755                let mut inner_depth = depth.clone();
10756                if inlined {
10757                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10758                    inner_offset = next_offset;
10759                } else {
10760                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10761                    inner_depth.increment()?;
10762                }
10763                let val_ref = self.service_data_uuid.get_or_insert_with(|| {
10764                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10765                });
10766                fidl::decode!(
10767                    fidl_fuchsia_bluetooth__common::Uuid,
10768                    D,
10769                    val_ref,
10770                    decoder,
10771                    inner_offset,
10772                    inner_depth
10773                )?;
10774                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10775                {
10776                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10777                }
10778                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10779                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10780                }
10781            }
10782
10783            next_offset += envelope_size;
10784            _next_ordinal_to_read += 1;
10785            if next_offset >= end_offset {
10786                return Ok(());
10787            }
10788
10789            // Decode unknown envelopes for gaps in ordinals.
10790            while _next_ordinal_to_read < 3 {
10791                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10792                _next_ordinal_to_read += 1;
10793                next_offset += envelope_size;
10794            }
10795
10796            let next_out_of_line = decoder.next_out_of_line();
10797            let handles_before = decoder.remaining_handles();
10798            if let Some((inlined, num_bytes, num_handles)) =
10799                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10800            {
10801                let member_inline_size =
10802                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10803                if inlined != (member_inline_size <= 4) {
10804                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10805                }
10806                let inner_offset;
10807                let mut inner_depth = depth.clone();
10808                if inlined {
10809                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10810                    inner_offset = next_offset;
10811                } else {
10812                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10813                    inner_depth.increment()?;
10814                }
10815                let val_ref = self.manufacturer_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10816                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10818                {
10819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10820                }
10821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10823                }
10824            }
10825
10826            next_offset += envelope_size;
10827            _next_ordinal_to_read += 1;
10828            if next_offset >= end_offset {
10829                return Ok(());
10830            }
10831
10832            // Decode unknown envelopes for gaps in ordinals.
10833            while _next_ordinal_to_read < 4 {
10834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10835                _next_ordinal_to_read += 1;
10836                next_offset += envelope_size;
10837            }
10838
10839            let next_out_of_line = decoder.next_out_of_line();
10840            let handles_before = decoder.remaining_handles();
10841            if let Some((inlined, num_bytes, num_handles)) =
10842                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10843            {
10844                let member_inline_size =
10845                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10846                if inlined != (member_inline_size <= 4) {
10847                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10848                }
10849                let inner_offset;
10850                let mut inner_depth = depth.clone();
10851                if inlined {
10852                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10853                    inner_offset = next_offset;
10854                } else {
10855                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10856                    inner_depth.increment()?;
10857                }
10858                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10859                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10860                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10861                {
10862                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10863                }
10864                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10865                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10866                }
10867            }
10868
10869            next_offset += envelope_size;
10870            _next_ordinal_to_read += 1;
10871            if next_offset >= end_offset {
10872                return Ok(());
10873            }
10874
10875            // Decode unknown envelopes for gaps in ordinals.
10876            while _next_ordinal_to_read < 5 {
10877                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10878                _next_ordinal_to_read += 1;
10879                next_offset += envelope_size;
10880            }
10881
10882            let next_out_of_line = decoder.next_out_of_line();
10883            let handles_before = decoder.remaining_handles();
10884            if let Some((inlined, num_bytes, num_handles)) =
10885                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10886            {
10887                let member_inline_size =
10888                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
10889                        decoder.context,
10890                    );
10891                if inlined != (member_inline_size <= 4) {
10892                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10893                }
10894                let inner_offset;
10895                let mut inner_depth = depth.clone();
10896                if inlined {
10897                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10898                    inner_offset = next_offset;
10899                } else {
10900                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10901                    inner_depth.increment()?;
10902                }
10903                let val_ref = self
10904                    .name
10905                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
10906                fidl::decode!(
10907                    fidl::encoding::BoundedString<248>,
10908                    D,
10909                    val_ref,
10910                    decoder,
10911                    inner_offset,
10912                    inner_depth
10913                )?;
10914                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10915                {
10916                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10917                }
10918                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10919                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10920                }
10921            }
10922
10923            next_offset += envelope_size;
10924            _next_ordinal_to_read += 1;
10925            if next_offset >= end_offset {
10926                return Ok(());
10927            }
10928
10929            // Decode unknown envelopes for gaps in ordinals.
10930            while _next_ordinal_to_read < 6 {
10931                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10932                _next_ordinal_to_read += 1;
10933                next_offset += envelope_size;
10934            }
10935
10936            let next_out_of_line = decoder.next_out_of_line();
10937            let handles_before = decoder.remaining_handles();
10938            if let Some((inlined, num_bytes, num_handles)) =
10939                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10940            {
10941                let member_inline_size =
10942                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10943                if inlined != (member_inline_size <= 4) {
10944                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10945                }
10946                let inner_offset;
10947                let mut inner_depth = depth.clone();
10948                if inlined {
10949                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10950                    inner_offset = next_offset;
10951                } else {
10952                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10953                    inner_depth.increment()?;
10954                }
10955                let val_ref = self.max_path_loss.get_or_insert_with(|| fidl::new_empty!(i8, D));
10956                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10957                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10958                {
10959                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10960                }
10961                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10962                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10963                }
10964            }
10965
10966            next_offset += envelope_size;
10967            _next_ordinal_to_read += 1;
10968            if next_offset >= end_offset {
10969                return Ok(());
10970            }
10971
10972            // Decode unknown envelopes for gaps in ordinals.
10973            while _next_ordinal_to_read < 7 {
10974                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10975                _next_ordinal_to_read += 1;
10976                next_offset += envelope_size;
10977            }
10978
10979            let next_out_of_line = decoder.next_out_of_line();
10980            let handles_before = decoder.remaining_handles();
10981            if let Some((inlined, num_bytes, num_handles)) =
10982                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10983            {
10984                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10985                if inlined != (member_inline_size <= 4) {
10986                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10987                }
10988                let inner_offset;
10989                let mut inner_depth = depth.clone();
10990                if inlined {
10991                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10992                    inner_offset = next_offset;
10993                } else {
10994                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10995                    inner_depth.increment()?;
10996                }
10997                let val_ref = self.solicitation_uuid.get_or_insert_with(|| {
10998                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10999                });
11000                fidl::decode!(
11001                    fidl_fuchsia_bluetooth__common::Uuid,
11002                    D,
11003                    val_ref,
11004                    decoder,
11005                    inner_offset,
11006                    inner_depth
11007                )?;
11008                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11009                {
11010                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11011                }
11012                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11013                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11014                }
11015            }
11016
11017            next_offset += envelope_size;
11018
11019            // Decode the remaining unknown envelopes.
11020            while next_offset < end_offset {
11021                _next_ordinal_to_read += 1;
11022                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11023                next_offset += envelope_size;
11024            }
11025
11026            Ok(())
11027        }
11028    }
11029
11030    impl IsochronousStreamOnEstablishedRequest {
11031        #[inline(always)]
11032        fn max_ordinal_present(&self) -> u64 {
11033            if let Some(_) = self.established_params {
11034                return 2;
11035            }
11036            if let Some(_) = self.result {
11037                return 1;
11038            }
11039            0
11040        }
11041    }
11042
11043    impl fidl::encoding::ValueTypeMarker for IsochronousStreamOnEstablishedRequest {
11044        type Borrowed<'a> = &'a Self;
11045        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11046            value
11047        }
11048    }
11049
11050    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamOnEstablishedRequest {
11051        type Owned = Self;
11052
11053        #[inline(always)]
11054        fn inline_align(_context: fidl::encoding::Context) -> usize {
11055            8
11056        }
11057
11058        #[inline(always)]
11059        fn inline_size(_context: fidl::encoding::Context) -> usize {
11060            16
11061        }
11062    }
11063
11064    unsafe impl<D: fidl::encoding::ResourceDialect>
11065        fidl::encoding::Encode<IsochronousStreamOnEstablishedRequest, D>
11066        for &IsochronousStreamOnEstablishedRequest
11067    {
11068        unsafe fn encode(
11069            self,
11070            encoder: &mut fidl::encoding::Encoder<'_, D>,
11071            offset: usize,
11072            mut depth: fidl::encoding::Depth,
11073        ) -> fidl::Result<()> {
11074            encoder.debug_check_bounds::<IsochronousStreamOnEstablishedRequest>(offset);
11075            // Vector header
11076            let max_ordinal: u64 = self.max_ordinal_present();
11077            encoder.write_num(max_ordinal, offset);
11078            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11079            // Calling encoder.out_of_line_offset(0) is not allowed.
11080            if max_ordinal == 0 {
11081                return Ok(());
11082            }
11083            depth.increment()?;
11084            let envelope_size = 8;
11085            let bytes_len = max_ordinal as usize * envelope_size;
11086            #[allow(unused_variables)]
11087            let offset = encoder.out_of_line_offset(bytes_len);
11088            let mut _prev_end_offset: usize = 0;
11089            if 1 > max_ordinal {
11090                return Ok(());
11091            }
11092
11093            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11094            // are envelope_size bytes.
11095            let cur_offset: usize = (1 - 1) * envelope_size;
11096
11097            // Zero reserved fields.
11098            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11099
11100            // Safety:
11101            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11102            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11103            //   envelope_size bytes, there is always sufficient room.
11104            fidl::encoding::encode_in_envelope_optional::<i32, D>(
11105                self.result.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
11106                encoder,
11107                offset + cur_offset,
11108                depth,
11109            )?;
11110
11111            _prev_end_offset = cur_offset + envelope_size;
11112            if 2 > max_ordinal {
11113                return Ok(());
11114            }
11115
11116            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11117            // are envelope_size bytes.
11118            let cur_offset: usize = (2 - 1) * envelope_size;
11119
11120            // Zero reserved fields.
11121            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11122
11123            // Safety:
11124            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11125            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11126            //   envelope_size bytes, there is always sufficient room.
11127            fidl::encoding::encode_in_envelope_optional::<CisEstablishedParameters, D>(
11128                self.established_params
11129                    .as_ref()
11130                    .map(<CisEstablishedParameters as fidl::encoding::ValueTypeMarker>::borrow),
11131                encoder,
11132                offset + cur_offset,
11133                depth,
11134            )?;
11135
11136            _prev_end_offset = cur_offset + envelope_size;
11137
11138            Ok(())
11139        }
11140    }
11141
11142    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11143        for IsochronousStreamOnEstablishedRequest
11144    {
11145        #[inline(always)]
11146        fn new_empty() -> Self {
11147            Self::default()
11148        }
11149
11150        unsafe fn decode(
11151            &mut self,
11152            decoder: &mut fidl::encoding::Decoder<'_, D>,
11153            offset: usize,
11154            mut depth: fidl::encoding::Depth,
11155        ) -> fidl::Result<()> {
11156            decoder.debug_check_bounds::<Self>(offset);
11157            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11158                None => return Err(fidl::Error::NotNullable),
11159                Some(len) => len,
11160            };
11161            // Calling decoder.out_of_line_offset(0) is not allowed.
11162            if len == 0 {
11163                return Ok(());
11164            };
11165            depth.increment()?;
11166            let envelope_size = 8;
11167            let bytes_len = len * envelope_size;
11168            let offset = decoder.out_of_line_offset(bytes_len)?;
11169            // Decode the envelope for each type.
11170            let mut _next_ordinal_to_read = 0;
11171            let mut next_offset = offset;
11172            let end_offset = offset + bytes_len;
11173            _next_ordinal_to_read += 1;
11174            if next_offset >= end_offset {
11175                return Ok(());
11176            }
11177
11178            // Decode unknown envelopes for gaps in ordinals.
11179            while _next_ordinal_to_read < 1 {
11180                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11181                _next_ordinal_to_read += 1;
11182                next_offset += envelope_size;
11183            }
11184
11185            let next_out_of_line = decoder.next_out_of_line();
11186            let handles_before = decoder.remaining_handles();
11187            if let Some((inlined, num_bytes, num_handles)) =
11188                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11189            {
11190                let member_inline_size =
11191                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11192                if inlined != (member_inline_size <= 4) {
11193                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11194                }
11195                let inner_offset;
11196                let mut inner_depth = depth.clone();
11197                if inlined {
11198                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11199                    inner_offset = next_offset;
11200                } else {
11201                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11202                    inner_depth.increment()?;
11203                }
11204                let val_ref = self.result.get_or_insert_with(|| fidl::new_empty!(i32, D));
11205                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
11206                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11207                {
11208                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11209                }
11210                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11211                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11212                }
11213            }
11214
11215            next_offset += envelope_size;
11216            _next_ordinal_to_read += 1;
11217            if next_offset >= end_offset {
11218                return Ok(());
11219            }
11220
11221            // Decode unknown envelopes for gaps in ordinals.
11222            while _next_ordinal_to_read < 2 {
11223                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11224                _next_ordinal_to_read += 1;
11225                next_offset += envelope_size;
11226            }
11227
11228            let next_out_of_line = decoder.next_out_of_line();
11229            let handles_before = decoder.remaining_handles();
11230            if let Some((inlined, num_bytes, num_handles)) =
11231                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11232            {
11233                let member_inline_size =
11234                    <CisEstablishedParameters as fidl::encoding::TypeMarker>::inline_size(
11235                        decoder.context,
11236                    );
11237                if inlined != (member_inline_size <= 4) {
11238                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11239                }
11240                let inner_offset;
11241                let mut inner_depth = depth.clone();
11242                if inlined {
11243                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11244                    inner_offset = next_offset;
11245                } else {
11246                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11247                    inner_depth.increment()?;
11248                }
11249                let val_ref = self
11250                    .established_params
11251                    .get_or_insert_with(|| fidl::new_empty!(CisEstablishedParameters, D));
11252                fidl::decode!(
11253                    CisEstablishedParameters,
11254                    D,
11255                    val_ref,
11256                    decoder,
11257                    inner_offset,
11258                    inner_depth
11259                )?;
11260                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11261                {
11262                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11263                }
11264                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11265                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11266                }
11267            }
11268
11269            next_offset += envelope_size;
11270
11271            // Decode the remaining unknown envelopes.
11272            while next_offset < end_offset {
11273                _next_ordinal_to_read += 1;
11274                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11275                next_offset += envelope_size;
11276            }
11277
11278            Ok(())
11279        }
11280    }
11281
11282    impl IsochronousStreamSetupDataPathRequest {
11283        #[inline(always)]
11284        fn max_ordinal_present(&self) -> u64 {
11285            if let Some(_) = self.controller_delay {
11286                return 3;
11287            }
11288            if let Some(_) = self.codec_attributes {
11289                return 2;
11290            }
11291            if let Some(_) = self.data_direction {
11292                return 1;
11293            }
11294            0
11295        }
11296    }
11297
11298    impl fidl::encoding::ValueTypeMarker for IsochronousStreamSetupDataPathRequest {
11299        type Borrowed<'a> = &'a Self;
11300        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11301            value
11302        }
11303    }
11304
11305    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamSetupDataPathRequest {
11306        type Owned = Self;
11307
11308        #[inline(always)]
11309        fn inline_align(_context: fidl::encoding::Context) -> usize {
11310            8
11311        }
11312
11313        #[inline(always)]
11314        fn inline_size(_context: fidl::encoding::Context) -> usize {
11315            16
11316        }
11317    }
11318
11319    unsafe impl<D: fidl::encoding::ResourceDialect>
11320        fidl::encoding::Encode<IsochronousStreamSetupDataPathRequest, D>
11321        for &IsochronousStreamSetupDataPathRequest
11322    {
11323        unsafe fn encode(
11324            self,
11325            encoder: &mut fidl::encoding::Encoder<'_, D>,
11326            offset: usize,
11327            mut depth: fidl::encoding::Depth,
11328        ) -> fidl::Result<()> {
11329            encoder.debug_check_bounds::<IsochronousStreamSetupDataPathRequest>(offset);
11330            // Vector header
11331            let max_ordinal: u64 = self.max_ordinal_present();
11332            encoder.write_num(max_ordinal, offset);
11333            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11334            // Calling encoder.out_of_line_offset(0) is not allowed.
11335            if max_ordinal == 0 {
11336                return Ok(());
11337            }
11338            depth.increment()?;
11339            let envelope_size = 8;
11340            let bytes_len = max_ordinal as usize * envelope_size;
11341            #[allow(unused_variables)]
11342            let offset = encoder.out_of_line_offset(bytes_len);
11343            let mut _prev_end_offset: usize = 0;
11344            if 1 > max_ordinal {
11345                return Ok(());
11346            }
11347
11348            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11349            // are envelope_size bytes.
11350            let cur_offset: usize = (1 - 1) * envelope_size;
11351
11352            // Zero reserved fields.
11353            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11354
11355            // Safety:
11356            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11357            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11358            //   envelope_size bytes, there is always sufficient room.
11359            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
11360            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
11361            encoder, offset + cur_offset, depth
11362        )?;
11363
11364            _prev_end_offset = cur_offset + envelope_size;
11365            if 2 > max_ordinal {
11366                return Ok(());
11367            }
11368
11369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11370            // are envelope_size bytes.
11371            let cur_offset: usize = (2 - 1) * envelope_size;
11372
11373            // Zero reserved fields.
11374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11375
11376            // Safety:
11377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11379            //   envelope_size bytes, there is always sufficient room.
11380            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
11381            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
11382            encoder, offset + cur_offset, depth
11383        )?;
11384
11385            _prev_end_offset = cur_offset + envelope_size;
11386            if 3 > max_ordinal {
11387                return Ok(());
11388            }
11389
11390            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11391            // are envelope_size bytes.
11392            let cur_offset: usize = (3 - 1) * envelope_size;
11393
11394            // Zero reserved fields.
11395            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11396
11397            // Safety:
11398            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11399            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11400            //   envelope_size bytes, there is always sufficient room.
11401            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11402                self.controller_delay
11403                    .as_ref()
11404                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11405                encoder,
11406                offset + cur_offset,
11407                depth,
11408            )?;
11409
11410            _prev_end_offset = cur_offset + envelope_size;
11411
11412            Ok(())
11413        }
11414    }
11415
11416    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11417        for IsochronousStreamSetupDataPathRequest
11418    {
11419        #[inline(always)]
11420        fn new_empty() -> Self {
11421            Self::default()
11422        }
11423
11424        unsafe fn decode(
11425            &mut self,
11426            decoder: &mut fidl::encoding::Decoder<'_, D>,
11427            offset: usize,
11428            mut depth: fidl::encoding::Depth,
11429        ) -> fidl::Result<()> {
11430            decoder.debug_check_bounds::<Self>(offset);
11431            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11432                None => return Err(fidl::Error::NotNullable),
11433                Some(len) => len,
11434            };
11435            // Calling decoder.out_of_line_offset(0) is not allowed.
11436            if len == 0 {
11437                return Ok(());
11438            };
11439            depth.increment()?;
11440            let envelope_size = 8;
11441            let bytes_len = len * envelope_size;
11442            let offset = decoder.out_of_line_offset(bytes_len)?;
11443            // Decode the envelope for each type.
11444            let mut _next_ordinal_to_read = 0;
11445            let mut next_offset = offset;
11446            let end_offset = offset + bytes_len;
11447            _next_ordinal_to_read += 1;
11448            if next_offset >= end_offset {
11449                return Ok(());
11450            }
11451
11452            // Decode unknown envelopes for gaps in ordinals.
11453            while _next_ordinal_to_read < 1 {
11454                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11455                _next_ordinal_to_read += 1;
11456                next_offset += envelope_size;
11457            }
11458
11459            let next_out_of_line = decoder.next_out_of_line();
11460            let handles_before = decoder.remaining_handles();
11461            if let Some((inlined, num_bytes, num_handles)) =
11462                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11463            {
11464                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11465                if inlined != (member_inline_size <= 4) {
11466                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11467                }
11468                let inner_offset;
11469                let mut inner_depth = depth.clone();
11470                if inlined {
11471                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11472                    inner_offset = next_offset;
11473                } else {
11474                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11475                    inner_depth.increment()?;
11476                }
11477                let val_ref = self.data_direction.get_or_insert_with(|| {
11478                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
11479                });
11480                fidl::decode!(
11481                    fidl_fuchsia_bluetooth__common::DataDirection,
11482                    D,
11483                    val_ref,
11484                    decoder,
11485                    inner_offset,
11486                    inner_depth
11487                )?;
11488                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11489                {
11490                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11491                }
11492                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11493                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11494                }
11495            }
11496
11497            next_offset += envelope_size;
11498            _next_ordinal_to_read += 1;
11499            if next_offset >= end_offset {
11500                return Ok(());
11501            }
11502
11503            // Decode unknown envelopes for gaps in ordinals.
11504            while _next_ordinal_to_read < 2 {
11505                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11506                _next_ordinal_to_read += 1;
11507                next_offset += envelope_size;
11508            }
11509
11510            let next_out_of_line = decoder.next_out_of_line();
11511            let handles_before = decoder.remaining_handles();
11512            if let Some((inlined, num_bytes, num_handles)) =
11513                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11514            {
11515                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11516                if inlined != (member_inline_size <= 4) {
11517                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11518                }
11519                let inner_offset;
11520                let mut inner_depth = depth.clone();
11521                if inlined {
11522                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11523                    inner_offset = next_offset;
11524                } else {
11525                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11526                    inner_depth.increment()?;
11527                }
11528                let val_ref = self.codec_attributes.get_or_insert_with(|| {
11529                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
11530                });
11531                fidl::decode!(
11532                    fidl_fuchsia_bluetooth__common::CodecAttributes,
11533                    D,
11534                    val_ref,
11535                    decoder,
11536                    inner_offset,
11537                    inner_depth
11538                )?;
11539                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11540                {
11541                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11542                }
11543                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11544                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11545                }
11546            }
11547
11548            next_offset += envelope_size;
11549            _next_ordinal_to_read += 1;
11550            if next_offset >= end_offset {
11551                return Ok(());
11552            }
11553
11554            // Decode unknown envelopes for gaps in ordinals.
11555            while _next_ordinal_to_read < 3 {
11556                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11557                _next_ordinal_to_read += 1;
11558                next_offset += envelope_size;
11559            }
11560
11561            let next_out_of_line = decoder.next_out_of_line();
11562            let handles_before = decoder.remaining_handles();
11563            if let Some((inlined, num_bytes, num_handles)) =
11564                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11565            {
11566                let member_inline_size =
11567                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11568                if inlined != (member_inline_size <= 4) {
11569                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11570                }
11571                let inner_offset;
11572                let mut inner_depth = depth.clone();
11573                if inlined {
11574                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11575                    inner_offset = next_offset;
11576                } else {
11577                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11578                    inner_depth.increment()?;
11579                }
11580                let val_ref = self.controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
11581                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
11582                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11583                {
11584                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11585                }
11586                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11587                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11588                }
11589            }
11590
11591            next_offset += envelope_size;
11592
11593            // Decode the remaining unknown envelopes.
11594            while next_offset < end_offset {
11595                _next_ordinal_to_read += 1;
11596                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11597                next_offset += envelope_size;
11598            }
11599
11600            Ok(())
11601        }
11602    }
11603
11604    impl IsochronousStreamWriteRequest {
11605        #[inline(always)]
11606        fn max_ordinal_present(&self) -> u64 {
11607            if let Some(_) = self.data {
11608                return 1;
11609            }
11610            0
11611        }
11612    }
11613
11614    impl fidl::encoding::ValueTypeMarker for IsochronousStreamWriteRequest {
11615        type Borrowed<'a> = &'a Self;
11616        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11617            value
11618        }
11619    }
11620
11621    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamWriteRequest {
11622        type Owned = Self;
11623
11624        #[inline(always)]
11625        fn inline_align(_context: fidl::encoding::Context) -> usize {
11626            8
11627        }
11628
11629        #[inline(always)]
11630        fn inline_size(_context: fidl::encoding::Context) -> usize {
11631            16
11632        }
11633    }
11634
11635    unsafe impl<D: fidl::encoding::ResourceDialect>
11636        fidl::encoding::Encode<IsochronousStreamWriteRequest, D>
11637        for &IsochronousStreamWriteRequest
11638    {
11639        unsafe fn encode(
11640            self,
11641            encoder: &mut fidl::encoding::Encoder<'_, D>,
11642            offset: usize,
11643            mut depth: fidl::encoding::Depth,
11644        ) -> fidl::Result<()> {
11645            encoder.debug_check_bounds::<IsochronousStreamWriteRequest>(offset);
11646            // Vector header
11647            let max_ordinal: u64 = self.max_ordinal_present();
11648            encoder.write_num(max_ordinal, offset);
11649            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11650            // Calling encoder.out_of_line_offset(0) is not allowed.
11651            if max_ordinal == 0 {
11652                return Ok(());
11653            }
11654            depth.increment()?;
11655            let envelope_size = 8;
11656            let bytes_len = max_ordinal as usize * envelope_size;
11657            #[allow(unused_variables)]
11658            let offset = encoder.out_of_line_offset(bytes_len);
11659            let mut _prev_end_offset: usize = 0;
11660            if 1 > max_ordinal {
11661                return Ok(());
11662            }
11663
11664            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11665            // are envelope_size bytes.
11666            let cur_offset: usize = (1 - 1) * envelope_size;
11667
11668            // Zero reserved fields.
11669            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11670
11671            // Safety:
11672            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11673            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11674            //   envelope_size bytes, there is always sufficient room.
11675            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 4095>, D>(
11676                self.data.as_ref().map(
11677                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::ValueTypeMarker>::borrow,
11678                ),
11679                encoder,
11680                offset + cur_offset,
11681                depth,
11682            )?;
11683
11684            _prev_end_offset = cur_offset + envelope_size;
11685
11686            Ok(())
11687        }
11688    }
11689
11690    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11691        for IsochronousStreamWriteRequest
11692    {
11693        #[inline(always)]
11694        fn new_empty() -> Self {
11695            Self::default()
11696        }
11697
11698        unsafe fn decode(
11699            &mut self,
11700            decoder: &mut fidl::encoding::Decoder<'_, D>,
11701            offset: usize,
11702            mut depth: fidl::encoding::Depth,
11703        ) -> fidl::Result<()> {
11704            decoder.debug_check_bounds::<Self>(offset);
11705            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11706                None => return Err(fidl::Error::NotNullable),
11707                Some(len) => len,
11708            };
11709            // Calling decoder.out_of_line_offset(0) is not allowed.
11710            if len == 0 {
11711                return Ok(());
11712            };
11713            depth.increment()?;
11714            let envelope_size = 8;
11715            let bytes_len = len * envelope_size;
11716            let offset = decoder.out_of_line_offset(bytes_len)?;
11717            // Decode the envelope for each type.
11718            let mut _next_ordinal_to_read = 0;
11719            let mut next_offset = offset;
11720            let end_offset = offset + bytes_len;
11721            _next_ordinal_to_read += 1;
11722            if next_offset >= end_offset {
11723                return Ok(());
11724            }
11725
11726            // Decode unknown envelopes for gaps in ordinals.
11727            while _next_ordinal_to_read < 1 {
11728                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11729                _next_ordinal_to_read += 1;
11730                next_offset += envelope_size;
11731            }
11732
11733            let next_out_of_line = decoder.next_out_of_line();
11734            let handles_before = decoder.remaining_handles();
11735            if let Some((inlined, num_bytes, num_handles)) =
11736                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11737            {
11738                let member_inline_size =
11739                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::TypeMarker>::inline_size(
11740                        decoder.context,
11741                    );
11742                if inlined != (member_inline_size <= 4) {
11743                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11744                }
11745                let inner_offset;
11746                let mut inner_depth = depth.clone();
11747                if inlined {
11748                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11749                    inner_offset = next_offset;
11750                } else {
11751                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11752                    inner_depth.increment()?;
11753                }
11754                let val_ref = self
11755                    .data
11756                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 4095>, D));
11757                fidl::decode!(fidl::encoding::Vector<u8, 4095>, D, val_ref, decoder, inner_offset, inner_depth)?;
11758                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11759                {
11760                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11761                }
11762                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11763                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11764                }
11765            }
11766
11767            next_offset += envelope_size;
11768
11769            // Decode the remaining unknown envelopes.
11770            while next_offset < end_offset {
11771                _next_ordinal_to_read += 1;
11772                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11773                next_offset += envelope_size;
11774            }
11775
11776            Ok(())
11777        }
11778    }
11779
11780    impl IsochronousStreamReadResponse {
11781        #[inline(always)]
11782        fn max_ordinal_present(&self) -> u64 {
11783            if let Some(_) = self.timestamp {
11784                return 4;
11785            }
11786            if let Some(_) = self.status_flag {
11787                return 3;
11788            }
11789            if let Some(_) = self.sequence_number {
11790                return 2;
11791            }
11792            if let Some(_) = self.data {
11793                return 1;
11794            }
11795            0
11796        }
11797    }
11798
11799    impl fidl::encoding::ValueTypeMarker for IsochronousStreamReadResponse {
11800        type Borrowed<'a> = &'a Self;
11801        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11802            value
11803        }
11804    }
11805
11806    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamReadResponse {
11807        type Owned = Self;
11808
11809        #[inline(always)]
11810        fn inline_align(_context: fidl::encoding::Context) -> usize {
11811            8
11812        }
11813
11814        #[inline(always)]
11815        fn inline_size(_context: fidl::encoding::Context) -> usize {
11816            16
11817        }
11818    }
11819
11820    unsafe impl<D: fidl::encoding::ResourceDialect>
11821        fidl::encoding::Encode<IsochronousStreamReadResponse, D>
11822        for &IsochronousStreamReadResponse
11823    {
11824        unsafe fn encode(
11825            self,
11826            encoder: &mut fidl::encoding::Encoder<'_, D>,
11827            offset: usize,
11828            mut depth: fidl::encoding::Depth,
11829        ) -> fidl::Result<()> {
11830            encoder.debug_check_bounds::<IsochronousStreamReadResponse>(offset);
11831            // Vector header
11832            let max_ordinal: u64 = self.max_ordinal_present();
11833            encoder.write_num(max_ordinal, offset);
11834            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11835            // Calling encoder.out_of_line_offset(0) is not allowed.
11836            if max_ordinal == 0 {
11837                return Ok(());
11838            }
11839            depth.increment()?;
11840            let envelope_size = 8;
11841            let bytes_len = max_ordinal as usize * envelope_size;
11842            #[allow(unused_variables)]
11843            let offset = encoder.out_of_line_offset(bytes_len);
11844            let mut _prev_end_offset: usize = 0;
11845            if 1 > max_ordinal {
11846                return Ok(());
11847            }
11848
11849            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11850            // are envelope_size bytes.
11851            let cur_offset: usize = (1 - 1) * envelope_size;
11852
11853            // Zero reserved fields.
11854            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11855
11856            // Safety:
11857            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11858            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11859            //   envelope_size bytes, there is always sufficient room.
11860            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11861            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11862            encoder, offset + cur_offset, depth
11863        )?;
11864
11865            _prev_end_offset = cur_offset + envelope_size;
11866            if 2 > max_ordinal {
11867                return Ok(());
11868            }
11869
11870            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11871            // are envelope_size bytes.
11872            let cur_offset: usize = (2 - 1) * envelope_size;
11873
11874            // Zero reserved fields.
11875            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11876
11877            // Safety:
11878            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11879            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11880            //   envelope_size bytes, there is always sufficient room.
11881            fidl::encoding::encode_in_envelope_optional::<u16, D>(
11882                self.sequence_number.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11883                encoder,
11884                offset + cur_offset,
11885                depth,
11886            )?;
11887
11888            _prev_end_offset = cur_offset + envelope_size;
11889            if 3 > max_ordinal {
11890                return Ok(());
11891            }
11892
11893            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11894            // are envelope_size bytes.
11895            let cur_offset: usize = (3 - 1) * envelope_size;
11896
11897            // Zero reserved fields.
11898            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11899
11900            // Safety:
11901            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11902            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11903            //   envelope_size bytes, there is always sufficient room.
11904            fidl::encoding::encode_in_envelope_optional::<IsoPacketStatusFlag, D>(
11905                self.status_flag
11906                    .as_ref()
11907                    .map(<IsoPacketStatusFlag as fidl::encoding::ValueTypeMarker>::borrow),
11908                encoder,
11909                offset + cur_offset,
11910                depth,
11911            )?;
11912
11913            _prev_end_offset = cur_offset + envelope_size;
11914            if 4 > max_ordinal {
11915                return Ok(());
11916            }
11917
11918            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11919            // are envelope_size bytes.
11920            let cur_offset: usize = (4 - 1) * envelope_size;
11921
11922            // Zero reserved fields.
11923            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11924
11925            // Safety:
11926            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11927            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11928            //   envelope_size bytes, there is always sufficient room.
11929            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11930                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11931                encoder,
11932                offset + cur_offset,
11933                depth,
11934            )?;
11935
11936            _prev_end_offset = cur_offset + envelope_size;
11937
11938            Ok(())
11939        }
11940    }
11941
11942    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11943        for IsochronousStreamReadResponse
11944    {
11945        #[inline(always)]
11946        fn new_empty() -> Self {
11947            Self::default()
11948        }
11949
11950        unsafe fn decode(
11951            &mut self,
11952            decoder: &mut fidl::encoding::Decoder<'_, D>,
11953            offset: usize,
11954            mut depth: fidl::encoding::Depth,
11955        ) -> fidl::Result<()> {
11956            decoder.debug_check_bounds::<Self>(offset);
11957            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11958                None => return Err(fidl::Error::NotNullable),
11959                Some(len) => len,
11960            };
11961            // Calling decoder.out_of_line_offset(0) is not allowed.
11962            if len == 0 {
11963                return Ok(());
11964            };
11965            depth.increment()?;
11966            let envelope_size = 8;
11967            let bytes_len = len * envelope_size;
11968            let offset = decoder.out_of_line_offset(bytes_len)?;
11969            // Decode the envelope for each type.
11970            let mut _next_ordinal_to_read = 0;
11971            let mut next_offset = offset;
11972            let end_offset = offset + bytes_len;
11973            _next_ordinal_to_read += 1;
11974            if next_offset >= end_offset {
11975                return Ok(());
11976            }
11977
11978            // Decode unknown envelopes for gaps in ordinals.
11979            while _next_ordinal_to_read < 1 {
11980                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11981                _next_ordinal_to_read += 1;
11982                next_offset += envelope_size;
11983            }
11984
11985            let next_out_of_line = decoder.next_out_of_line();
11986            let handles_before = decoder.remaining_handles();
11987            if let Some((inlined, num_bytes, num_handles)) =
11988                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11989            {
11990                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11991                if inlined != (member_inline_size <= 4) {
11992                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11993                }
11994                let inner_offset;
11995                let mut inner_depth = depth.clone();
11996                if inlined {
11997                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11998                    inner_offset = next_offset;
11999                } else {
12000                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12001                    inner_depth.increment()?;
12002                }
12003                let val_ref = self.data.get_or_insert_with(|| {
12004                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12005                });
12006                fidl::decode!(
12007                    fidl::encoding::UnboundedVector<u8>,
12008                    D,
12009                    val_ref,
12010                    decoder,
12011                    inner_offset,
12012                    inner_depth
12013                )?;
12014                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12015                {
12016                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12017                }
12018                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12019                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12020                }
12021            }
12022
12023            next_offset += envelope_size;
12024            _next_ordinal_to_read += 1;
12025            if next_offset >= end_offset {
12026                return Ok(());
12027            }
12028
12029            // Decode unknown envelopes for gaps in ordinals.
12030            while _next_ordinal_to_read < 2 {
12031                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12032                _next_ordinal_to_read += 1;
12033                next_offset += envelope_size;
12034            }
12035
12036            let next_out_of_line = decoder.next_out_of_line();
12037            let handles_before = decoder.remaining_handles();
12038            if let Some((inlined, num_bytes, num_handles)) =
12039                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12040            {
12041                let member_inline_size =
12042                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12043                if inlined != (member_inline_size <= 4) {
12044                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12045                }
12046                let inner_offset;
12047                let mut inner_depth = depth.clone();
12048                if inlined {
12049                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12050                    inner_offset = next_offset;
12051                } else {
12052                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12053                    inner_depth.increment()?;
12054                }
12055                let val_ref = self.sequence_number.get_or_insert_with(|| fidl::new_empty!(u16, D));
12056                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12058                {
12059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12060                }
12061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12063                }
12064            }
12065
12066            next_offset += envelope_size;
12067            _next_ordinal_to_read += 1;
12068            if next_offset >= end_offset {
12069                return Ok(());
12070            }
12071
12072            // Decode unknown envelopes for gaps in ordinals.
12073            while _next_ordinal_to_read < 3 {
12074                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12075                _next_ordinal_to_read += 1;
12076                next_offset += envelope_size;
12077            }
12078
12079            let next_out_of_line = decoder.next_out_of_line();
12080            let handles_before = decoder.remaining_handles();
12081            if let Some((inlined, num_bytes, num_handles)) =
12082                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12083            {
12084                let member_inline_size =
12085                    <IsoPacketStatusFlag as fidl::encoding::TypeMarker>::inline_size(
12086                        decoder.context,
12087                    );
12088                if inlined != (member_inline_size <= 4) {
12089                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12090                }
12091                let inner_offset;
12092                let mut inner_depth = depth.clone();
12093                if inlined {
12094                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12095                    inner_offset = next_offset;
12096                } else {
12097                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12098                    inner_depth.increment()?;
12099                }
12100                let val_ref = self
12101                    .status_flag
12102                    .get_or_insert_with(|| fidl::new_empty!(IsoPacketStatusFlag, D));
12103                fidl::decode!(IsoPacketStatusFlag, D, val_ref, decoder, inner_offset, inner_depth)?;
12104                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12105                {
12106                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12107                }
12108                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12109                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12110                }
12111            }
12112
12113            next_offset += envelope_size;
12114            _next_ordinal_to_read += 1;
12115            if next_offset >= end_offset {
12116                return Ok(());
12117            }
12118
12119            // Decode unknown envelopes for gaps in ordinals.
12120            while _next_ordinal_to_read < 4 {
12121                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12122                _next_ordinal_to_read += 1;
12123                next_offset += envelope_size;
12124            }
12125
12126            let next_out_of_line = decoder.next_out_of_line();
12127            let handles_before = decoder.remaining_handles();
12128            if let Some((inlined, num_bytes, num_handles)) =
12129                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12130            {
12131                let member_inline_size =
12132                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12133                if inlined != (member_inline_size <= 4) {
12134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12135                }
12136                let inner_offset;
12137                let mut inner_depth = depth.clone();
12138                if inlined {
12139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12140                    inner_offset = next_offset;
12141                } else {
12142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12143                    inner_depth.increment()?;
12144                }
12145                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
12146                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12147                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12148                {
12149                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12150                }
12151                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12152                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12153                }
12154            }
12155
12156            next_offset += envelope_size;
12157
12158            // Decode the remaining unknown envelopes.
12159            while next_offset < end_offset {
12160                _next_ordinal_to_read += 1;
12161                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12162                next_offset += envelope_size;
12163            }
12164
12165            Ok(())
12166        }
12167    }
12168
12169    impl Legacy {
12170        #[inline(always)]
12171        fn max_ordinal_present(&self) -> u64 {
12172            0
12173        }
12174    }
12175
12176    impl fidl::encoding::ValueTypeMarker for Legacy {
12177        type Borrowed<'a> = &'a Self;
12178        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12179            value
12180        }
12181    }
12182
12183    unsafe impl fidl::encoding::TypeMarker for Legacy {
12184        type Owned = Self;
12185
12186        #[inline(always)]
12187        fn inline_align(_context: fidl::encoding::Context) -> usize {
12188            8
12189        }
12190
12191        #[inline(always)]
12192        fn inline_size(_context: fidl::encoding::Context) -> usize {
12193            16
12194        }
12195    }
12196
12197    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Legacy, D> for &Legacy {
12198        unsafe fn encode(
12199            self,
12200            encoder: &mut fidl::encoding::Encoder<'_, D>,
12201            offset: usize,
12202            mut depth: fidl::encoding::Depth,
12203        ) -> fidl::Result<()> {
12204            encoder.debug_check_bounds::<Legacy>(offset);
12205            // Vector header
12206            let max_ordinal: u64 = self.max_ordinal_present();
12207            encoder.write_num(max_ordinal, offset);
12208            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12209            // Calling encoder.out_of_line_offset(0) is not allowed.
12210            if max_ordinal == 0 {
12211                return Ok(());
12212            }
12213            depth.increment()?;
12214            let envelope_size = 8;
12215            let bytes_len = max_ordinal as usize * envelope_size;
12216            #[allow(unused_variables)]
12217            let offset = encoder.out_of_line_offset(bytes_len);
12218            let mut _prev_end_offset: usize = 0;
12219
12220            Ok(())
12221        }
12222    }
12223
12224    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Legacy {
12225        #[inline(always)]
12226        fn new_empty() -> Self {
12227            Self::default()
12228        }
12229
12230        unsafe fn decode(
12231            &mut self,
12232            decoder: &mut fidl::encoding::Decoder<'_, D>,
12233            offset: usize,
12234            mut depth: fidl::encoding::Depth,
12235        ) -> fidl::Result<()> {
12236            decoder.debug_check_bounds::<Self>(offset);
12237            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12238                None => return Err(fidl::Error::NotNullable),
12239                Some(len) => len,
12240            };
12241            // Calling decoder.out_of_line_offset(0) is not allowed.
12242            if len == 0 {
12243                return Ok(());
12244            };
12245            depth.increment()?;
12246            let envelope_size = 8;
12247            let bytes_len = len * envelope_size;
12248            let offset = decoder.out_of_line_offset(bytes_len)?;
12249            // Decode the envelope for each type.
12250            let mut _next_ordinal_to_read = 0;
12251            let mut next_offset = offset;
12252            let end_offset = offset + bytes_len;
12253
12254            // Decode the remaining unknown envelopes.
12255            while next_offset < end_offset {
12256                _next_ordinal_to_read += 1;
12257                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12258                next_offset += envelope_size;
12259            }
12260
12261            Ok(())
12262        }
12263    }
12264
12265    impl Peer {
12266        #[inline(always)]
12267        fn max_ordinal_present(&self) -> u64 {
12268            if let Some(_) = self.periodic_advertising_interval {
12269                return 10;
12270            }
12271            if let Some(_) = self.advertising_sid {
12272                return 9;
12273            }
12274            if let Some(_) = self.last_updated {
12275                return 8;
12276            }
12277            if let Some(_) = self.bonded {
12278                return 7;
12279            }
12280            if let Some(_) = self.data {
12281                return 6;
12282            }
12283            if let Some(_) = self.name {
12284                return 5;
12285            }
12286            if let Some(_) = self.advertising_data {
12287                return 4;
12288            }
12289            if let Some(_) = self.rssi {
12290                return 3;
12291            }
12292            if let Some(_) = self.connectable {
12293                return 2;
12294            }
12295            if let Some(_) = self.id {
12296                return 1;
12297            }
12298            0
12299        }
12300    }
12301
12302    impl fidl::encoding::ValueTypeMarker for Peer {
12303        type Borrowed<'a> = &'a Self;
12304        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12305            value
12306        }
12307    }
12308
12309    unsafe impl fidl::encoding::TypeMarker for Peer {
12310        type Owned = Self;
12311
12312        #[inline(always)]
12313        fn inline_align(_context: fidl::encoding::Context) -> usize {
12314            8
12315        }
12316
12317        #[inline(always)]
12318        fn inline_size(_context: fidl::encoding::Context) -> usize {
12319            16
12320        }
12321    }
12322
12323    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
12324        unsafe fn encode(
12325            self,
12326            encoder: &mut fidl::encoding::Encoder<'_, D>,
12327            offset: usize,
12328            mut depth: fidl::encoding::Depth,
12329        ) -> fidl::Result<()> {
12330            encoder.debug_check_bounds::<Peer>(offset);
12331            // Vector header
12332            let max_ordinal: u64 = self.max_ordinal_present();
12333            encoder.write_num(max_ordinal, offset);
12334            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12335            // Calling encoder.out_of_line_offset(0) is not allowed.
12336            if max_ordinal == 0 {
12337                return Ok(());
12338            }
12339            depth.increment()?;
12340            let envelope_size = 8;
12341            let bytes_len = max_ordinal as usize * envelope_size;
12342            #[allow(unused_variables)]
12343            let offset = encoder.out_of_line_offset(bytes_len);
12344            let mut _prev_end_offset: usize = 0;
12345            if 1 > max_ordinal {
12346                return Ok(());
12347            }
12348
12349            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12350            // are envelope_size bytes.
12351            let cur_offset: usize = (1 - 1) * envelope_size;
12352
12353            // Zero reserved fields.
12354            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12355
12356            // Safety:
12357            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12358            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12359            //   envelope_size bytes, there is always sufficient room.
12360            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
12361            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
12362            encoder, offset + cur_offset, depth
12363        )?;
12364
12365            _prev_end_offset = cur_offset + envelope_size;
12366            if 2 > max_ordinal {
12367                return Ok(());
12368            }
12369
12370            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12371            // are envelope_size bytes.
12372            let cur_offset: usize = (2 - 1) * envelope_size;
12373
12374            // Zero reserved fields.
12375            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12376
12377            // Safety:
12378            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12379            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12380            //   envelope_size bytes, there is always sufficient room.
12381            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12382                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12383                encoder,
12384                offset + cur_offset,
12385                depth,
12386            )?;
12387
12388            _prev_end_offset = cur_offset + envelope_size;
12389            if 3 > max_ordinal {
12390                return Ok(());
12391            }
12392
12393            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12394            // are envelope_size bytes.
12395            let cur_offset: usize = (3 - 1) * envelope_size;
12396
12397            // Zero reserved fields.
12398            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12399
12400            // Safety:
12401            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12402            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12403            //   envelope_size bytes, there is always sufficient room.
12404            fidl::encoding::encode_in_envelope_optional::<i8, D>(
12405                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12406                encoder,
12407                offset + cur_offset,
12408                depth,
12409            )?;
12410
12411            _prev_end_offset = cur_offset + envelope_size;
12412            if 4 > max_ordinal {
12413                return Ok(());
12414            }
12415
12416            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12417            // are envelope_size bytes.
12418            let cur_offset: usize = (4 - 1) * envelope_size;
12419
12420            // Zero reserved fields.
12421            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12422
12423            // Safety:
12424            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12425            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12426            //   envelope_size bytes, there is always sufficient room.
12427            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
12428                self.advertising_data
12429                    .as_ref()
12430                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
12431                encoder,
12432                offset + cur_offset,
12433                depth,
12434            )?;
12435
12436            _prev_end_offset = cur_offset + envelope_size;
12437            if 5 > max_ordinal {
12438                return Ok(());
12439            }
12440
12441            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12442            // are envelope_size bytes.
12443            let cur_offset: usize = (5 - 1) * envelope_size;
12444
12445            // Zero reserved fields.
12446            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12447
12448            // Safety:
12449            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12450            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12451            //   envelope_size bytes, there is always sufficient room.
12452            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
12453                self.name.as_ref().map(
12454                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
12455                ),
12456                encoder,
12457                offset + cur_offset,
12458                depth,
12459            )?;
12460
12461            _prev_end_offset = cur_offset + envelope_size;
12462            if 6 > max_ordinal {
12463                return Ok(());
12464            }
12465
12466            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12467            // are envelope_size bytes.
12468            let cur_offset: usize = (6 - 1) * envelope_size;
12469
12470            // Zero reserved fields.
12471            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12472
12473            // Safety:
12474            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12475            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12476            //   envelope_size bytes, there is always sufficient room.
12477            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
12478                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
12479                encoder,
12480                offset + cur_offset,
12481                depth,
12482            )?;
12483
12484            _prev_end_offset = cur_offset + envelope_size;
12485            if 7 > max_ordinal {
12486                return Ok(());
12487            }
12488
12489            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12490            // are envelope_size bytes.
12491            let cur_offset: usize = (7 - 1) * envelope_size;
12492
12493            // Zero reserved fields.
12494            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12495
12496            // Safety:
12497            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12498            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12499            //   envelope_size bytes, there is always sufficient room.
12500            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12501                self.bonded.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12502                encoder,
12503                offset + cur_offset,
12504                depth,
12505            )?;
12506
12507            _prev_end_offset = cur_offset + envelope_size;
12508            if 8 > max_ordinal {
12509                return Ok(());
12510            }
12511
12512            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12513            // are envelope_size bytes.
12514            let cur_offset: usize = (8 - 1) * envelope_size;
12515
12516            // Zero reserved fields.
12517            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12518
12519            // Safety:
12520            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12521            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12522            //   envelope_size bytes, there is always sufficient room.
12523            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12524                self.last_updated.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12525                encoder,
12526                offset + cur_offset,
12527                depth,
12528            )?;
12529
12530            _prev_end_offset = cur_offset + envelope_size;
12531            if 9 > max_ordinal {
12532                return Ok(());
12533            }
12534
12535            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12536            // are envelope_size bytes.
12537            let cur_offset: usize = (9 - 1) * envelope_size;
12538
12539            // Zero reserved fields.
12540            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12541
12542            // Safety:
12543            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12544            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12545            //   envelope_size bytes, there is always sufficient room.
12546            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12547                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12548                encoder,
12549                offset + cur_offset,
12550                depth,
12551            )?;
12552
12553            _prev_end_offset = cur_offset + envelope_size;
12554            if 10 > max_ordinal {
12555                return Ok(());
12556            }
12557
12558            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12559            // are envelope_size bytes.
12560            let cur_offset: usize = (10 - 1) * envelope_size;
12561
12562            // Zero reserved fields.
12563            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12564
12565            // Safety:
12566            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12567            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12568            //   envelope_size bytes, there is always sufficient room.
12569            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12570                self.periodic_advertising_interval
12571                    .as_ref()
12572                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12573                encoder,
12574                offset + cur_offset,
12575                depth,
12576            )?;
12577
12578            _prev_end_offset = cur_offset + envelope_size;
12579
12580            Ok(())
12581        }
12582    }
12583
12584    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
12585        #[inline(always)]
12586        fn new_empty() -> Self {
12587            Self::default()
12588        }
12589
12590        unsafe fn decode(
12591            &mut self,
12592            decoder: &mut fidl::encoding::Decoder<'_, D>,
12593            offset: usize,
12594            mut depth: fidl::encoding::Depth,
12595        ) -> fidl::Result<()> {
12596            decoder.debug_check_bounds::<Self>(offset);
12597            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12598                None => return Err(fidl::Error::NotNullable),
12599                Some(len) => len,
12600            };
12601            // Calling decoder.out_of_line_offset(0) is not allowed.
12602            if len == 0 {
12603                return Ok(());
12604            };
12605            depth.increment()?;
12606            let envelope_size = 8;
12607            let bytes_len = len * envelope_size;
12608            let offset = decoder.out_of_line_offset(bytes_len)?;
12609            // Decode the envelope for each type.
12610            let mut _next_ordinal_to_read = 0;
12611            let mut next_offset = offset;
12612            let end_offset = offset + bytes_len;
12613            _next_ordinal_to_read += 1;
12614            if next_offset >= end_offset {
12615                return Ok(());
12616            }
12617
12618            // Decode unknown envelopes for gaps in ordinals.
12619            while _next_ordinal_to_read < 1 {
12620                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12621                _next_ordinal_to_read += 1;
12622                next_offset += envelope_size;
12623            }
12624
12625            let next_out_of_line = decoder.next_out_of_line();
12626            let handles_before = decoder.remaining_handles();
12627            if let Some((inlined, num_bytes, num_handles)) =
12628                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12629            {
12630                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12631                if inlined != (member_inline_size <= 4) {
12632                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12633                }
12634                let inner_offset;
12635                let mut inner_depth = depth.clone();
12636                if inlined {
12637                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12638                    inner_offset = next_offset;
12639                } else {
12640                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12641                    inner_depth.increment()?;
12642                }
12643                let val_ref = self.id.get_or_insert_with(|| {
12644                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
12645                });
12646                fidl::decode!(
12647                    fidl_fuchsia_bluetooth__common::PeerId,
12648                    D,
12649                    val_ref,
12650                    decoder,
12651                    inner_offset,
12652                    inner_depth
12653                )?;
12654                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12655                {
12656                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12657                }
12658                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12659                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12660                }
12661            }
12662
12663            next_offset += envelope_size;
12664            _next_ordinal_to_read += 1;
12665            if next_offset >= end_offset {
12666                return Ok(());
12667            }
12668
12669            // Decode unknown envelopes for gaps in ordinals.
12670            while _next_ordinal_to_read < 2 {
12671                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12672                _next_ordinal_to_read += 1;
12673                next_offset += envelope_size;
12674            }
12675
12676            let next_out_of_line = decoder.next_out_of_line();
12677            let handles_before = decoder.remaining_handles();
12678            if let Some((inlined, num_bytes, num_handles)) =
12679                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12680            {
12681                let member_inline_size =
12682                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12683                if inlined != (member_inline_size <= 4) {
12684                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12685                }
12686                let inner_offset;
12687                let mut inner_depth = depth.clone();
12688                if inlined {
12689                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12690                    inner_offset = next_offset;
12691                } else {
12692                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12693                    inner_depth.increment()?;
12694                }
12695                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
12696                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12697                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12698                {
12699                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12700                }
12701                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12702                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12703                }
12704            }
12705
12706            next_offset += envelope_size;
12707            _next_ordinal_to_read += 1;
12708            if next_offset >= end_offset {
12709                return Ok(());
12710            }
12711
12712            // Decode unknown envelopes for gaps in ordinals.
12713            while _next_ordinal_to_read < 3 {
12714                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12715                _next_ordinal_to_read += 1;
12716                next_offset += envelope_size;
12717            }
12718
12719            let next_out_of_line = decoder.next_out_of_line();
12720            let handles_before = decoder.remaining_handles();
12721            if let Some((inlined, num_bytes, num_handles)) =
12722                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12723            {
12724                let member_inline_size =
12725                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12726                if inlined != (member_inline_size <= 4) {
12727                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12728                }
12729                let inner_offset;
12730                let mut inner_depth = depth.clone();
12731                if inlined {
12732                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12733                    inner_offset = next_offset;
12734                } else {
12735                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12736                    inner_depth.increment()?;
12737                }
12738                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
12739                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
12740                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12741                {
12742                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12743                }
12744                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12745                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12746                }
12747            }
12748
12749            next_offset += envelope_size;
12750            _next_ordinal_to_read += 1;
12751            if next_offset >= end_offset {
12752                return Ok(());
12753            }
12754
12755            // Decode unknown envelopes for gaps in ordinals.
12756            while _next_ordinal_to_read < 4 {
12757                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12758                _next_ordinal_to_read += 1;
12759                next_offset += envelope_size;
12760            }
12761
12762            let next_out_of_line = decoder.next_out_of_line();
12763            let handles_before = decoder.remaining_handles();
12764            if let Some((inlined, num_bytes, num_handles)) =
12765                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12766            {
12767                let member_inline_size =
12768                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12769                if inlined != (member_inline_size <= 4) {
12770                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12771                }
12772                let inner_offset;
12773                let mut inner_depth = depth.clone();
12774                if inlined {
12775                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12776                    inner_offset = next_offset;
12777                } else {
12778                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12779                    inner_depth.increment()?;
12780                }
12781                let val_ref = self
12782                    .advertising_data
12783                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
12784                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
12785                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12786                {
12787                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12788                }
12789                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12790                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12791                }
12792            }
12793
12794            next_offset += envelope_size;
12795            _next_ordinal_to_read += 1;
12796            if next_offset >= end_offset {
12797                return Ok(());
12798            }
12799
12800            // Decode unknown envelopes for gaps in ordinals.
12801            while _next_ordinal_to_read < 5 {
12802                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12803                _next_ordinal_to_read += 1;
12804                next_offset += envelope_size;
12805            }
12806
12807            let next_out_of_line = decoder.next_out_of_line();
12808            let handles_before = decoder.remaining_handles();
12809            if let Some((inlined, num_bytes, num_handles)) =
12810                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12811            {
12812                let member_inline_size =
12813                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
12814                        decoder.context,
12815                    );
12816                if inlined != (member_inline_size <= 4) {
12817                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12818                }
12819                let inner_offset;
12820                let mut inner_depth = depth.clone();
12821                if inlined {
12822                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12823                    inner_offset = next_offset;
12824                } else {
12825                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12826                    inner_depth.increment()?;
12827                }
12828                let val_ref = self
12829                    .name
12830                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
12831                fidl::decode!(
12832                    fidl::encoding::BoundedString<248>,
12833                    D,
12834                    val_ref,
12835                    decoder,
12836                    inner_offset,
12837                    inner_depth
12838                )?;
12839                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12840                {
12841                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12842                }
12843                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12844                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12845                }
12846            }
12847
12848            next_offset += envelope_size;
12849            _next_ordinal_to_read += 1;
12850            if next_offset >= end_offset {
12851                return Ok(());
12852            }
12853
12854            // Decode unknown envelopes for gaps in ordinals.
12855            while _next_ordinal_to_read < 6 {
12856                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12857                _next_ordinal_to_read += 1;
12858                next_offset += envelope_size;
12859            }
12860
12861            let next_out_of_line = decoder.next_out_of_line();
12862            let handles_before = decoder.remaining_handles();
12863            if let Some((inlined, num_bytes, num_handles)) =
12864                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12865            {
12866                let member_inline_size =
12867                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12868                if inlined != (member_inline_size <= 4) {
12869                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12870                }
12871                let inner_offset;
12872                let mut inner_depth = depth.clone();
12873                if inlined {
12874                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12875                    inner_offset = next_offset;
12876                } else {
12877                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12878                    inner_depth.increment()?;
12879                }
12880                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
12881                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
12882                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12883                {
12884                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12885                }
12886                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12887                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12888                }
12889            }
12890
12891            next_offset += envelope_size;
12892            _next_ordinal_to_read += 1;
12893            if next_offset >= end_offset {
12894                return Ok(());
12895            }
12896
12897            // Decode unknown envelopes for gaps in ordinals.
12898            while _next_ordinal_to_read < 7 {
12899                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12900                _next_ordinal_to_read += 1;
12901                next_offset += envelope_size;
12902            }
12903
12904            let next_out_of_line = decoder.next_out_of_line();
12905            let handles_before = decoder.remaining_handles();
12906            if let Some((inlined, num_bytes, num_handles)) =
12907                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12908            {
12909                let member_inline_size =
12910                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12911                if inlined != (member_inline_size <= 4) {
12912                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12913                }
12914                let inner_offset;
12915                let mut inner_depth = depth.clone();
12916                if inlined {
12917                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12918                    inner_offset = next_offset;
12919                } else {
12920                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12921                    inner_depth.increment()?;
12922                }
12923                let val_ref = self.bonded.get_or_insert_with(|| fidl::new_empty!(bool, D));
12924                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12925                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12926                {
12927                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12928                }
12929                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12930                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12931                }
12932            }
12933
12934            next_offset += envelope_size;
12935            _next_ordinal_to_read += 1;
12936            if next_offset >= end_offset {
12937                return Ok(());
12938            }
12939
12940            // Decode unknown envelopes for gaps in ordinals.
12941            while _next_ordinal_to_read < 8 {
12942                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12943                _next_ordinal_to_read += 1;
12944                next_offset += envelope_size;
12945            }
12946
12947            let next_out_of_line = decoder.next_out_of_line();
12948            let handles_before = decoder.remaining_handles();
12949            if let Some((inlined, num_bytes, num_handles)) =
12950                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12951            {
12952                let member_inline_size =
12953                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12954                if inlined != (member_inline_size <= 4) {
12955                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12956                }
12957                let inner_offset;
12958                let mut inner_depth = depth.clone();
12959                if inlined {
12960                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12961                    inner_offset = next_offset;
12962                } else {
12963                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12964                    inner_depth.increment()?;
12965                }
12966                let val_ref = self.last_updated.get_or_insert_with(|| fidl::new_empty!(i64, D));
12967                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12968                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12969                {
12970                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12971                }
12972                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12973                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12974                }
12975            }
12976
12977            next_offset += envelope_size;
12978            _next_ordinal_to_read += 1;
12979            if next_offset >= end_offset {
12980                return Ok(());
12981            }
12982
12983            // Decode unknown envelopes for gaps in ordinals.
12984            while _next_ordinal_to_read < 9 {
12985                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12986                _next_ordinal_to_read += 1;
12987                next_offset += envelope_size;
12988            }
12989
12990            let next_out_of_line = decoder.next_out_of_line();
12991            let handles_before = decoder.remaining_handles();
12992            if let Some((inlined, num_bytes, num_handles)) =
12993                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12994            {
12995                let member_inline_size =
12996                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12997                if inlined != (member_inline_size <= 4) {
12998                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12999                }
13000                let inner_offset;
13001                let mut inner_depth = depth.clone();
13002                if inlined {
13003                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13004                    inner_offset = next_offset;
13005                } else {
13006                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13007                    inner_depth.increment()?;
13008                }
13009                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
13010                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13011                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13012                {
13013                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13014                }
13015                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13016                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13017                }
13018            }
13019
13020            next_offset += envelope_size;
13021            _next_ordinal_to_read += 1;
13022            if next_offset >= end_offset {
13023                return Ok(());
13024            }
13025
13026            // Decode unknown envelopes for gaps in ordinals.
13027            while _next_ordinal_to_read < 10 {
13028                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13029                _next_ordinal_to_read += 1;
13030                next_offset += envelope_size;
13031            }
13032
13033            let next_out_of_line = decoder.next_out_of_line();
13034            let handles_before = decoder.remaining_handles();
13035            if let Some((inlined, num_bytes, num_handles)) =
13036                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13037            {
13038                let member_inline_size =
13039                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13040                if inlined != (member_inline_size <= 4) {
13041                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13042                }
13043                let inner_offset;
13044                let mut inner_depth = depth.clone();
13045                if inlined {
13046                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13047                    inner_offset = next_offset;
13048                } else {
13049                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13050                    inner_depth.increment()?;
13051                }
13052                let val_ref = self
13053                    .periodic_advertising_interval
13054                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
13055                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13056                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13057                {
13058                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13059                }
13060                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13061                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13062                }
13063            }
13064
13065            next_offset += envelope_size;
13066
13067            // Decode the remaining unknown envelopes.
13068            while next_offset < end_offset {
13069                _next_ordinal_to_read += 1;
13070                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13071                next_offset += envelope_size;
13072            }
13073
13074            Ok(())
13075        }
13076    }
13077
13078    impl PeriodicAdvertisingReport {
13079        #[inline(always)]
13080        fn max_ordinal_present(&self) -> u64 {
13081            if let Some(_) = self.timestamp {
13082                return 5;
13083            }
13084            if let Some(_) = self.subevent {
13085                return 4;
13086            }
13087            if let Some(_) = self.event_counter {
13088                return 3;
13089            }
13090            if let Some(_) = self.data {
13091                return 2;
13092            }
13093            if let Some(_) = self.rssi {
13094                return 1;
13095            }
13096            0
13097        }
13098    }
13099
13100    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingReport {
13101        type Borrowed<'a> = &'a Self;
13102        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13103            value
13104        }
13105    }
13106
13107    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingReport {
13108        type Owned = Self;
13109
13110        #[inline(always)]
13111        fn inline_align(_context: fidl::encoding::Context) -> usize {
13112            8
13113        }
13114
13115        #[inline(always)]
13116        fn inline_size(_context: fidl::encoding::Context) -> usize {
13117            16
13118        }
13119    }
13120
13121    unsafe impl<D: fidl::encoding::ResourceDialect>
13122        fidl::encoding::Encode<PeriodicAdvertisingReport, D> for &PeriodicAdvertisingReport
13123    {
13124        unsafe fn encode(
13125            self,
13126            encoder: &mut fidl::encoding::Encoder<'_, D>,
13127            offset: usize,
13128            mut depth: fidl::encoding::Depth,
13129        ) -> fidl::Result<()> {
13130            encoder.debug_check_bounds::<PeriodicAdvertisingReport>(offset);
13131            // Vector header
13132            let max_ordinal: u64 = self.max_ordinal_present();
13133            encoder.write_num(max_ordinal, offset);
13134            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13135            // Calling encoder.out_of_line_offset(0) is not allowed.
13136            if max_ordinal == 0 {
13137                return Ok(());
13138            }
13139            depth.increment()?;
13140            let envelope_size = 8;
13141            let bytes_len = max_ordinal as usize * envelope_size;
13142            #[allow(unused_variables)]
13143            let offset = encoder.out_of_line_offset(bytes_len);
13144            let mut _prev_end_offset: usize = 0;
13145            if 1 > max_ordinal {
13146                return Ok(());
13147            }
13148
13149            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13150            // are envelope_size bytes.
13151            let cur_offset: usize = (1 - 1) * envelope_size;
13152
13153            // Zero reserved fields.
13154            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13155
13156            // Safety:
13157            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13158            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13159            //   envelope_size bytes, there is always sufficient room.
13160            fidl::encoding::encode_in_envelope_optional::<i8, D>(
13161                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13162                encoder,
13163                offset + cur_offset,
13164                depth,
13165            )?;
13166
13167            _prev_end_offset = cur_offset + envelope_size;
13168            if 2 > max_ordinal {
13169                return Ok(());
13170            }
13171
13172            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13173            // are envelope_size bytes.
13174            let cur_offset: usize = (2 - 1) * envelope_size;
13175
13176            // Zero reserved fields.
13177            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13178
13179            // Safety:
13180            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13181            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13182            //   envelope_size bytes, there is always sufficient room.
13183            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
13184                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
13185                encoder,
13186                offset + cur_offset,
13187                depth,
13188            )?;
13189
13190            _prev_end_offset = cur_offset + envelope_size;
13191            if 3 > max_ordinal {
13192                return Ok(());
13193            }
13194
13195            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13196            // are envelope_size bytes.
13197            let cur_offset: usize = (3 - 1) * envelope_size;
13198
13199            // Zero reserved fields.
13200            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13201
13202            // Safety:
13203            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13204            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13205            //   envelope_size bytes, there is always sufficient room.
13206            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13207                self.event_counter.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13208                encoder,
13209                offset + cur_offset,
13210                depth,
13211            )?;
13212
13213            _prev_end_offset = cur_offset + envelope_size;
13214            if 4 > max_ordinal {
13215                return Ok(());
13216            }
13217
13218            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13219            // are envelope_size bytes.
13220            let cur_offset: usize = (4 - 1) * envelope_size;
13221
13222            // Zero reserved fields.
13223            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13224
13225            // Safety:
13226            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13227            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13228            //   envelope_size bytes, there is always sufficient room.
13229            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13230                self.subevent.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13231                encoder,
13232                offset + cur_offset,
13233                depth,
13234            )?;
13235
13236            _prev_end_offset = cur_offset + envelope_size;
13237            if 5 > max_ordinal {
13238                return Ok(());
13239            }
13240
13241            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13242            // are envelope_size bytes.
13243            let cur_offset: usize = (5 - 1) * envelope_size;
13244
13245            // Zero reserved fields.
13246            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13247
13248            // Safety:
13249            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13250            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13251            //   envelope_size bytes, there is always sufficient room.
13252            fidl::encoding::encode_in_envelope_optional::<i64, D>(
13253                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13254                encoder,
13255                offset + cur_offset,
13256                depth,
13257            )?;
13258
13259            _prev_end_offset = cur_offset + envelope_size;
13260
13261            Ok(())
13262        }
13263    }
13264
13265    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13266        for PeriodicAdvertisingReport
13267    {
13268        #[inline(always)]
13269        fn new_empty() -> Self {
13270            Self::default()
13271        }
13272
13273        unsafe fn decode(
13274            &mut self,
13275            decoder: &mut fidl::encoding::Decoder<'_, D>,
13276            offset: usize,
13277            mut depth: fidl::encoding::Depth,
13278        ) -> fidl::Result<()> {
13279            decoder.debug_check_bounds::<Self>(offset);
13280            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13281                None => return Err(fidl::Error::NotNullable),
13282                Some(len) => len,
13283            };
13284            // Calling decoder.out_of_line_offset(0) is not allowed.
13285            if len == 0 {
13286                return Ok(());
13287            };
13288            depth.increment()?;
13289            let envelope_size = 8;
13290            let bytes_len = len * envelope_size;
13291            let offset = decoder.out_of_line_offset(bytes_len)?;
13292            // Decode the envelope for each type.
13293            let mut _next_ordinal_to_read = 0;
13294            let mut next_offset = offset;
13295            let end_offset = offset + bytes_len;
13296            _next_ordinal_to_read += 1;
13297            if next_offset >= end_offset {
13298                return Ok(());
13299            }
13300
13301            // Decode unknown envelopes for gaps in ordinals.
13302            while _next_ordinal_to_read < 1 {
13303                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13304                _next_ordinal_to_read += 1;
13305                next_offset += envelope_size;
13306            }
13307
13308            let next_out_of_line = decoder.next_out_of_line();
13309            let handles_before = decoder.remaining_handles();
13310            if let Some((inlined, num_bytes, num_handles)) =
13311                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13312            {
13313                let member_inline_size =
13314                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13315                if inlined != (member_inline_size <= 4) {
13316                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13317                }
13318                let inner_offset;
13319                let mut inner_depth = depth.clone();
13320                if inlined {
13321                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13322                    inner_offset = next_offset;
13323                } else {
13324                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13325                    inner_depth.increment()?;
13326                }
13327                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13328                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13329                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13330                {
13331                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13332                }
13333                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13334                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13335                }
13336            }
13337
13338            next_offset += envelope_size;
13339            _next_ordinal_to_read += 1;
13340            if next_offset >= end_offset {
13341                return Ok(());
13342            }
13343
13344            // Decode unknown envelopes for gaps in ordinals.
13345            while _next_ordinal_to_read < 2 {
13346                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13347                _next_ordinal_to_read += 1;
13348                next_offset += envelope_size;
13349            }
13350
13351            let next_out_of_line = decoder.next_out_of_line();
13352            let handles_before = decoder.remaining_handles();
13353            if let Some((inlined, num_bytes, num_handles)) =
13354                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13355            {
13356                let member_inline_size =
13357                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13358                if inlined != (member_inline_size <= 4) {
13359                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13360                }
13361                let inner_offset;
13362                let mut inner_depth = depth.clone();
13363                if inlined {
13364                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13365                    inner_offset = next_offset;
13366                } else {
13367                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13368                    inner_depth.increment()?;
13369                }
13370                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13371                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13373                {
13374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13375                }
13376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13378                }
13379            }
13380
13381            next_offset += envelope_size;
13382            _next_ordinal_to_read += 1;
13383            if next_offset >= end_offset {
13384                return Ok(());
13385            }
13386
13387            // Decode unknown envelopes for gaps in ordinals.
13388            while _next_ordinal_to_read < 3 {
13389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13390                _next_ordinal_to_read += 1;
13391                next_offset += envelope_size;
13392            }
13393
13394            let next_out_of_line = decoder.next_out_of_line();
13395            let handles_before = decoder.remaining_handles();
13396            if let Some((inlined, num_bytes, num_handles)) =
13397                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13398            {
13399                let member_inline_size =
13400                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13401                if inlined != (member_inline_size <= 4) {
13402                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13403                }
13404                let inner_offset;
13405                let mut inner_depth = depth.clone();
13406                if inlined {
13407                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13408                    inner_offset = next_offset;
13409                } else {
13410                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13411                    inner_depth.increment()?;
13412                }
13413                let val_ref = self.event_counter.get_or_insert_with(|| fidl::new_empty!(u16, D));
13414                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13416                {
13417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13418                }
13419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13421                }
13422            }
13423
13424            next_offset += envelope_size;
13425            _next_ordinal_to_read += 1;
13426            if next_offset >= end_offset {
13427                return Ok(());
13428            }
13429
13430            // Decode unknown envelopes for gaps in ordinals.
13431            while _next_ordinal_to_read < 4 {
13432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13433                _next_ordinal_to_read += 1;
13434                next_offset += envelope_size;
13435            }
13436
13437            let next_out_of_line = decoder.next_out_of_line();
13438            let handles_before = decoder.remaining_handles();
13439            if let Some((inlined, num_bytes, num_handles)) =
13440                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13441            {
13442                let member_inline_size =
13443                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13444                if inlined != (member_inline_size <= 4) {
13445                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13446                }
13447                let inner_offset;
13448                let mut inner_depth = depth.clone();
13449                if inlined {
13450                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13451                    inner_offset = next_offset;
13452                } else {
13453                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13454                    inner_depth.increment()?;
13455                }
13456                let val_ref = self.subevent.get_or_insert_with(|| fidl::new_empty!(u8, D));
13457                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13458                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13459                {
13460                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13461                }
13462                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13463                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13464                }
13465            }
13466
13467            next_offset += envelope_size;
13468            _next_ordinal_to_read += 1;
13469            if next_offset >= end_offset {
13470                return Ok(());
13471            }
13472
13473            // Decode unknown envelopes for gaps in ordinals.
13474            while _next_ordinal_to_read < 5 {
13475                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13476                _next_ordinal_to_read += 1;
13477                next_offset += envelope_size;
13478            }
13479
13480            let next_out_of_line = decoder.next_out_of_line();
13481            let handles_before = decoder.remaining_handles();
13482            if let Some((inlined, num_bytes, num_handles)) =
13483                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13484            {
13485                let member_inline_size =
13486                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13487                if inlined != (member_inline_size <= 4) {
13488                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13489                }
13490                let inner_offset;
13491                let mut inner_depth = depth.clone();
13492                if inlined {
13493                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13494                    inner_offset = next_offset;
13495                } else {
13496                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13497                    inner_depth.increment()?;
13498                }
13499                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13500                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13501                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13502                {
13503                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13504                }
13505                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13506                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13507                }
13508            }
13509
13510            next_offset += envelope_size;
13511
13512            // Decode the remaining unknown envelopes.
13513            while next_offset < end_offset {
13514                _next_ordinal_to_read += 1;
13515                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13516                next_offset += envelope_size;
13517            }
13518
13519            Ok(())
13520        }
13521    }
13522
13523    impl PeriodicAdvertisingSyncConfiguration {
13524        #[inline(always)]
13525        fn max_ordinal_present(&self) -> u64 {
13526            if let Some(_) = self.filter_duplicates {
13527                return 1;
13528            }
13529            0
13530        }
13531    }
13532
13533    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncConfiguration {
13534        type Borrowed<'a> = &'a Self;
13535        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13536            value
13537        }
13538    }
13539
13540    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncConfiguration {
13541        type Owned = Self;
13542
13543        #[inline(always)]
13544        fn inline_align(_context: fidl::encoding::Context) -> usize {
13545            8
13546        }
13547
13548        #[inline(always)]
13549        fn inline_size(_context: fidl::encoding::Context) -> usize {
13550            16
13551        }
13552    }
13553
13554    unsafe impl<D: fidl::encoding::ResourceDialect>
13555        fidl::encoding::Encode<PeriodicAdvertisingSyncConfiguration, D>
13556        for &PeriodicAdvertisingSyncConfiguration
13557    {
13558        unsafe fn encode(
13559            self,
13560            encoder: &mut fidl::encoding::Encoder<'_, D>,
13561            offset: usize,
13562            mut depth: fidl::encoding::Depth,
13563        ) -> fidl::Result<()> {
13564            encoder.debug_check_bounds::<PeriodicAdvertisingSyncConfiguration>(offset);
13565            // Vector header
13566            let max_ordinal: u64 = self.max_ordinal_present();
13567            encoder.write_num(max_ordinal, offset);
13568            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13569            // Calling encoder.out_of_line_offset(0) is not allowed.
13570            if max_ordinal == 0 {
13571                return Ok(());
13572            }
13573            depth.increment()?;
13574            let envelope_size = 8;
13575            let bytes_len = max_ordinal as usize * envelope_size;
13576            #[allow(unused_variables)]
13577            let offset = encoder.out_of_line_offset(bytes_len);
13578            let mut _prev_end_offset: usize = 0;
13579            if 1 > max_ordinal {
13580                return Ok(());
13581            }
13582
13583            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13584            // are envelope_size bytes.
13585            let cur_offset: usize = (1 - 1) * envelope_size;
13586
13587            // Zero reserved fields.
13588            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13589
13590            // Safety:
13591            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13592            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13593            //   envelope_size bytes, there is always sufficient room.
13594            fidl::encoding::encode_in_envelope_optional::<bool, D>(
13595                self.filter_duplicates
13596                    .as_ref()
13597                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13598                encoder,
13599                offset + cur_offset,
13600                depth,
13601            )?;
13602
13603            _prev_end_offset = cur_offset + envelope_size;
13604
13605            Ok(())
13606        }
13607    }
13608
13609    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13610        for PeriodicAdvertisingSyncConfiguration
13611    {
13612        #[inline(always)]
13613        fn new_empty() -> Self {
13614            Self::default()
13615        }
13616
13617        unsafe fn decode(
13618            &mut self,
13619            decoder: &mut fidl::encoding::Decoder<'_, D>,
13620            offset: usize,
13621            mut depth: fidl::encoding::Depth,
13622        ) -> fidl::Result<()> {
13623            decoder.debug_check_bounds::<Self>(offset);
13624            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13625                None => return Err(fidl::Error::NotNullable),
13626                Some(len) => len,
13627            };
13628            // Calling decoder.out_of_line_offset(0) is not allowed.
13629            if len == 0 {
13630                return Ok(());
13631            };
13632            depth.increment()?;
13633            let envelope_size = 8;
13634            let bytes_len = len * envelope_size;
13635            let offset = decoder.out_of_line_offset(bytes_len)?;
13636            // Decode the envelope for each type.
13637            let mut _next_ordinal_to_read = 0;
13638            let mut next_offset = offset;
13639            let end_offset = offset + bytes_len;
13640            _next_ordinal_to_read += 1;
13641            if next_offset >= end_offset {
13642                return Ok(());
13643            }
13644
13645            // Decode unknown envelopes for gaps in ordinals.
13646            while _next_ordinal_to_read < 1 {
13647                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13648                _next_ordinal_to_read += 1;
13649                next_offset += envelope_size;
13650            }
13651
13652            let next_out_of_line = decoder.next_out_of_line();
13653            let handles_before = decoder.remaining_handles();
13654            if let Some((inlined, num_bytes, num_handles)) =
13655                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13656            {
13657                let member_inline_size =
13658                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13659                if inlined != (member_inline_size <= 4) {
13660                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13661                }
13662                let inner_offset;
13663                let mut inner_depth = depth.clone();
13664                if inlined {
13665                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13666                    inner_offset = next_offset;
13667                } else {
13668                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13669                    inner_depth.increment()?;
13670                }
13671                let val_ref =
13672                    self.filter_duplicates.get_or_insert_with(|| fidl::new_empty!(bool, D));
13673                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13674                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13675                {
13676                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13677                }
13678                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13679                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13680                }
13681            }
13682
13683            next_offset += envelope_size;
13684
13685            // Decode the remaining unknown envelopes.
13686            while next_offset < end_offset {
13687                _next_ordinal_to_read += 1;
13688                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13689                next_offset += envelope_size;
13690            }
13691
13692            Ok(())
13693        }
13694    }
13695
13696    impl PeriodicAdvertisingSyncOnEstablishedRequest {
13697        #[inline(always)]
13698        fn max_ordinal_present(&self) -> u64 {
13699            if let Some(_) = self.periodic_advertising_interval {
13700                return 7;
13701            }
13702            if let Some(_) = self.phy {
13703                return 6;
13704            }
13705            if let Some(_) = self.advertising_sid {
13706                return 5;
13707            }
13708            if let Some(_) = self.service_data {
13709                return 4;
13710            }
13711            if let Some(_) = self.peer_id {
13712                return 3;
13713            }
13714            if let Some(_) = self.subevents_count {
13715                return 2;
13716            }
13717            if let Some(_) = self.id {
13718                return 1;
13719            }
13720            0
13721        }
13722    }
13723
13724    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
13725        type Borrowed<'a> = &'a Self;
13726        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13727            value
13728        }
13729    }
13730
13731    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
13732        type Owned = Self;
13733
13734        #[inline(always)]
13735        fn inline_align(_context: fidl::encoding::Context) -> usize {
13736            8
13737        }
13738
13739        #[inline(always)]
13740        fn inline_size(_context: fidl::encoding::Context) -> usize {
13741            16
13742        }
13743    }
13744
13745    unsafe impl<D: fidl::encoding::ResourceDialect>
13746        fidl::encoding::Encode<PeriodicAdvertisingSyncOnEstablishedRequest, D>
13747        for &PeriodicAdvertisingSyncOnEstablishedRequest
13748    {
13749        unsafe fn encode(
13750            self,
13751            encoder: &mut fidl::encoding::Encoder<'_, D>,
13752            offset: usize,
13753            mut depth: fidl::encoding::Depth,
13754        ) -> fidl::Result<()> {
13755            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnEstablishedRequest>(offset);
13756            // Vector header
13757            let max_ordinal: u64 = self.max_ordinal_present();
13758            encoder.write_num(max_ordinal, offset);
13759            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13760            // Calling encoder.out_of_line_offset(0) is not allowed.
13761            if max_ordinal == 0 {
13762                return Ok(());
13763            }
13764            depth.increment()?;
13765            let envelope_size = 8;
13766            let bytes_len = max_ordinal as usize * envelope_size;
13767            #[allow(unused_variables)]
13768            let offset = encoder.out_of_line_offset(bytes_len);
13769            let mut _prev_end_offset: usize = 0;
13770            if 1 > max_ordinal {
13771                return Ok(());
13772            }
13773
13774            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13775            // are envelope_size bytes.
13776            let cur_offset: usize = (1 - 1) * envelope_size;
13777
13778            // Zero reserved fields.
13779            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13780
13781            // Safety:
13782            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13783            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13784            //   envelope_size bytes, there is always sufficient room.
13785            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
13786                self.id
13787                    .as_ref()
13788                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
13789                encoder,
13790                offset + cur_offset,
13791                depth,
13792            )?;
13793
13794            _prev_end_offset = cur_offset + envelope_size;
13795            if 2 > max_ordinal {
13796                return Ok(());
13797            }
13798
13799            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13800            // are envelope_size bytes.
13801            let cur_offset: usize = (2 - 1) * envelope_size;
13802
13803            // Zero reserved fields.
13804            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13805
13806            // Safety:
13807            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13808            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13809            //   envelope_size bytes, there is always sufficient room.
13810            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13811                self.subevents_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13812                encoder,
13813                offset + cur_offset,
13814                depth,
13815            )?;
13816
13817            _prev_end_offset = cur_offset + envelope_size;
13818            if 3 > max_ordinal {
13819                return Ok(());
13820            }
13821
13822            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13823            // are envelope_size bytes.
13824            let cur_offset: usize = (3 - 1) * envelope_size;
13825
13826            // Zero reserved fields.
13827            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13828
13829            // Safety:
13830            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13831            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13832            //   envelope_size bytes, there is always sufficient room.
13833            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
13834            self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
13835            encoder, offset + cur_offset, depth
13836        )?;
13837
13838            _prev_end_offset = cur_offset + envelope_size;
13839            if 4 > max_ordinal {
13840                return Ok(());
13841            }
13842
13843            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13844            // are envelope_size bytes.
13845            let cur_offset: usize = (4 - 1) * envelope_size;
13846
13847            // Zero reserved fields.
13848            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13849
13850            // Safety:
13851            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13852            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13853            //   envelope_size bytes, there is always sufficient room.
13854            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13855                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13856                encoder,
13857                offset + cur_offset,
13858                depth,
13859            )?;
13860
13861            _prev_end_offset = cur_offset + envelope_size;
13862            if 5 > max_ordinal {
13863                return Ok(());
13864            }
13865
13866            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13867            // are envelope_size bytes.
13868            let cur_offset: usize = (5 - 1) * envelope_size;
13869
13870            // Zero reserved fields.
13871            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13872
13873            // Safety:
13874            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13875            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13876            //   envelope_size bytes, there is always sufficient room.
13877            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13878                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13879                encoder,
13880                offset + cur_offset,
13881                depth,
13882            )?;
13883
13884            _prev_end_offset = cur_offset + envelope_size;
13885            if 6 > max_ordinal {
13886                return Ok(());
13887            }
13888
13889            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13890            // are envelope_size bytes.
13891            let cur_offset: usize = (6 - 1) * envelope_size;
13892
13893            // Zero reserved fields.
13894            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13895
13896            // Safety:
13897            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13898            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13899            //   envelope_size bytes, there is always sufficient room.
13900            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
13901                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
13902                encoder,
13903                offset + cur_offset,
13904                depth,
13905            )?;
13906
13907            _prev_end_offset = cur_offset + envelope_size;
13908            if 7 > max_ordinal {
13909                return Ok(());
13910            }
13911
13912            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13913            // are envelope_size bytes.
13914            let cur_offset: usize = (7 - 1) * envelope_size;
13915
13916            // Zero reserved fields.
13917            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13918
13919            // Safety:
13920            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13921            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13922            //   envelope_size bytes, there is always sufficient room.
13923            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13924                self.periodic_advertising_interval
13925                    .as_ref()
13926                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13927                encoder,
13928                offset + cur_offset,
13929                depth,
13930            )?;
13931
13932            _prev_end_offset = cur_offset + envelope_size;
13933
13934            Ok(())
13935        }
13936    }
13937
13938    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13939        for PeriodicAdvertisingSyncOnEstablishedRequest
13940    {
13941        #[inline(always)]
13942        fn new_empty() -> Self {
13943            Self::default()
13944        }
13945
13946        unsafe fn decode(
13947            &mut self,
13948            decoder: &mut fidl::encoding::Decoder<'_, D>,
13949            offset: usize,
13950            mut depth: fidl::encoding::Depth,
13951        ) -> fidl::Result<()> {
13952            decoder.debug_check_bounds::<Self>(offset);
13953            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13954                None => return Err(fidl::Error::NotNullable),
13955                Some(len) => len,
13956            };
13957            // Calling decoder.out_of_line_offset(0) is not allowed.
13958            if len == 0 {
13959                return Ok(());
13960            };
13961            depth.increment()?;
13962            let envelope_size = 8;
13963            let bytes_len = len * envelope_size;
13964            let offset = decoder.out_of_line_offset(bytes_len)?;
13965            // Decode the envelope for each type.
13966            let mut _next_ordinal_to_read = 0;
13967            let mut next_offset = offset;
13968            let end_offset = offset + bytes_len;
13969            _next_ordinal_to_read += 1;
13970            if next_offset >= end_offset {
13971                return Ok(());
13972            }
13973
13974            // Decode unknown envelopes for gaps in ordinals.
13975            while _next_ordinal_to_read < 1 {
13976                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13977                _next_ordinal_to_read += 1;
13978                next_offset += envelope_size;
13979            }
13980
13981            let next_out_of_line = decoder.next_out_of_line();
13982            let handles_before = decoder.remaining_handles();
13983            if let Some((inlined, num_bytes, num_handles)) =
13984                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13985            {
13986                let member_inline_size =
13987                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
13988                        decoder.context,
13989                    );
13990                if inlined != (member_inline_size <= 4) {
13991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13992                }
13993                let inner_offset;
13994                let mut inner_depth = depth.clone();
13995                if inlined {
13996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13997                    inner_offset = next_offset;
13998                } else {
13999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14000                    inner_depth.increment()?;
14001                }
14002                let val_ref =
14003                    self.id.get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
14004                fidl::decode!(
14005                    PeriodicAdvertisingSyncId,
14006                    D,
14007                    val_ref,
14008                    decoder,
14009                    inner_offset,
14010                    inner_depth
14011                )?;
14012                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14013                {
14014                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14015                }
14016                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14017                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14018                }
14019            }
14020
14021            next_offset += envelope_size;
14022            _next_ordinal_to_read += 1;
14023            if next_offset >= end_offset {
14024                return Ok(());
14025            }
14026
14027            // Decode unknown envelopes for gaps in ordinals.
14028            while _next_ordinal_to_read < 2 {
14029                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14030                _next_ordinal_to_read += 1;
14031                next_offset += envelope_size;
14032            }
14033
14034            let next_out_of_line = decoder.next_out_of_line();
14035            let handles_before = decoder.remaining_handles();
14036            if let Some((inlined, num_bytes, num_handles)) =
14037                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14038            {
14039                let member_inline_size =
14040                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14041                if inlined != (member_inline_size <= 4) {
14042                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14043                }
14044                let inner_offset;
14045                let mut inner_depth = depth.clone();
14046                if inlined {
14047                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14048                    inner_offset = next_offset;
14049                } else {
14050                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14051                    inner_depth.increment()?;
14052                }
14053                let val_ref = self.subevents_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
14054                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14055                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14056                {
14057                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14058                }
14059                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14060                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14061                }
14062            }
14063
14064            next_offset += envelope_size;
14065            _next_ordinal_to_read += 1;
14066            if next_offset >= end_offset {
14067                return Ok(());
14068            }
14069
14070            // Decode unknown envelopes for gaps in ordinals.
14071            while _next_ordinal_to_read < 3 {
14072                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14073                _next_ordinal_to_read += 1;
14074                next_offset += envelope_size;
14075            }
14076
14077            let next_out_of_line = decoder.next_out_of_line();
14078            let handles_before = decoder.remaining_handles();
14079            if let Some((inlined, num_bytes, num_handles)) =
14080                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14081            {
14082                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14083                if inlined != (member_inline_size <= 4) {
14084                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14085                }
14086                let inner_offset;
14087                let mut inner_depth = depth.clone();
14088                if inlined {
14089                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14090                    inner_offset = next_offset;
14091                } else {
14092                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14093                    inner_depth.increment()?;
14094                }
14095                let val_ref = self.peer_id.get_or_insert_with(|| {
14096                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
14097                });
14098                fidl::decode!(
14099                    fidl_fuchsia_bluetooth__common::PeerId,
14100                    D,
14101                    val_ref,
14102                    decoder,
14103                    inner_offset,
14104                    inner_depth
14105                )?;
14106                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14107                {
14108                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14109                }
14110                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14111                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14112                }
14113            }
14114
14115            next_offset += envelope_size;
14116            _next_ordinal_to_read += 1;
14117            if next_offset >= end_offset {
14118                return Ok(());
14119            }
14120
14121            // Decode unknown envelopes for gaps in ordinals.
14122            while _next_ordinal_to_read < 4 {
14123                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14124                _next_ordinal_to_read += 1;
14125                next_offset += envelope_size;
14126            }
14127
14128            let next_out_of_line = decoder.next_out_of_line();
14129            let handles_before = decoder.remaining_handles();
14130            if let Some((inlined, num_bytes, num_handles)) =
14131                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14132            {
14133                let member_inline_size =
14134                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14135                if inlined != (member_inline_size <= 4) {
14136                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14137                }
14138                let inner_offset;
14139                let mut inner_depth = depth.clone();
14140                if inlined {
14141                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14142                    inner_offset = next_offset;
14143                } else {
14144                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14145                    inner_depth.increment()?;
14146                }
14147                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
14148                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14149                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14150                {
14151                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14152                }
14153                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14154                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14155                }
14156            }
14157
14158            next_offset += envelope_size;
14159            _next_ordinal_to_read += 1;
14160            if next_offset >= end_offset {
14161                return Ok(());
14162            }
14163
14164            // Decode unknown envelopes for gaps in ordinals.
14165            while _next_ordinal_to_read < 5 {
14166                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14167                _next_ordinal_to_read += 1;
14168                next_offset += envelope_size;
14169            }
14170
14171            let next_out_of_line = decoder.next_out_of_line();
14172            let handles_before = decoder.remaining_handles();
14173            if let Some((inlined, num_bytes, num_handles)) =
14174                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14175            {
14176                let member_inline_size =
14177                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14178                if inlined != (member_inline_size <= 4) {
14179                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14180                }
14181                let inner_offset;
14182                let mut inner_depth = depth.clone();
14183                if inlined {
14184                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14185                    inner_offset = next_offset;
14186                } else {
14187                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14188                    inner_depth.increment()?;
14189                }
14190                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
14191                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14192                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14193                {
14194                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14195                }
14196                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14197                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14198                }
14199            }
14200
14201            next_offset += envelope_size;
14202            _next_ordinal_to_read += 1;
14203            if next_offset >= end_offset {
14204                return Ok(());
14205            }
14206
14207            // Decode unknown envelopes for gaps in ordinals.
14208            while _next_ordinal_to_read < 6 {
14209                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14210                _next_ordinal_to_read += 1;
14211                next_offset += envelope_size;
14212            }
14213
14214            let next_out_of_line = decoder.next_out_of_line();
14215            let handles_before = decoder.remaining_handles();
14216            if let Some((inlined, num_bytes, num_handles)) =
14217                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14218            {
14219                let member_inline_size =
14220                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14221                if inlined != (member_inline_size <= 4) {
14222                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14223                }
14224                let inner_offset;
14225                let mut inner_depth = depth.clone();
14226                if inlined {
14227                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14228                    inner_offset = next_offset;
14229                } else {
14230                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14231                    inner_depth.increment()?;
14232                }
14233                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
14234                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
14235                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14236                {
14237                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14238                }
14239                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14240                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14241                }
14242            }
14243
14244            next_offset += envelope_size;
14245            _next_ordinal_to_read += 1;
14246            if next_offset >= end_offset {
14247                return Ok(());
14248            }
14249
14250            // Decode unknown envelopes for gaps in ordinals.
14251            while _next_ordinal_to_read < 7 {
14252                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14253                _next_ordinal_to_read += 1;
14254                next_offset += envelope_size;
14255            }
14256
14257            let next_out_of_line = decoder.next_out_of_line();
14258            let handles_before = decoder.remaining_handles();
14259            if let Some((inlined, num_bytes, num_handles)) =
14260                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14261            {
14262                let member_inline_size =
14263                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14264                if inlined != (member_inline_size <= 4) {
14265                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14266                }
14267                let inner_offset;
14268                let mut inner_depth = depth.clone();
14269                if inlined {
14270                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14271                    inner_offset = next_offset;
14272                } else {
14273                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14274                    inner_depth.increment()?;
14275                }
14276                let val_ref = self
14277                    .periodic_advertising_interval
14278                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
14279                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14280                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14281                {
14282                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14283                }
14284                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14285                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14286                }
14287            }
14288
14289            next_offset += envelope_size;
14290
14291            // Decode the remaining unknown envelopes.
14292            while next_offset < end_offset {
14293                _next_ordinal_to_read += 1;
14294                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14295                next_offset += envelope_size;
14296            }
14297
14298            Ok(())
14299        }
14300    }
14301
14302    impl PeriodicAdvertisingSyncSyncToSubeventsRequest {
14303        #[inline(always)]
14304        fn max_ordinal_present(&self) -> u64 {
14305            if let Some(_) = self.subevents {
14306                return 1;
14307            }
14308            0
14309        }
14310    }
14311
14312    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14313        type Borrowed<'a> = &'a Self;
14314        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14315            value
14316        }
14317    }
14318
14319    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14320        type Owned = Self;
14321
14322        #[inline(always)]
14323        fn inline_align(_context: fidl::encoding::Context) -> usize {
14324            8
14325        }
14326
14327        #[inline(always)]
14328        fn inline_size(_context: fidl::encoding::Context) -> usize {
14329            16
14330        }
14331    }
14332
14333    unsafe impl<D: fidl::encoding::ResourceDialect>
14334        fidl::encoding::Encode<PeriodicAdvertisingSyncSyncToSubeventsRequest, D>
14335        for &PeriodicAdvertisingSyncSyncToSubeventsRequest
14336    {
14337        unsafe fn encode(
14338            self,
14339            encoder: &mut fidl::encoding::Encoder<'_, D>,
14340            offset: usize,
14341            mut depth: fidl::encoding::Depth,
14342        ) -> fidl::Result<()> {
14343            encoder.debug_check_bounds::<PeriodicAdvertisingSyncSyncToSubeventsRequest>(offset);
14344            // Vector header
14345            let max_ordinal: u64 = self.max_ordinal_present();
14346            encoder.write_num(max_ordinal, offset);
14347            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14348            // Calling encoder.out_of_line_offset(0) is not allowed.
14349            if max_ordinal == 0 {
14350                return Ok(());
14351            }
14352            depth.increment()?;
14353            let envelope_size = 8;
14354            let bytes_len = max_ordinal as usize * envelope_size;
14355            #[allow(unused_variables)]
14356            let offset = encoder.out_of_line_offset(bytes_len);
14357            let mut _prev_end_offset: usize = 0;
14358            if 1 > max_ordinal {
14359                return Ok(());
14360            }
14361
14362            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14363            // are envelope_size bytes.
14364            let cur_offset: usize = (1 - 1) * envelope_size;
14365
14366            // Zero reserved fields.
14367            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14368
14369            // Safety:
14370            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14371            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14372            //   envelope_size bytes, there is always sufficient room.
14373            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 128>, D>(
14374                self.subevents.as_ref().map(
14375                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::ValueTypeMarker>::borrow,
14376                ),
14377                encoder,
14378                offset + cur_offset,
14379                depth,
14380            )?;
14381
14382            _prev_end_offset = cur_offset + envelope_size;
14383
14384            Ok(())
14385        }
14386    }
14387
14388    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14389        for PeriodicAdvertisingSyncSyncToSubeventsRequest
14390    {
14391        #[inline(always)]
14392        fn new_empty() -> Self {
14393            Self::default()
14394        }
14395
14396        unsafe fn decode(
14397            &mut self,
14398            decoder: &mut fidl::encoding::Decoder<'_, D>,
14399            offset: usize,
14400            mut depth: fidl::encoding::Depth,
14401        ) -> fidl::Result<()> {
14402            decoder.debug_check_bounds::<Self>(offset);
14403            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14404                None => return Err(fidl::Error::NotNullable),
14405                Some(len) => len,
14406            };
14407            // Calling decoder.out_of_line_offset(0) is not allowed.
14408            if len == 0 {
14409                return Ok(());
14410            };
14411            depth.increment()?;
14412            let envelope_size = 8;
14413            let bytes_len = len * envelope_size;
14414            let offset = decoder.out_of_line_offset(bytes_len)?;
14415            // Decode the envelope for each type.
14416            let mut _next_ordinal_to_read = 0;
14417            let mut next_offset = offset;
14418            let end_offset = offset + bytes_len;
14419            _next_ordinal_to_read += 1;
14420            if next_offset >= end_offset {
14421                return Ok(());
14422            }
14423
14424            // Decode unknown envelopes for gaps in ordinals.
14425            while _next_ordinal_to_read < 1 {
14426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14427                _next_ordinal_to_read += 1;
14428                next_offset += envelope_size;
14429            }
14430
14431            let next_out_of_line = decoder.next_out_of_line();
14432            let handles_before = decoder.remaining_handles();
14433            if let Some((inlined, num_bytes, num_handles)) =
14434                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14435            {
14436                let member_inline_size =
14437                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::TypeMarker>::inline_size(
14438                        decoder.context,
14439                    );
14440                if inlined != (member_inline_size <= 4) {
14441                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14442                }
14443                let inner_offset;
14444                let mut inner_depth = depth.clone();
14445                if inlined {
14446                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14447                    inner_offset = next_offset;
14448                } else {
14449                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14450                    inner_depth.increment()?;
14451                }
14452                let val_ref = self
14453                    .subevents
14454                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 128>, D));
14455                fidl::decode!(fidl::encoding::Vector<u8, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
14456                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14457                {
14458                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14459                }
14460                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14461                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14462                }
14463            }
14464
14465            next_offset += envelope_size;
14466
14467            // Decode the remaining unknown envelopes.
14468            while next_offset < end_offset {
14469                _next_ordinal_to_read += 1;
14470                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14471                next_offset += envelope_size;
14472            }
14473
14474            Ok(())
14475        }
14476    }
14477
14478    impl PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14479        #[inline(always)]
14480        fn max_ordinal_present(&self) -> u64 {
14481            if let Some(_) = self.reports {
14482                return 1;
14483            }
14484            0
14485        }
14486    }
14487
14488    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14489        type Borrowed<'a> = &'a Self;
14490        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14491            value
14492        }
14493    }
14494
14495    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14496        type Owned = Self;
14497
14498        #[inline(always)]
14499        fn inline_align(_context: fidl::encoding::Context) -> usize {
14500            8
14501        }
14502
14503        #[inline(always)]
14504        fn inline_size(_context: fidl::encoding::Context) -> usize {
14505            16
14506        }
14507    }
14508
14509    unsafe impl<D: fidl::encoding::ResourceDialect>
14510        fidl::encoding::Encode<PeriodicAdvertisingSyncWatchAdvertisingReportResponse, D>
14511        for &PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14512    {
14513        unsafe fn encode(
14514            self,
14515            encoder: &mut fidl::encoding::Encoder<'_, D>,
14516            offset: usize,
14517            mut depth: fidl::encoding::Depth,
14518        ) -> fidl::Result<()> {
14519            encoder.debug_check_bounds::<PeriodicAdvertisingSyncWatchAdvertisingReportResponse>(
14520                offset,
14521            );
14522            // Vector header
14523            let max_ordinal: u64 = self.max_ordinal_present();
14524            encoder.write_num(max_ordinal, offset);
14525            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14526            // Calling encoder.out_of_line_offset(0) is not allowed.
14527            if max_ordinal == 0 {
14528                return Ok(());
14529            }
14530            depth.increment()?;
14531            let envelope_size = 8;
14532            let bytes_len = max_ordinal as usize * envelope_size;
14533            #[allow(unused_variables)]
14534            let offset = encoder.out_of_line_offset(bytes_len);
14535            let mut _prev_end_offset: usize = 0;
14536            if 1 > max_ordinal {
14537                return Ok(());
14538            }
14539
14540            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14541            // are envelope_size bytes.
14542            let cur_offset: usize = (1 - 1) * envelope_size;
14543
14544            // Zero reserved fields.
14545            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14546
14547            // Safety:
14548            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14549            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14550            //   envelope_size bytes, there is always sufficient room.
14551            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<SyncReport>, D>(
14552            self.reports.as_ref().map(<fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::ValueTypeMarker>::borrow),
14553            encoder, offset + cur_offset, depth
14554        )?;
14555
14556            _prev_end_offset = cur_offset + envelope_size;
14557
14558            Ok(())
14559        }
14560    }
14561
14562    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14563        for PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14564    {
14565        #[inline(always)]
14566        fn new_empty() -> Self {
14567            Self::default()
14568        }
14569
14570        unsafe fn decode(
14571            &mut self,
14572            decoder: &mut fidl::encoding::Decoder<'_, D>,
14573            offset: usize,
14574            mut depth: fidl::encoding::Depth,
14575        ) -> fidl::Result<()> {
14576            decoder.debug_check_bounds::<Self>(offset);
14577            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14578                None => return Err(fidl::Error::NotNullable),
14579                Some(len) => len,
14580            };
14581            // Calling decoder.out_of_line_offset(0) is not allowed.
14582            if len == 0 {
14583                return Ok(());
14584            };
14585            depth.increment()?;
14586            let envelope_size = 8;
14587            let bytes_len = len * envelope_size;
14588            let offset = decoder.out_of_line_offset(bytes_len)?;
14589            // Decode the envelope for each type.
14590            let mut _next_ordinal_to_read = 0;
14591            let mut next_offset = offset;
14592            let end_offset = offset + bytes_len;
14593            _next_ordinal_to_read += 1;
14594            if next_offset >= end_offset {
14595                return Ok(());
14596            }
14597
14598            // Decode unknown envelopes for gaps in ordinals.
14599            while _next_ordinal_to_read < 1 {
14600                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14601                _next_ordinal_to_read += 1;
14602                next_offset += envelope_size;
14603            }
14604
14605            let next_out_of_line = decoder.next_out_of_line();
14606            let handles_before = decoder.remaining_handles();
14607            if let Some((inlined, num_bytes, num_handles)) =
14608                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14609            {
14610                let member_inline_size = <fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14611                if inlined != (member_inline_size <= 4) {
14612                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14613                }
14614                let inner_offset;
14615                let mut inner_depth = depth.clone();
14616                if inlined {
14617                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14618                    inner_offset = next_offset;
14619                } else {
14620                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14621                    inner_depth.increment()?;
14622                }
14623                let val_ref = self.reports.get_or_insert_with(|| {
14624                    fidl::new_empty!(fidl::encoding::UnboundedVector<SyncReport>, D)
14625                });
14626                fidl::decode!(
14627                    fidl::encoding::UnboundedVector<SyncReport>,
14628                    D,
14629                    val_ref,
14630                    decoder,
14631                    inner_offset,
14632                    inner_depth
14633                )?;
14634                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14635                {
14636                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14637                }
14638                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14639                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14640                }
14641            }
14642
14643            next_offset += envelope_size;
14644
14645            // Decode the remaining unknown envelopes.
14646            while next_offset < end_offset {
14647                _next_ordinal_to_read += 1;
14648                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14649                next_offset += envelope_size;
14650            }
14651
14652            Ok(())
14653        }
14654    }
14655
14656    impl ScanData {
14657        #[inline(always)]
14658        fn max_ordinal_present(&self) -> u64 {
14659            if let Some(_) = self.timestamp {
14660                return 7;
14661            }
14662            if let Some(_) = self.uris {
14663                return 6;
14664            }
14665            if let Some(_) = self.manufacturer_data {
14666                return 5;
14667            }
14668            if let Some(_) = self.service_data {
14669                return 4;
14670            }
14671            if let Some(_) = self.service_uuids {
14672                return 3;
14673            }
14674            if let Some(_) = self.appearance {
14675                return 2;
14676            }
14677            if let Some(_) = self.tx_power {
14678                return 1;
14679            }
14680            0
14681        }
14682    }
14683
14684    impl fidl::encoding::ValueTypeMarker for ScanData {
14685        type Borrowed<'a> = &'a Self;
14686        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14687            value
14688        }
14689    }
14690
14691    unsafe impl fidl::encoding::TypeMarker for ScanData {
14692        type Owned = Self;
14693
14694        #[inline(always)]
14695        fn inline_align(_context: fidl::encoding::Context) -> usize {
14696            8
14697        }
14698
14699        #[inline(always)]
14700        fn inline_size(_context: fidl::encoding::Context) -> usize {
14701            16
14702        }
14703    }
14704
14705    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanData, D> for &ScanData {
14706        unsafe fn encode(
14707            self,
14708            encoder: &mut fidl::encoding::Encoder<'_, D>,
14709            offset: usize,
14710            mut depth: fidl::encoding::Depth,
14711        ) -> fidl::Result<()> {
14712            encoder.debug_check_bounds::<ScanData>(offset);
14713            // Vector header
14714            let max_ordinal: u64 = self.max_ordinal_present();
14715            encoder.write_num(max_ordinal, offset);
14716            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14717            // Calling encoder.out_of_line_offset(0) is not allowed.
14718            if max_ordinal == 0 {
14719                return Ok(());
14720            }
14721            depth.increment()?;
14722            let envelope_size = 8;
14723            let bytes_len = max_ordinal as usize * envelope_size;
14724            #[allow(unused_variables)]
14725            let offset = encoder.out_of_line_offset(bytes_len);
14726            let mut _prev_end_offset: usize = 0;
14727            if 1 > max_ordinal {
14728                return Ok(());
14729            }
14730
14731            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14732            // are envelope_size bytes.
14733            let cur_offset: usize = (1 - 1) * envelope_size;
14734
14735            // Zero reserved fields.
14736            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14737
14738            // Safety:
14739            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14740            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14741            //   envelope_size bytes, there is always sufficient room.
14742            fidl::encoding::encode_in_envelope_optional::<i8, D>(
14743                self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14744                encoder,
14745                offset + cur_offset,
14746                depth,
14747            )?;
14748
14749            _prev_end_offset = cur_offset + envelope_size;
14750            if 2 > max_ordinal {
14751                return Ok(());
14752            }
14753
14754            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14755            // are envelope_size bytes.
14756            let cur_offset: usize = (2 - 1) * envelope_size;
14757
14758            // Zero reserved fields.
14759            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14760
14761            // Safety:
14762            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14763            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14764            //   envelope_size bytes, there is always sufficient room.
14765            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
14766            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
14767            encoder, offset + cur_offset, depth
14768        )?;
14769
14770            _prev_end_offset = cur_offset + envelope_size;
14771            if 3 > max_ordinal {
14772                return Ok(());
14773            }
14774
14775            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14776            // are envelope_size bytes.
14777            let cur_offset: usize = (3 - 1) * envelope_size;
14778
14779            // Zero reserved fields.
14780            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14781
14782            // Safety:
14783            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14784            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14785            //   envelope_size bytes, there is always sufficient room.
14786            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
14787            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
14788            encoder, offset + cur_offset, depth
14789        )?;
14790
14791            _prev_end_offset = cur_offset + envelope_size;
14792            if 4 > max_ordinal {
14793                return Ok(());
14794            }
14795
14796            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14797            // are envelope_size bytes.
14798            let cur_offset: usize = (4 - 1) * envelope_size;
14799
14800            // Zero reserved fields.
14801            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14802
14803            // Safety:
14804            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14805            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14806            //   envelope_size bytes, there is always sufficient room.
14807            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
14808            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
14809            encoder, offset + cur_offset, depth
14810        )?;
14811
14812            _prev_end_offset = cur_offset + envelope_size;
14813            if 5 > max_ordinal {
14814                return Ok(());
14815            }
14816
14817            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14818            // are envelope_size bytes.
14819            let cur_offset: usize = (5 - 1) * envelope_size;
14820
14821            // Zero reserved fields.
14822            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14823
14824            // Safety:
14825            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14826            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14827            //   envelope_size bytes, there is always sufficient room.
14828            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
14829            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
14830            encoder, offset + cur_offset, depth
14831        )?;
14832
14833            _prev_end_offset = cur_offset + envelope_size;
14834            if 6 > max_ordinal {
14835                return Ok(());
14836            }
14837
14838            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14839            // are envelope_size bytes.
14840            let cur_offset: usize = (6 - 1) * envelope_size;
14841
14842            // Zero reserved fields.
14843            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14844
14845            // Safety:
14846            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14847            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14848            //   envelope_size bytes, there is always sufficient room.
14849            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
14850            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
14851            encoder, offset + cur_offset, depth
14852        )?;
14853
14854            _prev_end_offset = cur_offset + envelope_size;
14855            if 7 > max_ordinal {
14856                return Ok(());
14857            }
14858
14859            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14860            // are envelope_size bytes.
14861            let cur_offset: usize = (7 - 1) * envelope_size;
14862
14863            // Zero reserved fields.
14864            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14865
14866            // Safety:
14867            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14868            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14869            //   envelope_size bytes, there is always sufficient room.
14870            fidl::encoding::encode_in_envelope_optional::<i64, D>(
14871                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
14872                encoder,
14873                offset + cur_offset,
14874                depth,
14875            )?;
14876
14877            _prev_end_offset = cur_offset + envelope_size;
14878
14879            Ok(())
14880        }
14881    }
14882
14883    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanData {
14884        #[inline(always)]
14885        fn new_empty() -> Self {
14886            Self::default()
14887        }
14888
14889        unsafe fn decode(
14890            &mut self,
14891            decoder: &mut fidl::encoding::Decoder<'_, D>,
14892            offset: usize,
14893            mut depth: fidl::encoding::Depth,
14894        ) -> fidl::Result<()> {
14895            decoder.debug_check_bounds::<Self>(offset);
14896            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14897                None => return Err(fidl::Error::NotNullable),
14898                Some(len) => len,
14899            };
14900            // Calling decoder.out_of_line_offset(0) is not allowed.
14901            if len == 0 {
14902                return Ok(());
14903            };
14904            depth.increment()?;
14905            let envelope_size = 8;
14906            let bytes_len = len * envelope_size;
14907            let offset = decoder.out_of_line_offset(bytes_len)?;
14908            // Decode the envelope for each type.
14909            let mut _next_ordinal_to_read = 0;
14910            let mut next_offset = offset;
14911            let end_offset = offset + bytes_len;
14912            _next_ordinal_to_read += 1;
14913            if next_offset >= end_offset {
14914                return Ok(());
14915            }
14916
14917            // Decode unknown envelopes for gaps in ordinals.
14918            while _next_ordinal_to_read < 1 {
14919                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14920                _next_ordinal_to_read += 1;
14921                next_offset += envelope_size;
14922            }
14923
14924            let next_out_of_line = decoder.next_out_of_line();
14925            let handles_before = decoder.remaining_handles();
14926            if let Some((inlined, num_bytes, num_handles)) =
14927                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14928            {
14929                let member_inline_size =
14930                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14931                if inlined != (member_inline_size <= 4) {
14932                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14933                }
14934                let inner_offset;
14935                let mut inner_depth = depth.clone();
14936                if inlined {
14937                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14938                    inner_offset = next_offset;
14939                } else {
14940                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14941                    inner_depth.increment()?;
14942                }
14943                let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
14944                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14945                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14946                {
14947                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14948                }
14949                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14950                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14951                }
14952            }
14953
14954            next_offset += envelope_size;
14955            _next_ordinal_to_read += 1;
14956            if next_offset >= end_offset {
14957                return Ok(());
14958            }
14959
14960            // Decode unknown envelopes for gaps in ordinals.
14961            while _next_ordinal_to_read < 2 {
14962                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14963                _next_ordinal_to_read += 1;
14964                next_offset += envelope_size;
14965            }
14966
14967            let next_out_of_line = decoder.next_out_of_line();
14968            let handles_before = decoder.remaining_handles();
14969            if let Some((inlined, num_bytes, num_handles)) =
14970                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14971            {
14972                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14973                if inlined != (member_inline_size <= 4) {
14974                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14975                }
14976                let inner_offset;
14977                let mut inner_depth = depth.clone();
14978                if inlined {
14979                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14980                    inner_offset = next_offset;
14981                } else {
14982                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14983                    inner_depth.increment()?;
14984                }
14985                let val_ref = self.appearance.get_or_insert_with(|| {
14986                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
14987                });
14988                fidl::decode!(
14989                    fidl_fuchsia_bluetooth__common::Appearance,
14990                    D,
14991                    val_ref,
14992                    decoder,
14993                    inner_offset,
14994                    inner_depth
14995                )?;
14996                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14997                {
14998                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14999                }
15000                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15001                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15002                }
15003            }
15004
15005            next_offset += envelope_size;
15006            _next_ordinal_to_read += 1;
15007            if next_offset >= end_offset {
15008                return Ok(());
15009            }
15010
15011            // Decode unknown envelopes for gaps in ordinals.
15012            while _next_ordinal_to_read < 3 {
15013                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15014                _next_ordinal_to_read += 1;
15015                next_offset += envelope_size;
15016            }
15017
15018            let next_out_of_line = decoder.next_out_of_line();
15019            let handles_before = decoder.remaining_handles();
15020            if let Some((inlined, num_bytes, num_handles)) =
15021                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15022            {
15023                let member_inline_size = <fidl::encoding::UnboundedVector<
15024                    fidl_fuchsia_bluetooth__common::Uuid,
15025                > as fidl::encoding::TypeMarker>::inline_size(
15026                    decoder.context
15027                );
15028                if inlined != (member_inline_size <= 4) {
15029                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15030                }
15031                let inner_offset;
15032                let mut inner_depth = depth.clone();
15033                if inlined {
15034                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15035                    inner_offset = next_offset;
15036                } else {
15037                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15038                    inner_depth.increment()?;
15039                }
15040                let val_ref = self.service_uuids.get_or_insert_with(|| {
15041                    fidl::new_empty!(
15042                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15043                        D
15044                    )
15045                });
15046                fidl::decode!(
15047                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15048                    D,
15049                    val_ref,
15050                    decoder,
15051                    inner_offset,
15052                    inner_depth
15053                )?;
15054                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15055                {
15056                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15057                }
15058                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15059                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15060                }
15061            }
15062
15063            next_offset += envelope_size;
15064            _next_ordinal_to_read += 1;
15065            if next_offset >= end_offset {
15066                return Ok(());
15067            }
15068
15069            // Decode unknown envelopes for gaps in ordinals.
15070            while _next_ordinal_to_read < 4 {
15071                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15072                _next_ordinal_to_read += 1;
15073                next_offset += envelope_size;
15074            }
15075
15076            let next_out_of_line = decoder.next_out_of_line();
15077            let handles_before = decoder.remaining_handles();
15078            if let Some((inlined, num_bytes, num_handles)) =
15079                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15080            {
15081                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15082                if inlined != (member_inline_size <= 4) {
15083                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15084                }
15085                let inner_offset;
15086                let mut inner_depth = depth.clone();
15087                if inlined {
15088                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15089                    inner_offset = next_offset;
15090                } else {
15091                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15092                    inner_depth.increment()?;
15093                }
15094                let val_ref = self.service_data.get_or_insert_with(|| {
15095                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
15096                });
15097                fidl::decode!(
15098                    fidl::encoding::UnboundedVector<ServiceData>,
15099                    D,
15100                    val_ref,
15101                    decoder,
15102                    inner_offset,
15103                    inner_depth
15104                )?;
15105                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15106                {
15107                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15108                }
15109                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15110                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15111                }
15112            }
15113
15114            next_offset += envelope_size;
15115            _next_ordinal_to_read += 1;
15116            if next_offset >= end_offset {
15117                return Ok(());
15118            }
15119
15120            // Decode unknown envelopes for gaps in ordinals.
15121            while _next_ordinal_to_read < 5 {
15122                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15123                _next_ordinal_to_read += 1;
15124                next_offset += envelope_size;
15125            }
15126
15127            let next_out_of_line = decoder.next_out_of_line();
15128            let handles_before = decoder.remaining_handles();
15129            if let Some((inlined, num_bytes, num_handles)) =
15130                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15131            {
15132                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15133                if inlined != (member_inline_size <= 4) {
15134                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15135                }
15136                let inner_offset;
15137                let mut inner_depth = depth.clone();
15138                if inlined {
15139                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15140                    inner_offset = next_offset;
15141                } else {
15142                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15143                    inner_depth.increment()?;
15144                }
15145                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
15146                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
15147                });
15148                fidl::decode!(
15149                    fidl::encoding::UnboundedVector<ManufacturerData>,
15150                    D,
15151                    val_ref,
15152                    decoder,
15153                    inner_offset,
15154                    inner_depth
15155                )?;
15156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15157                {
15158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15159                }
15160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15162                }
15163            }
15164
15165            next_offset += envelope_size;
15166            _next_ordinal_to_read += 1;
15167            if next_offset >= end_offset {
15168                return Ok(());
15169            }
15170
15171            // Decode unknown envelopes for gaps in ordinals.
15172            while _next_ordinal_to_read < 6 {
15173                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15174                _next_ordinal_to_read += 1;
15175                next_offset += envelope_size;
15176            }
15177
15178            let next_out_of_line = decoder.next_out_of_line();
15179            let handles_before = decoder.remaining_handles();
15180            if let Some((inlined, num_bytes, num_handles)) =
15181                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15182            {
15183                let member_inline_size = <fidl::encoding::UnboundedVector<
15184                    fidl::encoding::BoundedString<278>,
15185                > as fidl::encoding::TypeMarker>::inline_size(
15186                    decoder.context
15187                );
15188                if inlined != (member_inline_size <= 4) {
15189                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15190                }
15191                let inner_offset;
15192                let mut inner_depth = depth.clone();
15193                if inlined {
15194                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15195                    inner_offset = next_offset;
15196                } else {
15197                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15198                    inner_depth.increment()?;
15199                }
15200                let val_ref = self.uris.get_or_insert_with(|| {
15201                    fidl::new_empty!(
15202                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15203                        D
15204                    )
15205                });
15206                fidl::decode!(
15207                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15208                    D,
15209                    val_ref,
15210                    decoder,
15211                    inner_offset,
15212                    inner_depth
15213                )?;
15214                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15215                {
15216                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15217                }
15218                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15219                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15220                }
15221            }
15222
15223            next_offset += envelope_size;
15224            _next_ordinal_to_read += 1;
15225            if next_offset >= end_offset {
15226                return Ok(());
15227            }
15228
15229            // Decode unknown envelopes for gaps in ordinals.
15230            while _next_ordinal_to_read < 7 {
15231                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15232                _next_ordinal_to_read += 1;
15233                next_offset += envelope_size;
15234            }
15235
15236            let next_out_of_line = decoder.next_out_of_line();
15237            let handles_before = decoder.remaining_handles();
15238            if let Some((inlined, num_bytes, num_handles)) =
15239                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15240            {
15241                let member_inline_size =
15242                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15243                if inlined != (member_inline_size <= 4) {
15244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15245                }
15246                let inner_offset;
15247                let mut inner_depth = depth.clone();
15248                if inlined {
15249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15250                    inner_offset = next_offset;
15251                } else {
15252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15253                    inner_depth.increment()?;
15254                }
15255                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
15256                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
15257                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15258                {
15259                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15260                }
15261                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15262                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15263                }
15264            }
15265
15266            next_offset += envelope_size;
15267
15268            // Decode the remaining unknown envelopes.
15269            while next_offset < end_offset {
15270                _next_ordinal_to_read += 1;
15271                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15272                next_offset += envelope_size;
15273            }
15274
15275            Ok(())
15276        }
15277    }
15278
15279    impl ScanOptions {
15280        #[inline(always)]
15281        fn max_ordinal_present(&self) -> u64 {
15282            if let Some(_) = self.filters {
15283                return 1;
15284            }
15285            0
15286        }
15287    }
15288
15289    impl fidl::encoding::ValueTypeMarker for ScanOptions {
15290        type Borrowed<'a> = &'a Self;
15291        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15292            value
15293        }
15294    }
15295
15296    unsafe impl fidl::encoding::TypeMarker for ScanOptions {
15297        type Owned = Self;
15298
15299        #[inline(always)]
15300        fn inline_align(_context: fidl::encoding::Context) -> usize {
15301            8
15302        }
15303
15304        #[inline(always)]
15305        fn inline_size(_context: fidl::encoding::Context) -> usize {
15306            16
15307        }
15308    }
15309
15310    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOptions, D>
15311        for &ScanOptions
15312    {
15313        unsafe fn encode(
15314            self,
15315            encoder: &mut fidl::encoding::Encoder<'_, D>,
15316            offset: usize,
15317            mut depth: fidl::encoding::Depth,
15318        ) -> fidl::Result<()> {
15319            encoder.debug_check_bounds::<ScanOptions>(offset);
15320            // Vector header
15321            let max_ordinal: u64 = self.max_ordinal_present();
15322            encoder.write_num(max_ordinal, offset);
15323            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15324            // Calling encoder.out_of_line_offset(0) is not allowed.
15325            if max_ordinal == 0 {
15326                return Ok(());
15327            }
15328            depth.increment()?;
15329            let envelope_size = 8;
15330            let bytes_len = max_ordinal as usize * envelope_size;
15331            #[allow(unused_variables)]
15332            let offset = encoder.out_of_line_offset(bytes_len);
15333            let mut _prev_end_offset: usize = 0;
15334            if 1 > max_ordinal {
15335                return Ok(());
15336            }
15337
15338            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15339            // are envelope_size bytes.
15340            let cur_offset: usize = (1 - 1) * envelope_size;
15341
15342            // Zero reserved fields.
15343            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15344
15345            // Safety:
15346            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15347            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15348            //   envelope_size bytes, there is always sufficient room.
15349            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Filter>, D>(
15350            self.filters.as_ref().map(<fidl::encoding::UnboundedVector<Filter> as fidl::encoding::ValueTypeMarker>::borrow),
15351            encoder, offset + cur_offset, depth
15352        )?;
15353
15354            _prev_end_offset = cur_offset + envelope_size;
15355
15356            Ok(())
15357        }
15358    }
15359
15360    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOptions {
15361        #[inline(always)]
15362        fn new_empty() -> Self {
15363            Self::default()
15364        }
15365
15366        unsafe fn decode(
15367            &mut self,
15368            decoder: &mut fidl::encoding::Decoder<'_, D>,
15369            offset: usize,
15370            mut depth: fidl::encoding::Depth,
15371        ) -> fidl::Result<()> {
15372            decoder.debug_check_bounds::<Self>(offset);
15373            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15374                None => return Err(fidl::Error::NotNullable),
15375                Some(len) => len,
15376            };
15377            // Calling decoder.out_of_line_offset(0) is not allowed.
15378            if len == 0 {
15379                return Ok(());
15380            };
15381            depth.increment()?;
15382            let envelope_size = 8;
15383            let bytes_len = len * envelope_size;
15384            let offset = decoder.out_of_line_offset(bytes_len)?;
15385            // Decode the envelope for each type.
15386            let mut _next_ordinal_to_read = 0;
15387            let mut next_offset = offset;
15388            let end_offset = offset + bytes_len;
15389            _next_ordinal_to_read += 1;
15390            if next_offset >= end_offset {
15391                return Ok(());
15392            }
15393
15394            // Decode unknown envelopes for gaps in ordinals.
15395            while _next_ordinal_to_read < 1 {
15396                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15397                _next_ordinal_to_read += 1;
15398                next_offset += envelope_size;
15399            }
15400
15401            let next_out_of_line = decoder.next_out_of_line();
15402            let handles_before = decoder.remaining_handles();
15403            if let Some((inlined, num_bytes, num_handles)) =
15404                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15405            {
15406                let member_inline_size = <fidl::encoding::UnboundedVector<Filter> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15407                if inlined != (member_inline_size <= 4) {
15408                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15409                }
15410                let inner_offset;
15411                let mut inner_depth = depth.clone();
15412                if inlined {
15413                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15414                    inner_offset = next_offset;
15415                } else {
15416                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15417                    inner_depth.increment()?;
15418                }
15419                let val_ref = self.filters.get_or_insert_with(|| {
15420                    fidl::new_empty!(fidl::encoding::UnboundedVector<Filter>, D)
15421                });
15422                fidl::decode!(
15423                    fidl::encoding::UnboundedVector<Filter>,
15424                    D,
15425                    val_ref,
15426                    decoder,
15427                    inner_offset,
15428                    inner_depth
15429                )?;
15430                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15431                {
15432                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15433                }
15434                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15435                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15436                }
15437            }
15438
15439            next_offset += envelope_size;
15440
15441            // Decode the remaining unknown envelopes.
15442            while next_offset < end_offset {
15443                _next_ordinal_to_read += 1;
15444                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15445                next_offset += envelope_size;
15446            }
15447
15448            Ok(())
15449        }
15450    }
15451
15452    impl fidl::encoding::ValueTypeMarker for AdvertisingProcedure {
15453        type Borrowed<'a> = &'a Self;
15454        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15455            value
15456        }
15457    }
15458
15459    unsafe impl fidl::encoding::TypeMarker for AdvertisingProcedure {
15460        type Owned = Self;
15461
15462        #[inline(always)]
15463        fn inline_align(_context: fidl::encoding::Context) -> usize {
15464            8
15465        }
15466
15467        #[inline(always)]
15468        fn inline_size(_context: fidl::encoding::Context) -> usize {
15469            16
15470        }
15471    }
15472
15473    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingProcedure, D>
15474        for &AdvertisingProcedure
15475    {
15476        #[inline]
15477        unsafe fn encode(
15478            self,
15479            encoder: &mut fidl::encoding::Encoder<'_, D>,
15480            offset: usize,
15481            _depth: fidl::encoding::Depth,
15482        ) -> fidl::Result<()> {
15483            encoder.debug_check_bounds::<AdvertisingProcedure>(offset);
15484            encoder.write_num::<u64>(self.ordinal(), offset);
15485            match self {
15486                AdvertisingProcedure::Legacy(ref val) => {
15487                    fidl::encoding::encode_in_envelope::<Legacy, D>(
15488                        <Legacy as fidl::encoding::ValueTypeMarker>::borrow(val),
15489                        encoder,
15490                        offset + 8,
15491                        _depth,
15492                    )
15493                }
15494                AdvertisingProcedure::Extended(ref val) => {
15495                    fidl::encoding::encode_in_envelope::<Extended, D>(
15496                        <Extended as fidl::encoding::ValueTypeMarker>::borrow(val),
15497                        encoder,
15498                        offset + 8,
15499                        _depth,
15500                    )
15501                }
15502                AdvertisingProcedure::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
15503            }
15504        }
15505    }
15506
15507    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingProcedure {
15508        #[inline(always)]
15509        fn new_empty() -> Self {
15510            Self::__SourceBreaking { unknown_ordinal: 0 }
15511        }
15512
15513        #[inline]
15514        unsafe fn decode(
15515            &mut self,
15516            decoder: &mut fidl::encoding::Decoder<'_, D>,
15517            offset: usize,
15518            mut depth: fidl::encoding::Depth,
15519        ) -> fidl::Result<()> {
15520            decoder.debug_check_bounds::<Self>(offset);
15521            #[allow(unused_variables)]
15522            let next_out_of_line = decoder.next_out_of_line();
15523            let handles_before = decoder.remaining_handles();
15524            let (ordinal, inlined, num_bytes, num_handles) =
15525                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
15526
15527            let member_inline_size = match ordinal {
15528                1 => <Legacy as fidl::encoding::TypeMarker>::inline_size(decoder.context),
15529                2 => <Extended as fidl::encoding::TypeMarker>::inline_size(decoder.context),
15530                0 => return Err(fidl::Error::UnknownUnionTag),
15531                _ => num_bytes as usize,
15532            };
15533
15534            if inlined != (member_inline_size <= 4) {
15535                return Err(fidl::Error::InvalidInlineBitInEnvelope);
15536            }
15537            let _inner_offset;
15538            if inlined {
15539                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
15540                _inner_offset = offset + 8;
15541            } else {
15542                depth.increment()?;
15543                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15544            }
15545            match ordinal {
15546                1 => {
15547                    #[allow(irrefutable_let_patterns)]
15548                    if let AdvertisingProcedure::Legacy(_) = self {
15549                        // Do nothing, read the value into the object
15550                    } else {
15551                        // Initialize `self` to the right variant
15552                        *self = AdvertisingProcedure::Legacy(fidl::new_empty!(Legacy, D));
15553                    }
15554                    #[allow(irrefutable_let_patterns)]
15555                    if let AdvertisingProcedure::Legacy(ref mut val) = self {
15556                        fidl::decode!(Legacy, D, val, decoder, _inner_offset, depth)?;
15557                    } else {
15558                        unreachable!()
15559                    }
15560                }
15561                2 => {
15562                    #[allow(irrefutable_let_patterns)]
15563                    if let AdvertisingProcedure::Extended(_) = self {
15564                        // Do nothing, read the value into the object
15565                    } else {
15566                        // Initialize `self` to the right variant
15567                        *self = AdvertisingProcedure::Extended(fidl::new_empty!(Extended, D));
15568                    }
15569                    #[allow(irrefutable_let_patterns)]
15570                    if let AdvertisingProcedure::Extended(ref mut val) = self {
15571                        fidl::decode!(Extended, D, val, decoder, _inner_offset, depth)?;
15572                    } else {
15573                        unreachable!()
15574                    }
15575                }
15576                #[allow(deprecated)]
15577                ordinal => {
15578                    for _ in 0..num_handles {
15579                        decoder.drop_next_handle()?;
15580                    }
15581                    *self = AdvertisingProcedure::__SourceBreaking { unknown_ordinal: ordinal };
15582                }
15583            }
15584            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
15585                return Err(fidl::Error::InvalidNumBytesInEnvelope);
15586            }
15587            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15588                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15589            }
15590            Ok(())
15591        }
15592    }
15593
15594    impl fidl::encoding::ValueTypeMarker for SyncReport {
15595        type Borrowed<'a> = &'a Self;
15596        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15597            value
15598        }
15599    }
15600
15601    unsafe impl fidl::encoding::TypeMarker for SyncReport {
15602        type Owned = Self;
15603
15604        #[inline(always)]
15605        fn inline_align(_context: fidl::encoding::Context) -> usize {
15606            8
15607        }
15608
15609        #[inline(always)]
15610        fn inline_size(_context: fidl::encoding::Context) -> usize {
15611            16
15612        }
15613    }
15614
15615    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SyncReport, D>
15616        for &SyncReport
15617    {
15618        #[inline]
15619        unsafe fn encode(
15620            self,
15621            encoder: &mut fidl::encoding::Encoder<'_, D>,
15622            offset: usize,
15623            _depth: fidl::encoding::Depth,
15624        ) -> fidl::Result<()> {
15625            encoder.debug_check_bounds::<SyncReport>(offset);
15626            encoder.write_num::<u64>(self.ordinal(), offset);
15627            match self {
15628            SyncReport::PeriodicAdvertisingReport(ref val) => {
15629                fidl::encoding::encode_in_envelope::<PeriodicAdvertisingReport, D>(
15630                    <PeriodicAdvertisingReport as fidl::encoding::ValueTypeMarker>::borrow(val),
15631                    encoder, offset + 8, _depth
15632                )
15633            }
15634            SyncReport::BroadcastIsochronousGroupInfoReport(ref val) => {
15635                fidl::encoding::encode_in_envelope::<BroadcastIsochronousGroupInfoReport, D>(
15636                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::ValueTypeMarker>::borrow(val),
15637                    encoder, offset + 8, _depth
15638                )
15639            }
15640            SyncReport::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
15641        }
15642        }
15643    }
15644
15645    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SyncReport {
15646        #[inline(always)]
15647        fn new_empty() -> Self {
15648            Self::__SourceBreaking { unknown_ordinal: 0 }
15649        }
15650
15651        #[inline]
15652        unsafe fn decode(
15653            &mut self,
15654            decoder: &mut fidl::encoding::Decoder<'_, D>,
15655            offset: usize,
15656            mut depth: fidl::encoding::Depth,
15657        ) -> fidl::Result<()> {
15658            decoder.debug_check_bounds::<Self>(offset);
15659            #[allow(unused_variables)]
15660            let next_out_of_line = decoder.next_out_of_line();
15661            let handles_before = decoder.remaining_handles();
15662            let (ordinal, inlined, num_bytes, num_handles) =
15663                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
15664
15665            let member_inline_size = match ordinal {
15666                1 => <PeriodicAdvertisingReport as fidl::encoding::TypeMarker>::inline_size(
15667                    decoder.context,
15668                ),
15669                2 => {
15670                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::TypeMarker>::inline_size(
15671                        decoder.context,
15672                    )
15673                }
15674                0 => return Err(fidl::Error::UnknownUnionTag),
15675                _ => num_bytes as usize,
15676            };
15677
15678            if inlined != (member_inline_size <= 4) {
15679                return Err(fidl::Error::InvalidInlineBitInEnvelope);
15680            }
15681            let _inner_offset;
15682            if inlined {
15683                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
15684                _inner_offset = offset + 8;
15685            } else {
15686                depth.increment()?;
15687                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15688            }
15689            match ordinal {
15690                1 => {
15691                    #[allow(irrefutable_let_patterns)]
15692                    if let SyncReport::PeriodicAdvertisingReport(_) = self {
15693                        // Do nothing, read the value into the object
15694                    } else {
15695                        // Initialize `self` to the right variant
15696                        *self = SyncReport::PeriodicAdvertisingReport(fidl::new_empty!(
15697                            PeriodicAdvertisingReport,
15698                            D
15699                        ));
15700                    }
15701                    #[allow(irrefutable_let_patterns)]
15702                    if let SyncReport::PeriodicAdvertisingReport(ref mut val) = self {
15703                        fidl::decode!(
15704                            PeriodicAdvertisingReport,
15705                            D,
15706                            val,
15707                            decoder,
15708                            _inner_offset,
15709                            depth
15710                        )?;
15711                    } else {
15712                        unreachable!()
15713                    }
15714                }
15715                2 => {
15716                    #[allow(irrefutable_let_patterns)]
15717                    if let SyncReport::BroadcastIsochronousGroupInfoReport(_) = self {
15718                        // Do nothing, read the value into the object
15719                    } else {
15720                        // Initialize `self` to the right variant
15721                        *self = SyncReport::BroadcastIsochronousGroupInfoReport(fidl::new_empty!(
15722                            BroadcastIsochronousGroupInfoReport,
15723                            D
15724                        ));
15725                    }
15726                    #[allow(irrefutable_let_patterns)]
15727                    if let SyncReport::BroadcastIsochronousGroupInfoReport(ref mut val) = self {
15728                        fidl::decode!(
15729                            BroadcastIsochronousGroupInfoReport,
15730                            D,
15731                            val,
15732                            decoder,
15733                            _inner_offset,
15734                            depth
15735                        )?;
15736                    } else {
15737                        unreachable!()
15738                    }
15739                }
15740                #[allow(deprecated)]
15741                ordinal => {
15742                    for _ in 0..num_handles {
15743                        decoder.drop_next_handle()?;
15744                    }
15745                    *self = SyncReport::__SourceBreaking { unknown_ordinal: ordinal };
15746                }
15747            }
15748            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
15749                return Err(fidl::Error::InvalidNumBytesInEnvelope);
15750            }
15751            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15752                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15753            }
15754            Ok(())
15755        }
15756    }
15757}