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<
2446                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2447                D,
2448            >,
2449            T3: fidl::encoding::Encode<
2450                fidl::encoding::Optional<
2451                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2452                >,
2453                D,
2454            >,
2455            T4: fidl::encoding::Encode<
2456                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2457                D,
2458            >,
2459            T5: fidl::encoding::Encode<
2460                fidl::encoding::Optional<
2461                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2462                >,
2463                D,
2464            >,
2465            T6: fidl::encoding::Encode<
2466                fidl::encoding::Optional<
2467                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2468                >,
2469                D,
2470            >,
2471            T7: fidl::encoding::Encode<
2472                fidl::encoding::Optional<
2473                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2474                >,
2475                D,
2476            >,
2477        > fidl::encoding::Encode<AdvertisingDataDeprecated, D>
2478        for (T0, T1, T2, T3, T4, T5, T6, T7)
2479    {
2480        #[inline]
2481        unsafe fn encode(
2482            self,
2483            encoder: &mut fidl::encoding::Encoder<'_, D>,
2484            offset: usize,
2485            depth: fidl::encoding::Depth,
2486        ) -> fidl::Result<()> {
2487            encoder.debug_check_bounds::<AdvertisingDataDeprecated>(offset);
2488            // Zero out padding regions. There's no need to apply masks
2489            // because the unmasked parts will be overwritten by fields.
2490            // Write the fields.
2491            self.0.encode(encoder, offset + 0, depth)?;
2492            self.1.encode(encoder, offset + 16, depth)?;
2493            self.2.encode(encoder, offset + 24, depth)?;
2494            self.3.encode(encoder, offset + 32, depth)?;
2495            self.4.encode(encoder, offset + 48, depth)?;
2496            self.5.encode(encoder, offset + 64, depth)?;
2497            self.6.encode(encoder, offset + 80, depth)?;
2498            self.7.encode(encoder, offset + 96, depth)?;
2499            Ok(())
2500        }
2501    }
2502
2503    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2504        for AdvertisingDataDeprecated
2505    {
2506        #[inline(always)]
2507        fn new_empty() -> Self {
2508            Self {
2509                name: fidl::new_empty!(
2510                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2511                    D
2512                ),
2513                tx_power_level: fidl::new_empty!(
2514                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2515                    D
2516                ),
2517                appearance: fidl::new_empty!(
2518                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2519                    D
2520                ),
2521                service_uuids: fidl::new_empty!(
2522                    fidl::encoding::Optional<
2523                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2524                    >,
2525                    D
2526                ),
2527                service_data: fidl::new_empty!(
2528                    fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2529                    D
2530                ),
2531                manufacturer_specific_data: fidl::new_empty!(
2532                    fidl::encoding::Optional<
2533                        fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2534                    >,
2535                    D
2536                ),
2537                solicited_service_uuids: fidl::new_empty!(
2538                    fidl::encoding::Optional<
2539                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2540                    >,
2541                    D
2542                ),
2543                uris: fidl::new_empty!(
2544                    fidl::encoding::Optional<
2545                        fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2546                    >,
2547                    D
2548                ),
2549            }
2550        }
2551
2552        #[inline]
2553        unsafe fn decode(
2554            &mut self,
2555            decoder: &mut fidl::encoding::Decoder<'_, D>,
2556            offset: usize,
2557            _depth: fidl::encoding::Depth,
2558        ) -> fidl::Result<()> {
2559            decoder.debug_check_bounds::<Self>(offset);
2560            // Verify that padding bytes are zero.
2561            fidl::decode!(
2562                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
2563                D,
2564                &mut self.name,
2565                decoder,
2566                offset + 0,
2567                _depth
2568            )?;
2569            fidl::decode!(
2570                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
2571                D,
2572                &mut self.tx_power_level,
2573                decoder,
2574                offset + 16,
2575                _depth
2576            )?;
2577            fidl::decode!(
2578                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
2579                D,
2580                &mut self.appearance,
2581                decoder,
2582                offset + 24,
2583                _depth
2584            )?;
2585            fidl::decode!(
2586                fidl::encoding::Optional<
2587                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2588                >,
2589                D,
2590                &mut self.service_uuids,
2591                decoder,
2592                offset + 32,
2593                _depth
2594            )?;
2595            fidl::decode!(
2596                fidl::encoding::Optional<fidl::encoding::UnboundedVector<ServiceDataEntry>>,
2597                D,
2598                &mut self.service_data,
2599                decoder,
2600                offset + 48,
2601                _depth
2602            )?;
2603            fidl::decode!(
2604                fidl::encoding::Optional<
2605                    fidl::encoding::UnboundedVector<ManufacturerSpecificDataEntry>,
2606                >,
2607                D,
2608                &mut self.manufacturer_specific_data,
2609                decoder,
2610                offset + 64,
2611                _depth
2612            )?;
2613            fidl::decode!(
2614                fidl::encoding::Optional<
2615                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
2616                >,
2617                D,
2618                &mut self.solicited_service_uuids,
2619                decoder,
2620                offset + 80,
2621                _depth
2622            )?;
2623            fidl::decode!(
2624                fidl::encoding::Optional<
2625                    fidl::encoding::UnboundedVector<fidl::encoding::UnboundedString>,
2626                >,
2627                D,
2628                &mut self.uris,
2629                decoder,
2630                offset + 96,
2631                _depth
2632            )?;
2633            Ok(())
2634        }
2635    }
2636
2637    impl fidl::encoding::ValueTypeMarker for CentralConnectPeripheralResponse {
2638        type Borrowed<'a> = &'a Self;
2639        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2640            value
2641        }
2642    }
2643
2644    unsafe impl fidl::encoding::TypeMarker for CentralConnectPeripheralResponse {
2645        type Owned = Self;
2646
2647        #[inline(always)]
2648        fn inline_align(_context: fidl::encoding::Context) -> usize {
2649            8
2650        }
2651
2652        #[inline(always)]
2653        fn inline_size(_context: fidl::encoding::Context) -> usize {
2654            8
2655        }
2656    }
2657
2658    unsafe impl<D: fidl::encoding::ResourceDialect>
2659        fidl::encoding::Encode<CentralConnectPeripheralResponse, D>
2660        for &CentralConnectPeripheralResponse
2661    {
2662        #[inline]
2663        unsafe fn encode(
2664            self,
2665            encoder: &mut fidl::encoding::Encoder<'_, D>,
2666            offset: usize,
2667            _depth: fidl::encoding::Depth,
2668        ) -> fidl::Result<()> {
2669            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2670            // Delegate to tuple encoding.
2671            fidl::encoding::Encode::<CentralConnectPeripheralResponse, D>::encode(
2672                (
2673                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2674                ),
2675                encoder, offset, _depth
2676            )
2677        }
2678    }
2679    unsafe impl<
2680            D: fidl::encoding::ResourceDialect,
2681            T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2682        > fidl::encoding::Encode<CentralConnectPeripheralResponse, D> for (T0,)
2683    {
2684        #[inline]
2685        unsafe fn encode(
2686            self,
2687            encoder: &mut fidl::encoding::Encoder<'_, D>,
2688            offset: usize,
2689            depth: fidl::encoding::Depth,
2690        ) -> fidl::Result<()> {
2691            encoder.debug_check_bounds::<CentralConnectPeripheralResponse>(offset);
2692            // Zero out padding regions. There's no need to apply masks
2693            // because the unmasked parts will be overwritten by fields.
2694            // Write the fields.
2695            self.0.encode(encoder, offset + 0, depth)?;
2696            Ok(())
2697        }
2698    }
2699
2700    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2701        for CentralConnectPeripheralResponse
2702    {
2703        #[inline(always)]
2704        fn new_empty() -> Self {
2705            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2706        }
2707
2708        #[inline]
2709        unsafe fn decode(
2710            &mut self,
2711            decoder: &mut fidl::encoding::Decoder<'_, D>,
2712            offset: usize,
2713            _depth: fidl::encoding::Depth,
2714        ) -> fidl::Result<()> {
2715            decoder.debug_check_bounds::<Self>(offset);
2716            // Verify that padding bytes are zero.
2717            fidl::decode!(
2718                fidl_fuchsia_bluetooth__common::Status,
2719                D,
2720                &mut self.status,
2721                decoder,
2722                offset + 0,
2723                _depth
2724            )?;
2725            Ok(())
2726        }
2727    }
2728
2729    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralRequest {
2730        type Borrowed<'a> = &'a Self;
2731        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2732            value
2733        }
2734    }
2735
2736    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralRequest {
2737        type Owned = Self;
2738
2739        #[inline(always)]
2740        fn inline_align(_context: fidl::encoding::Context) -> usize {
2741            8
2742        }
2743
2744        #[inline(always)]
2745        fn inline_size(_context: fidl::encoding::Context) -> usize {
2746            16
2747        }
2748    }
2749
2750    unsafe impl<D: fidl::encoding::ResourceDialect>
2751        fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D>
2752        for &CentralDisconnectPeripheralRequest
2753    {
2754        #[inline]
2755        unsafe fn encode(
2756            self,
2757            encoder: &mut fidl::encoding::Encoder<'_, D>,
2758            offset: usize,
2759            _depth: fidl::encoding::Depth,
2760        ) -> fidl::Result<()> {
2761            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2762            // Delegate to tuple encoding.
2763            fidl::encoding::Encode::<CentralDisconnectPeripheralRequest, D>::encode(
2764                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2765                    &self.identifier,
2766                ),),
2767                encoder,
2768                offset,
2769                _depth,
2770            )
2771        }
2772    }
2773    unsafe impl<
2774            D: fidl::encoding::ResourceDialect,
2775            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2776        > fidl::encoding::Encode<CentralDisconnectPeripheralRequest, D> for (T0,)
2777    {
2778        #[inline]
2779        unsafe fn encode(
2780            self,
2781            encoder: &mut fidl::encoding::Encoder<'_, D>,
2782            offset: usize,
2783            depth: fidl::encoding::Depth,
2784        ) -> fidl::Result<()> {
2785            encoder.debug_check_bounds::<CentralDisconnectPeripheralRequest>(offset);
2786            // Zero out padding regions. There's no need to apply masks
2787            // because the unmasked parts will be overwritten by fields.
2788            // Write the fields.
2789            self.0.encode(encoder, offset + 0, depth)?;
2790            Ok(())
2791        }
2792    }
2793
2794    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2795        for CentralDisconnectPeripheralRequest
2796    {
2797        #[inline(always)]
2798        fn new_empty() -> Self {
2799            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2800        }
2801
2802        #[inline]
2803        unsafe fn decode(
2804            &mut self,
2805            decoder: &mut fidl::encoding::Decoder<'_, D>,
2806            offset: usize,
2807            _depth: fidl::encoding::Depth,
2808        ) -> fidl::Result<()> {
2809            decoder.debug_check_bounds::<Self>(offset);
2810            // Verify that padding bytes are zero.
2811            fidl::decode!(
2812                fidl::encoding::BoundedString<16>,
2813                D,
2814                &mut self.identifier,
2815                decoder,
2816                offset + 0,
2817                _depth
2818            )?;
2819            Ok(())
2820        }
2821    }
2822
2823    impl fidl::encoding::ValueTypeMarker for CentralDisconnectPeripheralResponse {
2824        type Borrowed<'a> = &'a Self;
2825        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2826            value
2827        }
2828    }
2829
2830    unsafe impl fidl::encoding::TypeMarker for CentralDisconnectPeripheralResponse {
2831        type Owned = Self;
2832
2833        #[inline(always)]
2834        fn inline_align(_context: fidl::encoding::Context) -> usize {
2835            8
2836        }
2837
2838        #[inline(always)]
2839        fn inline_size(_context: fidl::encoding::Context) -> usize {
2840            8
2841        }
2842    }
2843
2844    unsafe impl<D: fidl::encoding::ResourceDialect>
2845        fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D>
2846        for &CentralDisconnectPeripheralResponse
2847    {
2848        #[inline]
2849        unsafe fn encode(
2850            self,
2851            encoder: &mut fidl::encoding::Encoder<'_, D>,
2852            offset: usize,
2853            _depth: fidl::encoding::Depth,
2854        ) -> fidl::Result<()> {
2855            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2856            // Delegate to tuple encoding.
2857            fidl::encoding::Encode::<CentralDisconnectPeripheralResponse, D>::encode(
2858                (
2859                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
2860                ),
2861                encoder, offset, _depth
2862            )
2863        }
2864    }
2865    unsafe impl<
2866            D: fidl::encoding::ResourceDialect,
2867            T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
2868        > fidl::encoding::Encode<CentralDisconnectPeripheralResponse, D> for (T0,)
2869    {
2870        #[inline]
2871        unsafe fn encode(
2872            self,
2873            encoder: &mut fidl::encoding::Encoder<'_, D>,
2874            offset: usize,
2875            depth: fidl::encoding::Depth,
2876        ) -> fidl::Result<()> {
2877            encoder.debug_check_bounds::<CentralDisconnectPeripheralResponse>(offset);
2878            // Zero out padding regions. There's no need to apply masks
2879            // because the unmasked parts will be overwritten by fields.
2880            // Write the fields.
2881            self.0.encode(encoder, offset + 0, depth)?;
2882            Ok(())
2883        }
2884    }
2885
2886    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2887        for CentralDisconnectPeripheralResponse
2888    {
2889        #[inline(always)]
2890        fn new_empty() -> Self {
2891            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
2892        }
2893
2894        #[inline]
2895        unsafe fn decode(
2896            &mut self,
2897            decoder: &mut fidl::encoding::Decoder<'_, D>,
2898            offset: usize,
2899            _depth: fidl::encoding::Depth,
2900        ) -> fidl::Result<()> {
2901            decoder.debug_check_bounds::<Self>(offset);
2902            // Verify that padding bytes are zero.
2903            fidl::decode!(
2904                fidl_fuchsia_bluetooth__common::Status,
2905                D,
2906                &mut self.status,
2907                decoder,
2908                offset + 0,
2909                _depth
2910            )?;
2911            Ok(())
2912        }
2913    }
2914
2915    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralRequest {
2916        type Borrowed<'a> = &'a Self;
2917        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2918            value
2919        }
2920    }
2921
2922    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralRequest {
2923        type Owned = Self;
2924
2925        #[inline(always)]
2926        fn inline_align(_context: fidl::encoding::Context) -> usize {
2927            8
2928        }
2929
2930        #[inline(always)]
2931        fn inline_size(_context: fidl::encoding::Context) -> usize {
2932            16
2933        }
2934    }
2935
2936    unsafe impl<D: fidl::encoding::ResourceDialect>
2937        fidl::encoding::Encode<CentralGetPeripheralRequest, D> for &CentralGetPeripheralRequest
2938    {
2939        #[inline]
2940        unsafe fn encode(
2941            self,
2942            encoder: &mut fidl::encoding::Encoder<'_, D>,
2943            offset: usize,
2944            _depth: fidl::encoding::Depth,
2945        ) -> fidl::Result<()> {
2946            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
2947            // Delegate to tuple encoding.
2948            fidl::encoding::Encode::<CentralGetPeripheralRequest, D>::encode(
2949                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
2950                    &self.identifier,
2951                ),),
2952                encoder,
2953                offset,
2954                _depth,
2955            )
2956        }
2957    }
2958    unsafe impl<
2959            D: fidl::encoding::ResourceDialect,
2960            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
2961        > fidl::encoding::Encode<CentralGetPeripheralRequest, D> for (T0,)
2962    {
2963        #[inline]
2964        unsafe fn encode(
2965            self,
2966            encoder: &mut fidl::encoding::Encoder<'_, D>,
2967            offset: usize,
2968            depth: fidl::encoding::Depth,
2969        ) -> fidl::Result<()> {
2970            encoder.debug_check_bounds::<CentralGetPeripheralRequest>(offset);
2971            // Zero out padding regions. There's no need to apply masks
2972            // because the unmasked parts will be overwritten by fields.
2973            // Write the fields.
2974            self.0.encode(encoder, offset + 0, depth)?;
2975            Ok(())
2976        }
2977    }
2978
2979    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2980        for CentralGetPeripheralRequest
2981    {
2982        #[inline(always)]
2983        fn new_empty() -> Self {
2984            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
2985        }
2986
2987        #[inline]
2988        unsafe fn decode(
2989            &mut self,
2990            decoder: &mut fidl::encoding::Decoder<'_, D>,
2991            offset: usize,
2992            _depth: fidl::encoding::Depth,
2993        ) -> fidl::Result<()> {
2994            decoder.debug_check_bounds::<Self>(offset);
2995            // Verify that padding bytes are zero.
2996            fidl::decode!(
2997                fidl::encoding::BoundedString<16>,
2998                D,
2999                &mut self.identifier,
3000                decoder,
3001                offset + 0,
3002                _depth
3003            )?;
3004            Ok(())
3005        }
3006    }
3007
3008    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralResponse {
3009        type Borrowed<'a> = &'a Self;
3010        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3011            value
3012        }
3013    }
3014
3015    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralResponse {
3016        type Owned = Self;
3017
3018        #[inline(always)]
3019        fn inline_align(_context: fidl::encoding::Context) -> usize {
3020            8
3021        }
3022
3023        #[inline(always)]
3024        fn inline_size(_context: fidl::encoding::Context) -> usize {
3025            8
3026        }
3027    }
3028
3029    unsafe impl<D: fidl::encoding::ResourceDialect>
3030        fidl::encoding::Encode<CentralGetPeripheralResponse, D> for &CentralGetPeripheralResponse
3031    {
3032        #[inline]
3033        unsafe fn encode(
3034            self,
3035            encoder: &mut fidl::encoding::Encoder<'_, D>,
3036            offset: usize,
3037            _depth: fidl::encoding::Depth,
3038        ) -> fidl::Result<()> {
3039            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3040            // Delegate to tuple encoding.
3041            fidl::encoding::Encode::<CentralGetPeripheralResponse, D>::encode(
3042                (<fidl::encoding::Boxed<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(
3043                    &self.peripheral,
3044                ),),
3045                encoder,
3046                offset,
3047                _depth,
3048            )
3049        }
3050    }
3051    unsafe impl<
3052            D: fidl::encoding::ResourceDialect,
3053            T0: fidl::encoding::Encode<fidl::encoding::Boxed<RemoteDevice>, D>,
3054        > fidl::encoding::Encode<CentralGetPeripheralResponse, D> for (T0,)
3055    {
3056        #[inline]
3057        unsafe fn encode(
3058            self,
3059            encoder: &mut fidl::encoding::Encoder<'_, D>,
3060            offset: usize,
3061            depth: fidl::encoding::Depth,
3062        ) -> fidl::Result<()> {
3063            encoder.debug_check_bounds::<CentralGetPeripheralResponse>(offset);
3064            // Zero out padding regions. There's no need to apply masks
3065            // because the unmasked parts will be overwritten by fields.
3066            // Write the fields.
3067            self.0.encode(encoder, offset + 0, depth)?;
3068            Ok(())
3069        }
3070    }
3071
3072    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3073        for CentralGetPeripheralResponse
3074    {
3075        #[inline(always)]
3076        fn new_empty() -> Self {
3077            Self { peripheral: fidl::new_empty!(fidl::encoding::Boxed<RemoteDevice>, D) }
3078        }
3079
3080        #[inline]
3081        unsafe fn decode(
3082            &mut self,
3083            decoder: &mut fidl::encoding::Decoder<'_, D>,
3084            offset: usize,
3085            _depth: fidl::encoding::Depth,
3086        ) -> fidl::Result<()> {
3087            decoder.debug_check_bounds::<Self>(offset);
3088            // Verify that padding bytes are zero.
3089            fidl::decode!(
3090                fidl::encoding::Boxed<RemoteDevice>,
3091                D,
3092                &mut self.peripheral,
3093                decoder,
3094                offset + 0,
3095                _depth
3096            )?;
3097            Ok(())
3098        }
3099    }
3100
3101    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsRequest {
3102        type Borrowed<'a> = &'a Self;
3103        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3104            value
3105        }
3106    }
3107
3108    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsRequest {
3109        type Owned = Self;
3110
3111        #[inline(always)]
3112        fn inline_align(_context: fidl::encoding::Context) -> usize {
3113            8
3114        }
3115
3116        #[inline(always)]
3117        fn inline_size(_context: fidl::encoding::Context) -> usize {
3118            16
3119        }
3120    }
3121
3122    unsafe impl<D: fidl::encoding::ResourceDialect>
3123        fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for &CentralGetPeripheralsRequest
3124    {
3125        #[inline]
3126        unsafe fn encode(
3127            self,
3128            encoder: &mut fidl::encoding::Encoder<'_, D>,
3129            offset: usize,
3130            _depth: fidl::encoding::Depth,
3131        ) -> fidl::Result<()> {
3132            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3133            // Delegate to tuple encoding.
3134            fidl::encoding::Encode::<CentralGetPeripheralsRequest, D>::encode(
3135                (<fidl::encoding::Optional<
3136                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3137                > as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),),
3138                encoder,
3139                offset,
3140                _depth,
3141            )
3142        }
3143    }
3144    unsafe impl<
3145            D: fidl::encoding::ResourceDialect,
3146            T0: fidl::encoding::Encode<
3147                fidl::encoding::Optional<
3148                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3149                >,
3150                D,
3151            >,
3152        > fidl::encoding::Encode<CentralGetPeripheralsRequest, D> for (T0,)
3153    {
3154        #[inline]
3155        unsafe fn encode(
3156            self,
3157            encoder: &mut fidl::encoding::Encoder<'_, D>,
3158            offset: usize,
3159            depth: fidl::encoding::Depth,
3160        ) -> fidl::Result<()> {
3161            encoder.debug_check_bounds::<CentralGetPeripheralsRequest>(offset);
3162            // Zero out padding regions. There's no need to apply masks
3163            // because the unmasked parts will be overwritten by fields.
3164            // Write the fields.
3165            self.0.encode(encoder, offset + 0, depth)?;
3166            Ok(())
3167        }
3168    }
3169
3170    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3171        for CentralGetPeripheralsRequest
3172    {
3173        #[inline(always)]
3174        fn new_empty() -> Self {
3175            Self {
3176                service_uuids: fidl::new_empty!(
3177                    fidl::encoding::Optional<
3178                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3179                    >,
3180                    D
3181                ),
3182            }
3183        }
3184
3185        #[inline]
3186        unsafe fn decode(
3187            &mut self,
3188            decoder: &mut fidl::encoding::Decoder<'_, D>,
3189            offset: usize,
3190            _depth: fidl::encoding::Depth,
3191        ) -> fidl::Result<()> {
3192            decoder.debug_check_bounds::<Self>(offset);
3193            // Verify that padding bytes are zero.
3194            fidl::decode!(
3195                fidl::encoding::Optional<
3196                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
3197                >,
3198                D,
3199                &mut self.service_uuids,
3200                decoder,
3201                offset + 0,
3202                _depth
3203            )?;
3204            Ok(())
3205        }
3206    }
3207
3208    impl fidl::encoding::ValueTypeMarker for CentralGetPeripheralsResponse {
3209        type Borrowed<'a> = &'a Self;
3210        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3211            value
3212        }
3213    }
3214
3215    unsafe impl fidl::encoding::TypeMarker for CentralGetPeripheralsResponse {
3216        type Owned = Self;
3217
3218        #[inline(always)]
3219        fn inline_align(_context: fidl::encoding::Context) -> usize {
3220            8
3221        }
3222
3223        #[inline(always)]
3224        fn inline_size(_context: fidl::encoding::Context) -> usize {
3225            16
3226        }
3227    }
3228
3229    unsafe impl<D: fidl::encoding::ResourceDialect>
3230        fidl::encoding::Encode<CentralGetPeripheralsResponse, D>
3231        for &CentralGetPeripheralsResponse
3232    {
3233        #[inline]
3234        unsafe fn encode(
3235            self,
3236            encoder: &mut fidl::encoding::Encoder<'_, D>,
3237            offset: usize,
3238            _depth: fidl::encoding::Depth,
3239        ) -> fidl::Result<()> {
3240            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3241            // Delegate to tuple encoding.
3242            fidl::encoding::Encode::<CentralGetPeripheralsResponse, D>::encode(
3243                (
3244                    <fidl::encoding::UnboundedVector<RemoteDevice> as fidl::encoding::ValueTypeMarker>::borrow(&self.peripherals),
3245                ),
3246                encoder, offset, _depth
3247            )
3248        }
3249    }
3250    unsafe impl<
3251            D: fidl::encoding::ResourceDialect,
3252            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<RemoteDevice>, D>,
3253        > fidl::encoding::Encode<CentralGetPeripheralsResponse, D> for (T0,)
3254    {
3255        #[inline]
3256        unsafe fn encode(
3257            self,
3258            encoder: &mut fidl::encoding::Encoder<'_, D>,
3259            offset: usize,
3260            depth: fidl::encoding::Depth,
3261        ) -> fidl::Result<()> {
3262            encoder.debug_check_bounds::<CentralGetPeripheralsResponse>(offset);
3263            // Zero out padding regions. There's no need to apply masks
3264            // because the unmasked parts will be overwritten by fields.
3265            // Write the fields.
3266            self.0.encode(encoder, offset + 0, depth)?;
3267            Ok(())
3268        }
3269    }
3270
3271    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3272        for CentralGetPeripheralsResponse
3273    {
3274        #[inline(always)]
3275        fn new_empty() -> Self {
3276            Self { peripherals: fidl::new_empty!(fidl::encoding::UnboundedVector<RemoteDevice>, D) }
3277        }
3278
3279        #[inline]
3280        unsafe fn decode(
3281            &mut self,
3282            decoder: &mut fidl::encoding::Decoder<'_, D>,
3283            offset: usize,
3284            _depth: fidl::encoding::Depth,
3285        ) -> fidl::Result<()> {
3286            decoder.debug_check_bounds::<Self>(offset);
3287            // Verify that padding bytes are zero.
3288            fidl::decode!(
3289                fidl::encoding::UnboundedVector<RemoteDevice>,
3290                D,
3291                &mut self.peripherals,
3292                decoder,
3293                offset + 0,
3294                _depth
3295            )?;
3296            Ok(())
3297        }
3298    }
3299
3300    impl fidl::encoding::ValueTypeMarker for CentralOnDeviceDiscoveredRequest {
3301        type Borrowed<'a> = &'a Self;
3302        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3303            value
3304        }
3305    }
3306
3307    unsafe impl fidl::encoding::TypeMarker for CentralOnDeviceDiscoveredRequest {
3308        type Owned = Self;
3309
3310        #[inline(always)]
3311        fn inline_align(_context: fidl::encoding::Context) -> usize {
3312            8
3313        }
3314
3315        #[inline(always)]
3316        fn inline_size(_context: fidl::encoding::Context) -> usize {
3317            40
3318        }
3319    }
3320
3321    unsafe impl<D: fidl::encoding::ResourceDialect>
3322        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D>
3323        for &CentralOnDeviceDiscoveredRequest
3324    {
3325        #[inline]
3326        unsafe fn encode(
3327            self,
3328            encoder: &mut fidl::encoding::Encoder<'_, D>,
3329            offset: usize,
3330            _depth: fidl::encoding::Depth,
3331        ) -> fidl::Result<()> {
3332            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3333            // Delegate to tuple encoding.
3334            fidl::encoding::Encode::<CentralOnDeviceDiscoveredRequest, D>::encode(
3335                (<RemoteDevice as fidl::encoding::ValueTypeMarker>::borrow(&self.device),),
3336                encoder,
3337                offset,
3338                _depth,
3339            )
3340        }
3341    }
3342    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<RemoteDevice, D>>
3343        fidl::encoding::Encode<CentralOnDeviceDiscoveredRequest, D> for (T0,)
3344    {
3345        #[inline]
3346        unsafe fn encode(
3347            self,
3348            encoder: &mut fidl::encoding::Encoder<'_, D>,
3349            offset: usize,
3350            depth: fidl::encoding::Depth,
3351        ) -> fidl::Result<()> {
3352            encoder.debug_check_bounds::<CentralOnDeviceDiscoveredRequest>(offset);
3353            // Zero out padding regions. There's no need to apply masks
3354            // because the unmasked parts will be overwritten by fields.
3355            // Write the fields.
3356            self.0.encode(encoder, offset + 0, depth)?;
3357            Ok(())
3358        }
3359    }
3360
3361    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3362        for CentralOnDeviceDiscoveredRequest
3363    {
3364        #[inline(always)]
3365        fn new_empty() -> Self {
3366            Self { device: fidl::new_empty!(RemoteDevice, D) }
3367        }
3368
3369        #[inline]
3370        unsafe fn decode(
3371            &mut self,
3372            decoder: &mut fidl::encoding::Decoder<'_, D>,
3373            offset: usize,
3374            _depth: fidl::encoding::Depth,
3375        ) -> fidl::Result<()> {
3376            decoder.debug_check_bounds::<Self>(offset);
3377            // Verify that padding bytes are zero.
3378            fidl::decode!(RemoteDevice, D, &mut self.device, decoder, offset + 0, _depth)?;
3379            Ok(())
3380        }
3381    }
3382
3383    impl fidl::encoding::ValueTypeMarker for CentralOnPeripheralDisconnectedRequest {
3384        type Borrowed<'a> = &'a Self;
3385        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3386            value
3387        }
3388    }
3389
3390    unsafe impl fidl::encoding::TypeMarker for CentralOnPeripheralDisconnectedRequest {
3391        type Owned = Self;
3392
3393        #[inline(always)]
3394        fn inline_align(_context: fidl::encoding::Context) -> usize {
3395            8
3396        }
3397
3398        #[inline(always)]
3399        fn inline_size(_context: fidl::encoding::Context) -> usize {
3400            16
3401        }
3402    }
3403
3404    unsafe impl<D: fidl::encoding::ResourceDialect>
3405        fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D>
3406        for &CentralOnPeripheralDisconnectedRequest
3407    {
3408        #[inline]
3409        unsafe fn encode(
3410            self,
3411            encoder: &mut fidl::encoding::Encoder<'_, D>,
3412            offset: usize,
3413            _depth: fidl::encoding::Depth,
3414        ) -> fidl::Result<()> {
3415            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3416            // Delegate to tuple encoding.
3417            fidl::encoding::Encode::<CentralOnPeripheralDisconnectedRequest, D>::encode(
3418                (<fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(
3419                    &self.identifier,
3420                ),),
3421                encoder,
3422                offset,
3423                _depth,
3424            )
3425        }
3426    }
3427    unsafe impl<
3428            D: fidl::encoding::ResourceDialect,
3429            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
3430        > fidl::encoding::Encode<CentralOnPeripheralDisconnectedRequest, D> for (T0,)
3431    {
3432        #[inline]
3433        unsafe fn encode(
3434            self,
3435            encoder: &mut fidl::encoding::Encoder<'_, D>,
3436            offset: usize,
3437            depth: fidl::encoding::Depth,
3438        ) -> fidl::Result<()> {
3439            encoder.debug_check_bounds::<CentralOnPeripheralDisconnectedRequest>(offset);
3440            // Zero out padding regions. There's no need to apply masks
3441            // because the unmasked parts will be overwritten by fields.
3442            // Write the fields.
3443            self.0.encode(encoder, offset + 0, depth)?;
3444            Ok(())
3445        }
3446    }
3447
3448    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3449        for CentralOnPeripheralDisconnectedRequest
3450    {
3451        #[inline(always)]
3452        fn new_empty() -> Self {
3453            Self { identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D) }
3454        }
3455
3456        #[inline]
3457        unsafe fn decode(
3458            &mut self,
3459            decoder: &mut fidl::encoding::Decoder<'_, D>,
3460            offset: usize,
3461            _depth: fidl::encoding::Depth,
3462        ) -> fidl::Result<()> {
3463            decoder.debug_check_bounds::<Self>(offset);
3464            // Verify that padding bytes are zero.
3465            fidl::decode!(
3466                fidl::encoding::BoundedString<16>,
3467                D,
3468                &mut self.identifier,
3469                decoder,
3470                offset + 0,
3471                _depth
3472            )?;
3473            Ok(())
3474        }
3475    }
3476
3477    impl fidl::encoding::ValueTypeMarker for CentralOnScanStateChangedRequest {
3478        type Borrowed<'a> = &'a Self;
3479        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3480            value
3481        }
3482    }
3483
3484    unsafe impl fidl::encoding::TypeMarker for CentralOnScanStateChangedRequest {
3485        type Owned = Self;
3486
3487        #[inline(always)]
3488        fn inline_align(_context: fidl::encoding::Context) -> usize {
3489            1
3490        }
3491
3492        #[inline(always)]
3493        fn inline_size(_context: fidl::encoding::Context) -> usize {
3494            1
3495        }
3496    }
3497
3498    unsafe impl<D: fidl::encoding::ResourceDialect>
3499        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D>
3500        for &CentralOnScanStateChangedRequest
3501    {
3502        #[inline]
3503        unsafe fn encode(
3504            self,
3505            encoder: &mut fidl::encoding::Encoder<'_, D>,
3506            offset: usize,
3507            _depth: fidl::encoding::Depth,
3508        ) -> fidl::Result<()> {
3509            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3510            // Delegate to tuple encoding.
3511            fidl::encoding::Encode::<CentralOnScanStateChangedRequest, D>::encode(
3512                (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.scanning),),
3513                encoder,
3514                offset,
3515                _depth,
3516            )
3517        }
3518    }
3519    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
3520        fidl::encoding::Encode<CentralOnScanStateChangedRequest, D> for (T0,)
3521    {
3522        #[inline]
3523        unsafe fn encode(
3524            self,
3525            encoder: &mut fidl::encoding::Encoder<'_, D>,
3526            offset: usize,
3527            depth: fidl::encoding::Depth,
3528        ) -> fidl::Result<()> {
3529            encoder.debug_check_bounds::<CentralOnScanStateChangedRequest>(offset);
3530            // Zero out padding regions. There's no need to apply masks
3531            // because the unmasked parts will be overwritten by fields.
3532            // Write the fields.
3533            self.0.encode(encoder, offset + 0, depth)?;
3534            Ok(())
3535        }
3536    }
3537
3538    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3539        for CentralOnScanStateChangedRequest
3540    {
3541        #[inline(always)]
3542        fn new_empty() -> Self {
3543            Self { scanning: fidl::new_empty!(bool, D) }
3544        }
3545
3546        #[inline]
3547        unsafe fn decode(
3548            &mut self,
3549            decoder: &mut fidl::encoding::Decoder<'_, D>,
3550            offset: usize,
3551            _depth: fidl::encoding::Depth,
3552        ) -> fidl::Result<()> {
3553            decoder.debug_check_bounds::<Self>(offset);
3554            // Verify that padding bytes are zero.
3555            fidl::decode!(bool, D, &mut self.scanning, decoder, offset + 0, _depth)?;
3556            Ok(())
3557        }
3558    }
3559
3560    impl fidl::encoding::ValueTypeMarker for CentralStartScanRequest {
3561        type Borrowed<'a> = &'a Self;
3562        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3563            value
3564        }
3565    }
3566
3567    unsafe impl fidl::encoding::TypeMarker for CentralStartScanRequest {
3568        type Owned = Self;
3569
3570        #[inline(always)]
3571        fn inline_align(_context: fidl::encoding::Context) -> usize {
3572            8
3573        }
3574
3575        #[inline(always)]
3576        fn inline_size(_context: fidl::encoding::Context) -> usize {
3577            8
3578        }
3579    }
3580
3581    unsafe impl<D: fidl::encoding::ResourceDialect>
3582        fidl::encoding::Encode<CentralStartScanRequest, D> for &CentralStartScanRequest
3583    {
3584        #[inline]
3585        unsafe fn encode(
3586            self,
3587            encoder: &mut fidl::encoding::Encoder<'_, D>,
3588            offset: usize,
3589            _depth: fidl::encoding::Depth,
3590        ) -> fidl::Result<()> {
3591            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3592            // Delegate to tuple encoding.
3593            fidl::encoding::Encode::<CentralStartScanRequest, D>::encode(
3594                (<fidl::encoding::Boxed<ScanFilter> as fidl::encoding::ValueTypeMarker>::borrow(
3595                    &self.filter,
3596                ),),
3597                encoder,
3598                offset,
3599                _depth,
3600            )
3601        }
3602    }
3603    unsafe impl<
3604            D: fidl::encoding::ResourceDialect,
3605            T0: fidl::encoding::Encode<fidl::encoding::Boxed<ScanFilter>, D>,
3606        > fidl::encoding::Encode<CentralStartScanRequest, D> for (T0,)
3607    {
3608        #[inline]
3609        unsafe fn encode(
3610            self,
3611            encoder: &mut fidl::encoding::Encoder<'_, D>,
3612            offset: usize,
3613            depth: fidl::encoding::Depth,
3614        ) -> fidl::Result<()> {
3615            encoder.debug_check_bounds::<CentralStartScanRequest>(offset);
3616            // Zero out padding regions. There's no need to apply masks
3617            // because the unmasked parts will be overwritten by fields.
3618            // Write the fields.
3619            self.0.encode(encoder, offset + 0, depth)?;
3620            Ok(())
3621        }
3622    }
3623
3624    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3625        for CentralStartScanRequest
3626    {
3627        #[inline(always)]
3628        fn new_empty() -> Self {
3629            Self { filter: fidl::new_empty!(fidl::encoding::Boxed<ScanFilter>, D) }
3630        }
3631
3632        #[inline]
3633        unsafe fn decode(
3634            &mut self,
3635            decoder: &mut fidl::encoding::Decoder<'_, D>,
3636            offset: usize,
3637            _depth: fidl::encoding::Depth,
3638        ) -> fidl::Result<()> {
3639            decoder.debug_check_bounds::<Self>(offset);
3640            // Verify that padding bytes are zero.
3641            fidl::decode!(
3642                fidl::encoding::Boxed<ScanFilter>,
3643                D,
3644                &mut self.filter,
3645                decoder,
3646                offset + 0,
3647                _depth
3648            )?;
3649            Ok(())
3650        }
3651    }
3652
3653    impl fidl::encoding::ValueTypeMarker for CentralStartScanResponse {
3654        type Borrowed<'a> = &'a Self;
3655        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3656            value
3657        }
3658    }
3659
3660    unsafe impl fidl::encoding::TypeMarker for CentralStartScanResponse {
3661        type Owned = Self;
3662
3663        #[inline(always)]
3664        fn inline_align(_context: fidl::encoding::Context) -> usize {
3665            8
3666        }
3667
3668        #[inline(always)]
3669        fn inline_size(_context: fidl::encoding::Context) -> usize {
3670            8
3671        }
3672    }
3673
3674    unsafe impl<D: fidl::encoding::ResourceDialect>
3675        fidl::encoding::Encode<CentralStartScanResponse, D> for &CentralStartScanResponse
3676    {
3677        #[inline]
3678        unsafe fn encode(
3679            self,
3680            encoder: &mut fidl::encoding::Encoder<'_, D>,
3681            offset: usize,
3682            _depth: fidl::encoding::Depth,
3683        ) -> fidl::Result<()> {
3684            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3685            // Delegate to tuple encoding.
3686            fidl::encoding::Encode::<CentralStartScanResponse, D>::encode(
3687                (
3688                    <fidl_fuchsia_bluetooth__common::Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),
3689                ),
3690                encoder, offset, _depth
3691            )
3692        }
3693    }
3694    unsafe impl<
3695            D: fidl::encoding::ResourceDialect,
3696            T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Status, D>,
3697        > fidl::encoding::Encode<CentralStartScanResponse, D> for (T0,)
3698    {
3699        #[inline]
3700        unsafe fn encode(
3701            self,
3702            encoder: &mut fidl::encoding::Encoder<'_, D>,
3703            offset: usize,
3704            depth: fidl::encoding::Depth,
3705        ) -> fidl::Result<()> {
3706            encoder.debug_check_bounds::<CentralStartScanResponse>(offset);
3707            // Zero out padding regions. There's no need to apply masks
3708            // because the unmasked parts will be overwritten by fields.
3709            // Write the fields.
3710            self.0.encode(encoder, offset + 0, depth)?;
3711            Ok(())
3712        }
3713    }
3714
3715    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3716        for CentralStartScanResponse
3717    {
3718        #[inline(always)]
3719        fn new_empty() -> Self {
3720            Self { status: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Status, D) }
3721        }
3722
3723        #[inline]
3724        unsafe fn decode(
3725            &mut self,
3726            decoder: &mut fidl::encoding::Decoder<'_, D>,
3727            offset: usize,
3728            _depth: fidl::encoding::Depth,
3729        ) -> fidl::Result<()> {
3730            decoder.debug_check_bounds::<Self>(offset);
3731            // Verify that padding bytes are zero.
3732            fidl::decode!(
3733                fidl_fuchsia_bluetooth__common::Status,
3734                D,
3735                &mut self.status,
3736                decoder,
3737                offset + 0,
3738                _depth
3739            )?;
3740            Ok(())
3741        }
3742    }
3743
3744    impl fidl::encoding::ValueTypeMarker for ManufacturerData {
3745        type Borrowed<'a> = &'a Self;
3746        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3747            value
3748        }
3749    }
3750
3751    unsafe impl fidl::encoding::TypeMarker for ManufacturerData {
3752        type Owned = Self;
3753
3754        #[inline(always)]
3755        fn inline_align(_context: fidl::encoding::Context) -> usize {
3756            8
3757        }
3758
3759        #[inline(always)]
3760        fn inline_size(_context: fidl::encoding::Context) -> usize {
3761            24
3762        }
3763    }
3764
3765    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ManufacturerData, D>
3766        for &ManufacturerData
3767    {
3768        #[inline]
3769        unsafe fn encode(
3770            self,
3771            encoder: &mut fidl::encoding::Encoder<'_, D>,
3772            offset: usize,
3773            _depth: fidl::encoding::Depth,
3774        ) -> fidl::Result<()> {
3775            encoder.debug_check_bounds::<ManufacturerData>(offset);
3776            // Delegate to tuple encoding.
3777            fidl::encoding::Encode::<ManufacturerData, D>::encode(
3778                (
3779                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3780                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(
3781                        &self.data,
3782                    ),
3783                ),
3784                encoder,
3785                offset,
3786                _depth,
3787            )
3788        }
3789    }
3790    unsafe impl<
3791            D: fidl::encoding::ResourceDialect,
3792            T0: fidl::encoding::Encode<u16, D>,
3793            T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
3794        > fidl::encoding::Encode<ManufacturerData, D> for (T0, T1)
3795    {
3796        #[inline]
3797        unsafe fn encode(
3798            self,
3799            encoder: &mut fidl::encoding::Encoder<'_, D>,
3800            offset: usize,
3801            depth: fidl::encoding::Depth,
3802        ) -> fidl::Result<()> {
3803            encoder.debug_check_bounds::<ManufacturerData>(offset);
3804            // Zero out padding regions. There's no need to apply masks
3805            // because the unmasked parts will be overwritten by fields.
3806            unsafe {
3807                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3808                (ptr as *mut u64).write_unaligned(0);
3809            }
3810            // Write the fields.
3811            self.0.encode(encoder, offset + 0, depth)?;
3812            self.1.encode(encoder, offset + 8, depth)?;
3813            Ok(())
3814        }
3815    }
3816
3817    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ManufacturerData {
3818        #[inline(always)]
3819        fn new_empty() -> Self {
3820            Self {
3821                company_id: fidl::new_empty!(u16, D),
3822                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
3823            }
3824        }
3825
3826        #[inline]
3827        unsafe fn decode(
3828            &mut self,
3829            decoder: &mut fidl::encoding::Decoder<'_, D>,
3830            offset: usize,
3831            _depth: fidl::encoding::Depth,
3832        ) -> fidl::Result<()> {
3833            decoder.debug_check_bounds::<Self>(offset);
3834            // Verify that padding bytes are zero.
3835            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3836            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3837            let mask = 0xffffffffffff0000u64;
3838            let maskedval = padval & mask;
3839            if maskedval != 0 {
3840                return Err(fidl::Error::NonZeroPadding {
3841                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3842                });
3843            }
3844            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3845            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 8, _depth)?;
3846            Ok(())
3847        }
3848    }
3849
3850    impl fidl::encoding::ValueTypeMarker for ManufacturerSpecificDataEntry {
3851        type Borrowed<'a> = &'a Self;
3852        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3853            value
3854        }
3855    }
3856
3857    unsafe impl fidl::encoding::TypeMarker for ManufacturerSpecificDataEntry {
3858        type Owned = Self;
3859
3860        #[inline(always)]
3861        fn inline_align(_context: fidl::encoding::Context) -> usize {
3862            8
3863        }
3864
3865        #[inline(always)]
3866        fn inline_size(_context: fidl::encoding::Context) -> usize {
3867            24
3868        }
3869    }
3870
3871    unsafe impl<D: fidl::encoding::ResourceDialect>
3872        fidl::encoding::Encode<ManufacturerSpecificDataEntry, D>
3873        for &ManufacturerSpecificDataEntry
3874    {
3875        #[inline]
3876        unsafe fn encode(
3877            self,
3878            encoder: &mut fidl::encoding::Encoder<'_, D>,
3879            offset: usize,
3880            _depth: fidl::encoding::Depth,
3881        ) -> fidl::Result<()> {
3882            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3883            // Delegate to tuple encoding.
3884            fidl::encoding::Encode::<ManufacturerSpecificDataEntry, D>::encode(
3885                (
3886                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.company_id),
3887                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
3888                ),
3889                encoder, offset, _depth
3890            )
3891        }
3892    }
3893    unsafe impl<
3894            D: fidl::encoding::ResourceDialect,
3895            T0: fidl::encoding::Encode<u16, D>,
3896            T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
3897        > fidl::encoding::Encode<ManufacturerSpecificDataEntry, D> for (T0, T1)
3898    {
3899        #[inline]
3900        unsafe fn encode(
3901            self,
3902            encoder: &mut fidl::encoding::Encoder<'_, D>,
3903            offset: usize,
3904            depth: fidl::encoding::Depth,
3905        ) -> fidl::Result<()> {
3906            encoder.debug_check_bounds::<ManufacturerSpecificDataEntry>(offset);
3907            // Zero out padding regions. There's no need to apply masks
3908            // because the unmasked parts will be overwritten by fields.
3909            unsafe {
3910                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
3911                (ptr as *mut u64).write_unaligned(0);
3912            }
3913            // Write the fields.
3914            self.0.encode(encoder, offset + 0, depth)?;
3915            self.1.encode(encoder, offset + 8, depth)?;
3916            Ok(())
3917        }
3918    }
3919
3920    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3921        for ManufacturerSpecificDataEntry
3922    {
3923        #[inline(always)]
3924        fn new_empty() -> Self {
3925            Self {
3926                company_id: fidl::new_empty!(u16, D),
3927                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
3928            }
3929        }
3930
3931        #[inline]
3932        unsafe fn decode(
3933            &mut self,
3934            decoder: &mut fidl::encoding::Decoder<'_, D>,
3935            offset: usize,
3936            _depth: fidl::encoding::Depth,
3937        ) -> fidl::Result<()> {
3938            decoder.debug_check_bounds::<Self>(offset);
3939            // Verify that padding bytes are zero.
3940            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
3941            let padval = unsafe { (ptr as *const u64).read_unaligned() };
3942            let mask = 0xffffffffffff0000u64;
3943            let maskedval = padval & mask;
3944            if maskedval != 0 {
3945                return Err(fidl::Error::NonZeroPadding {
3946                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
3947                });
3948            }
3949            fidl::decode!(u16, D, &mut self.company_id, decoder, offset + 0, _depth)?;
3950            fidl::decode!(
3951                fidl::encoding::UnboundedVector<u8>,
3952                D,
3953                &mut self.data,
3954                decoder,
3955                offset + 8,
3956                _depth
3957            )?;
3958            Ok(())
3959        }
3960    }
3961
3962    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncId {
3963        type Borrowed<'a> = &'a Self;
3964        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3965            value
3966        }
3967    }
3968
3969    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncId {
3970        type Owned = Self;
3971
3972        #[inline(always)]
3973        fn inline_align(_context: fidl::encoding::Context) -> usize {
3974            8
3975        }
3976
3977        #[inline(always)]
3978        fn inline_size(_context: fidl::encoding::Context) -> usize {
3979            8
3980        }
3981        #[inline(always)]
3982        fn encode_is_copy() -> bool {
3983            true
3984        }
3985
3986        #[inline(always)]
3987        fn decode_is_copy() -> bool {
3988            true
3989        }
3990    }
3991
3992    unsafe impl<D: fidl::encoding::ResourceDialect>
3993        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for &PeriodicAdvertisingSyncId
3994    {
3995        #[inline]
3996        unsafe fn encode(
3997            self,
3998            encoder: &mut fidl::encoding::Encoder<'_, D>,
3999            offset: usize,
4000            _depth: fidl::encoding::Depth,
4001        ) -> fidl::Result<()> {
4002            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4003            unsafe {
4004                // Copy the object into the buffer.
4005                let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
4006                (buf_ptr as *mut PeriodicAdvertisingSyncId)
4007                    .write_unaligned((self as *const PeriodicAdvertisingSyncId).read());
4008                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
4009                // done second because the memcpy will write garbage to these bytes.
4010            }
4011            Ok(())
4012        }
4013    }
4014    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
4015        fidl::encoding::Encode<PeriodicAdvertisingSyncId, D> for (T0,)
4016    {
4017        #[inline]
4018        unsafe fn encode(
4019            self,
4020            encoder: &mut fidl::encoding::Encoder<'_, D>,
4021            offset: usize,
4022            depth: fidl::encoding::Depth,
4023        ) -> fidl::Result<()> {
4024            encoder.debug_check_bounds::<PeriodicAdvertisingSyncId>(offset);
4025            // Zero out padding regions. There's no need to apply masks
4026            // because the unmasked parts will be overwritten by fields.
4027            // Write the fields.
4028            self.0.encode(encoder, offset + 0, depth)?;
4029            Ok(())
4030        }
4031    }
4032
4033    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4034        for PeriodicAdvertisingSyncId
4035    {
4036        #[inline(always)]
4037        fn new_empty() -> Self {
4038            Self { value: fidl::new_empty!(u64, D) }
4039        }
4040
4041        #[inline]
4042        unsafe fn decode(
4043            &mut self,
4044            decoder: &mut fidl::encoding::Decoder<'_, D>,
4045            offset: usize,
4046            _depth: fidl::encoding::Depth,
4047        ) -> fidl::Result<()> {
4048            decoder.debug_check_bounds::<Self>(offset);
4049            let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
4050            // Verify that padding bytes are zero.
4051            // Copy from the buffer into the object.
4052            unsafe {
4053                std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
4054            }
4055            Ok(())
4056        }
4057    }
4058
4059    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4060        type Borrowed<'a> = &'a Self;
4061        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4062            value
4063        }
4064    }
4065
4066    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnErrorRequest {
4067        type Owned = Self;
4068
4069        #[inline(always)]
4070        fn inline_align(_context: fidl::encoding::Context) -> usize {
4071            4
4072        }
4073
4074        #[inline(always)]
4075        fn inline_size(_context: fidl::encoding::Context) -> usize {
4076            4
4077        }
4078    }
4079
4080    unsafe impl<D: fidl::encoding::ResourceDialect>
4081        fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D>
4082        for &PeriodicAdvertisingSyncOnErrorRequest
4083    {
4084        #[inline]
4085        unsafe fn encode(
4086            self,
4087            encoder: &mut fidl::encoding::Encoder<'_, D>,
4088            offset: usize,
4089            _depth: fidl::encoding::Depth,
4090        ) -> fidl::Result<()> {
4091            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4092            // Delegate to tuple encoding.
4093            fidl::encoding::Encode::<PeriodicAdvertisingSyncOnErrorRequest, D>::encode(
4094                (<PeriodicAdvertisingSyncError as fidl::encoding::ValueTypeMarker>::borrow(
4095                    &self.error,
4096                ),),
4097                encoder,
4098                offset,
4099                _depth,
4100            )
4101        }
4102    }
4103    unsafe impl<
4104            D: fidl::encoding::ResourceDialect,
4105            T0: fidl::encoding::Encode<PeriodicAdvertisingSyncError, D>,
4106        > fidl::encoding::Encode<PeriodicAdvertisingSyncOnErrorRequest, D> for (T0,)
4107    {
4108        #[inline]
4109        unsafe fn encode(
4110            self,
4111            encoder: &mut fidl::encoding::Encoder<'_, D>,
4112            offset: usize,
4113            depth: fidl::encoding::Depth,
4114        ) -> fidl::Result<()> {
4115            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnErrorRequest>(offset);
4116            // Zero out padding regions. There's no need to apply masks
4117            // because the unmasked parts will be overwritten by fields.
4118            // Write the fields.
4119            self.0.encode(encoder, offset + 0, depth)?;
4120            Ok(())
4121        }
4122    }
4123
4124    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4125        for PeriodicAdvertisingSyncOnErrorRequest
4126    {
4127        #[inline(always)]
4128        fn new_empty() -> Self {
4129            Self { error: fidl::new_empty!(PeriodicAdvertisingSyncError, D) }
4130        }
4131
4132        #[inline]
4133        unsafe fn decode(
4134            &mut self,
4135            decoder: &mut fidl::encoding::Decoder<'_, D>,
4136            offset: usize,
4137            _depth: fidl::encoding::Depth,
4138        ) -> fidl::Result<()> {
4139            decoder.debug_check_bounds::<Self>(offset);
4140            // Verify that padding bytes are zero.
4141            fidl::decode!(
4142                PeriodicAdvertisingSyncError,
4143                D,
4144                &mut self.error,
4145                decoder,
4146                offset + 0,
4147                _depth
4148            )?;
4149            Ok(())
4150        }
4151    }
4152
4153    impl fidl::encoding::ValueTypeMarker for RemoteDevice {
4154        type Borrowed<'a> = &'a Self;
4155        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4156            value
4157        }
4158    }
4159
4160    unsafe impl fidl::encoding::TypeMarker for RemoteDevice {
4161        type Owned = Self;
4162
4163        #[inline(always)]
4164        fn inline_align(_context: fidl::encoding::Context) -> usize {
4165            8
4166        }
4167
4168        #[inline(always)]
4169        fn inline_size(_context: fidl::encoding::Context) -> usize {
4170            40
4171        }
4172    }
4173
4174    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RemoteDevice, D>
4175        for &RemoteDevice
4176    {
4177        #[inline]
4178        unsafe fn encode(
4179            self,
4180            encoder: &mut fidl::encoding::Encoder<'_, D>,
4181            offset: usize,
4182            _depth: fidl::encoding::Depth,
4183        ) -> fidl::Result<()> {
4184            encoder.debug_check_bounds::<RemoteDevice>(offset);
4185            // Delegate to tuple encoding.
4186            fidl::encoding::Encode::<RemoteDevice, D>::encode(
4187                (
4188                    <fidl::encoding::BoundedString<16> as fidl::encoding::ValueTypeMarker>::borrow(&self.identifier),
4189                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4190                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi),
4191                    <fidl::encoding::Boxed<AdvertisingDataDeprecated> as fidl::encoding::ValueTypeMarker>::borrow(&self.advertising_data),
4192                ),
4193                encoder, offset, _depth
4194            )
4195        }
4196    }
4197    unsafe impl<
4198            D: fidl::encoding::ResourceDialect,
4199            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<16>, D>,
4200            T1: fidl::encoding::Encode<bool, D>,
4201            T2: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4202            T3: fidl::encoding::Encode<fidl::encoding::Boxed<AdvertisingDataDeprecated>, D>,
4203        > fidl::encoding::Encode<RemoteDevice, D> for (T0, T1, T2, T3)
4204    {
4205        #[inline]
4206        unsafe fn encode(
4207            self,
4208            encoder: &mut fidl::encoding::Encoder<'_, D>,
4209            offset: usize,
4210            depth: fidl::encoding::Depth,
4211        ) -> fidl::Result<()> {
4212            encoder.debug_check_bounds::<RemoteDevice>(offset);
4213            // Zero out padding regions. There's no need to apply masks
4214            // because the unmasked parts will be overwritten by fields.
4215            unsafe {
4216                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
4217                (ptr as *mut u64).write_unaligned(0);
4218            }
4219            // Write the fields.
4220            self.0.encode(encoder, offset + 0, depth)?;
4221            self.1.encode(encoder, offset + 16, depth)?;
4222            self.2.encode(encoder, offset + 24, depth)?;
4223            self.3.encode(encoder, offset + 32, depth)?;
4224            Ok(())
4225        }
4226    }
4227
4228    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RemoteDevice {
4229        #[inline(always)]
4230        fn new_empty() -> Self {
4231            Self {
4232                identifier: fidl::new_empty!(fidl::encoding::BoundedString<16>, D),
4233                connectable: fidl::new_empty!(bool, D),
4234                rssi: fidl::new_empty!(
4235                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4236                    D
4237                ),
4238                advertising_data: fidl::new_empty!(
4239                    fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4240                    D
4241                ),
4242            }
4243        }
4244
4245        #[inline]
4246        unsafe fn decode(
4247            &mut self,
4248            decoder: &mut fidl::encoding::Decoder<'_, D>,
4249            offset: usize,
4250            _depth: fidl::encoding::Depth,
4251        ) -> fidl::Result<()> {
4252            decoder.debug_check_bounds::<Self>(offset);
4253            // Verify that padding bytes are zero.
4254            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
4255            let padval = unsafe { (ptr as *const u64).read_unaligned() };
4256            let mask = 0xffffffffffffff00u64;
4257            let maskedval = padval & mask;
4258            if maskedval != 0 {
4259                return Err(fidl::Error::NonZeroPadding {
4260                    padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
4261                });
4262            }
4263            fidl::decode!(
4264                fidl::encoding::BoundedString<16>,
4265                D,
4266                &mut self.identifier,
4267                decoder,
4268                offset + 0,
4269                _depth
4270            )?;
4271            fidl::decode!(bool, D, &mut self.connectable, decoder, offset + 16, _depth)?;
4272            fidl::decode!(
4273                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4274                D,
4275                &mut self.rssi,
4276                decoder,
4277                offset + 24,
4278                _depth
4279            )?;
4280            fidl::decode!(
4281                fidl::encoding::Boxed<AdvertisingDataDeprecated>,
4282                D,
4283                &mut self.advertising_data,
4284                decoder,
4285                offset + 32,
4286                _depth
4287            )?;
4288            Ok(())
4289        }
4290    }
4291
4292    impl fidl::encoding::ValueTypeMarker for ScanFilter {
4293        type Borrowed<'a> = &'a Self;
4294        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4295            value
4296        }
4297    }
4298
4299    unsafe impl fidl::encoding::TypeMarker for ScanFilter {
4300        type Owned = Self;
4301
4302        #[inline(always)]
4303        fn inline_align(_context: fidl::encoding::Context) -> usize {
4304            8
4305        }
4306
4307        #[inline(always)]
4308        fn inline_size(_context: fidl::encoding::Context) -> usize {
4309            72
4310        }
4311    }
4312
4313    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanFilter, D>
4314        for &ScanFilter
4315    {
4316        #[inline]
4317        unsafe fn encode(
4318            self,
4319            encoder: &mut fidl::encoding::Encoder<'_, D>,
4320            offset: usize,
4321            _depth: fidl::encoding::Depth,
4322        ) -> fidl::Result<()> {
4323            encoder.debug_check_bounds::<ScanFilter>(offset);
4324            // Delegate to tuple encoding.
4325            fidl::encoding::Encode::<ScanFilter, D>::encode(
4326                (
4327                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_uuids),
4328                    <fidl::encoding::Optional<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>> as fidl::encoding::ValueTypeMarker>::borrow(&self.service_data_uuids),
4329                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16> as fidl::encoding::ValueTypeMarker>::borrow(&self.manufacturer_identifier),
4330                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool> as fidl::encoding::ValueTypeMarker>::borrow(&self.connectable),
4331                    <fidl::encoding::Optional<fidl::encoding::BoundedString<248>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name_substring),
4332                    <fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8> as fidl::encoding::ValueTypeMarker>::borrow(&self.max_path_loss),
4333                ),
4334                encoder, offset, _depth
4335            )
4336        }
4337    }
4338    unsafe impl<
4339            D: fidl::encoding::ResourceDialect,
4340            T0: fidl::encoding::Encode<
4341                fidl::encoding::Optional<
4342                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4343                >,
4344                D,
4345            >,
4346            T1: fidl::encoding::Encode<
4347                fidl::encoding::Optional<
4348                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4349                >,
4350                D,
4351            >,
4352            T2: fidl::encoding::Encode<
4353                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4354                D,
4355            >,
4356            T3: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>, D>,
4357            T4: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<248>>, D>,
4358            T5: fidl::encoding::Encode<fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>, D>,
4359        > fidl::encoding::Encode<ScanFilter, D> for (T0, T1, T2, T3, T4, T5)
4360    {
4361        #[inline]
4362        unsafe fn encode(
4363            self,
4364            encoder: &mut fidl::encoding::Encoder<'_, D>,
4365            offset: usize,
4366            depth: fidl::encoding::Depth,
4367        ) -> fidl::Result<()> {
4368            encoder.debug_check_bounds::<ScanFilter>(offset);
4369            // Zero out padding regions. There's no need to apply masks
4370            // because the unmasked parts will be overwritten by fields.
4371            // Write the fields.
4372            self.0.encode(encoder, offset + 0, depth)?;
4373            self.1.encode(encoder, offset + 16, depth)?;
4374            self.2.encode(encoder, offset + 32, depth)?;
4375            self.3.encode(encoder, offset + 40, depth)?;
4376            self.4.encode(encoder, offset + 48, depth)?;
4377            self.5.encode(encoder, offset + 64, depth)?;
4378            Ok(())
4379        }
4380    }
4381
4382    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanFilter {
4383        #[inline(always)]
4384        fn new_empty() -> Self {
4385            Self {
4386                service_uuids: fidl::new_empty!(
4387                    fidl::encoding::Optional<
4388                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4389                    >,
4390                    D
4391                ),
4392                service_data_uuids: fidl::new_empty!(
4393                    fidl::encoding::Optional<
4394                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4395                    >,
4396                    D
4397                ),
4398                manufacturer_identifier: fidl::new_empty!(
4399                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4400                    D
4401                ),
4402                connectable: fidl::new_empty!(
4403                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4404                    D
4405                ),
4406                name_substring: fidl::new_empty!(
4407                    fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4408                    D
4409                ),
4410                max_path_loss: fidl::new_empty!(
4411                    fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4412                    D
4413                ),
4414            }
4415        }
4416
4417        #[inline]
4418        unsafe fn decode(
4419            &mut self,
4420            decoder: &mut fidl::encoding::Decoder<'_, D>,
4421            offset: usize,
4422            _depth: fidl::encoding::Depth,
4423        ) -> fidl::Result<()> {
4424            decoder.debug_check_bounds::<Self>(offset);
4425            // Verify that padding bytes are zero.
4426            fidl::decode!(
4427                fidl::encoding::Optional<
4428                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4429                >,
4430                D,
4431                &mut self.service_uuids,
4432                decoder,
4433                offset + 0,
4434                _depth
4435            )?;
4436            fidl::decode!(
4437                fidl::encoding::Optional<
4438                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<36>>,
4439                >,
4440                D,
4441                &mut self.service_data_uuids,
4442                decoder,
4443                offset + 16,
4444                _depth
4445            )?;
4446            fidl::decode!(
4447                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::UInt16>,
4448                D,
4449                &mut self.manufacturer_identifier,
4450                decoder,
4451                offset + 32,
4452                _depth
4453            )?;
4454            fidl::decode!(
4455                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Bool>,
4456                D,
4457                &mut self.connectable,
4458                decoder,
4459                offset + 40,
4460                _depth
4461            )?;
4462            fidl::decode!(
4463                fidl::encoding::Optional<fidl::encoding::BoundedString<248>>,
4464                D,
4465                &mut self.name_substring,
4466                decoder,
4467                offset + 48,
4468                _depth
4469            )?;
4470            fidl::decode!(
4471                fidl::encoding::Boxed<fidl_fuchsia_bluetooth__common::Int8>,
4472                D,
4473                &mut self.max_path_loss,
4474                decoder,
4475                offset + 64,
4476                _depth
4477            )?;
4478            Ok(())
4479        }
4480    }
4481
4482    impl fidl::encoding::ValueTypeMarker for ScanResultWatcherWatchResponse {
4483        type Borrowed<'a> = &'a Self;
4484        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4485            value
4486        }
4487    }
4488
4489    unsafe impl fidl::encoding::TypeMarker for ScanResultWatcherWatchResponse {
4490        type Owned = Self;
4491
4492        #[inline(always)]
4493        fn inline_align(_context: fidl::encoding::Context) -> usize {
4494            8
4495        }
4496
4497        #[inline(always)]
4498        fn inline_size(_context: fidl::encoding::Context) -> usize {
4499            16
4500        }
4501    }
4502
4503    unsafe impl<D: fidl::encoding::ResourceDialect>
4504        fidl::encoding::Encode<ScanResultWatcherWatchResponse, D>
4505        for &ScanResultWatcherWatchResponse
4506    {
4507        #[inline]
4508        unsafe fn encode(
4509            self,
4510            encoder: &mut fidl::encoding::Encoder<'_, D>,
4511            offset: usize,
4512            _depth: fidl::encoding::Depth,
4513        ) -> fidl::Result<()> {
4514            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4515            // Delegate to tuple encoding.
4516            fidl::encoding::Encode::<ScanResultWatcherWatchResponse, D>::encode(
4517                (
4518                    <fidl::encoding::UnboundedVector<Peer> as fidl::encoding::ValueTypeMarker>::borrow(&self.updated),
4519                ),
4520                encoder, offset, _depth
4521            )
4522        }
4523    }
4524    unsafe impl<
4525            D: fidl::encoding::ResourceDialect,
4526            T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<Peer>, D>,
4527        > fidl::encoding::Encode<ScanResultWatcherWatchResponse, D> for (T0,)
4528    {
4529        #[inline]
4530        unsafe fn encode(
4531            self,
4532            encoder: &mut fidl::encoding::Encoder<'_, D>,
4533            offset: usize,
4534            depth: fidl::encoding::Depth,
4535        ) -> fidl::Result<()> {
4536            encoder.debug_check_bounds::<ScanResultWatcherWatchResponse>(offset);
4537            // Zero out padding regions. There's no need to apply masks
4538            // because the unmasked parts will be overwritten by fields.
4539            // Write the fields.
4540            self.0.encode(encoder, offset + 0, depth)?;
4541            Ok(())
4542        }
4543    }
4544
4545    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4546        for ScanResultWatcherWatchResponse
4547    {
4548        #[inline(always)]
4549        fn new_empty() -> Self {
4550            Self { updated: fidl::new_empty!(fidl::encoding::UnboundedVector<Peer>, D) }
4551        }
4552
4553        #[inline]
4554        unsafe fn decode(
4555            &mut self,
4556            decoder: &mut fidl::encoding::Decoder<'_, D>,
4557            offset: usize,
4558            _depth: fidl::encoding::Depth,
4559        ) -> fidl::Result<()> {
4560            decoder.debug_check_bounds::<Self>(offset);
4561            // Verify that padding bytes are zero.
4562            fidl::decode!(
4563                fidl::encoding::UnboundedVector<Peer>,
4564                D,
4565                &mut self.updated,
4566                decoder,
4567                offset + 0,
4568                _depth
4569            )?;
4570            Ok(())
4571        }
4572    }
4573
4574    impl fidl::encoding::ValueTypeMarker for ServiceData {
4575        type Borrowed<'a> = &'a Self;
4576        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4577            value
4578        }
4579    }
4580
4581    unsafe impl fidl::encoding::TypeMarker for ServiceData {
4582        type Owned = Self;
4583
4584        #[inline(always)]
4585        fn inline_align(_context: fidl::encoding::Context) -> usize {
4586            8
4587        }
4588
4589        #[inline(always)]
4590        fn inline_size(_context: fidl::encoding::Context) -> usize {
4591            32
4592        }
4593    }
4594
4595    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceData, D>
4596        for &ServiceData
4597    {
4598        #[inline]
4599        unsafe fn encode(
4600            self,
4601            encoder: &mut fidl::encoding::Encoder<'_, D>,
4602            offset: usize,
4603            _depth: fidl::encoding::Depth,
4604        ) -> fidl::Result<()> {
4605            encoder.debug_check_bounds::<ServiceData>(offset);
4606            // Delegate to tuple encoding.
4607            fidl::encoding::Encode::<ServiceData, D>::encode(
4608                (
4609                    <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4610                    <fidl::encoding::Vector<u8, 252> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4611                ),
4612                encoder, offset, _depth
4613            )
4614        }
4615    }
4616    unsafe impl<
4617            D: fidl::encoding::ResourceDialect,
4618            T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::Uuid, D>,
4619            T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 252>, D>,
4620        > fidl::encoding::Encode<ServiceData, D> for (T0, T1)
4621    {
4622        #[inline]
4623        unsafe fn encode(
4624            self,
4625            encoder: &mut fidl::encoding::Encoder<'_, D>,
4626            offset: usize,
4627            depth: fidl::encoding::Depth,
4628        ) -> fidl::Result<()> {
4629            encoder.debug_check_bounds::<ServiceData>(offset);
4630            // Zero out padding regions. There's no need to apply masks
4631            // because the unmasked parts will be overwritten by fields.
4632            // Write the fields.
4633            self.0.encode(encoder, offset + 0, depth)?;
4634            self.1.encode(encoder, offset + 16, depth)?;
4635            Ok(())
4636        }
4637    }
4638
4639    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceData {
4640        #[inline(always)]
4641        fn new_empty() -> Self {
4642            Self {
4643                uuid: fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D),
4644                data: fidl::new_empty!(fidl::encoding::Vector<u8, 252>, D),
4645            }
4646        }
4647
4648        #[inline]
4649        unsafe fn decode(
4650            &mut self,
4651            decoder: &mut fidl::encoding::Decoder<'_, D>,
4652            offset: usize,
4653            _depth: fidl::encoding::Depth,
4654        ) -> fidl::Result<()> {
4655            decoder.debug_check_bounds::<Self>(offset);
4656            // Verify that padding bytes are zero.
4657            fidl::decode!(
4658                fidl_fuchsia_bluetooth__common::Uuid,
4659                D,
4660                &mut self.uuid,
4661                decoder,
4662                offset + 0,
4663                _depth
4664            )?;
4665            fidl::decode!(fidl::encoding::Vector<u8, 252>, D, &mut self.data, decoder, offset + 16, _depth)?;
4666            Ok(())
4667        }
4668    }
4669
4670    impl fidl::encoding::ValueTypeMarker for ServiceDataEntry {
4671        type Borrowed<'a> = &'a Self;
4672        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4673            value
4674        }
4675    }
4676
4677    unsafe impl fidl::encoding::TypeMarker for ServiceDataEntry {
4678        type Owned = Self;
4679
4680        #[inline(always)]
4681        fn inline_align(_context: fidl::encoding::Context) -> usize {
4682            8
4683        }
4684
4685        #[inline(always)]
4686        fn inline_size(_context: fidl::encoding::Context) -> usize {
4687            32
4688        }
4689    }
4690
4691    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceDataEntry, D>
4692        for &ServiceDataEntry
4693    {
4694        #[inline]
4695        unsafe fn encode(
4696            self,
4697            encoder: &mut fidl::encoding::Encoder<'_, D>,
4698            offset: usize,
4699            _depth: fidl::encoding::Depth,
4700        ) -> fidl::Result<()> {
4701            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4702            // Delegate to tuple encoding.
4703            fidl::encoding::Encode::<ServiceDataEntry, D>::encode(
4704                (
4705                    <fidl::encoding::BoundedString<36> as fidl::encoding::ValueTypeMarker>::borrow(&self.uuid),
4706                    <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.data),
4707                ),
4708                encoder, offset, _depth
4709            )
4710        }
4711    }
4712    unsafe impl<
4713            D: fidl::encoding::ResourceDialect,
4714            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<36>, D>,
4715            T1: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
4716        > fidl::encoding::Encode<ServiceDataEntry, D> for (T0, T1)
4717    {
4718        #[inline]
4719        unsafe fn encode(
4720            self,
4721            encoder: &mut fidl::encoding::Encoder<'_, D>,
4722            offset: usize,
4723            depth: fidl::encoding::Depth,
4724        ) -> fidl::Result<()> {
4725            encoder.debug_check_bounds::<ServiceDataEntry>(offset);
4726            // Zero out padding regions. There's no need to apply masks
4727            // because the unmasked parts will be overwritten by fields.
4728            // Write the fields.
4729            self.0.encode(encoder, offset + 0, depth)?;
4730            self.1.encode(encoder, offset + 16, depth)?;
4731            Ok(())
4732        }
4733    }
4734
4735    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceDataEntry {
4736        #[inline(always)]
4737        fn new_empty() -> Self {
4738            Self {
4739                uuid: fidl::new_empty!(fidl::encoding::BoundedString<36>, D),
4740                data: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
4741            }
4742        }
4743
4744        #[inline]
4745        unsafe fn decode(
4746            &mut self,
4747            decoder: &mut fidl::encoding::Decoder<'_, D>,
4748            offset: usize,
4749            _depth: fidl::encoding::Depth,
4750        ) -> fidl::Result<()> {
4751            decoder.debug_check_bounds::<Self>(offset);
4752            // Verify that padding bytes are zero.
4753            fidl::decode!(
4754                fidl::encoding::BoundedString<36>,
4755                D,
4756                &mut self.uuid,
4757                decoder,
4758                offset + 0,
4759                _depth
4760            )?;
4761            fidl::decode!(
4762                fidl::encoding::UnboundedVector<u8>,
4763                D,
4764                &mut self.data,
4765                decoder,
4766                offset + 16,
4767                _depth
4768            )?;
4769            Ok(())
4770        }
4771    }
4772
4773    impl AcceptedChannelParameters {
4774        #[inline(always)]
4775        fn max_ordinal_present(&self) -> u64 {
4776            if let Some(_) = self.max_packet_size {
4777                return 2;
4778            }
4779            if let Some(_) = self.accepted_channel_modes {
4780                return 1;
4781            }
4782            0
4783        }
4784    }
4785
4786    impl fidl::encoding::ValueTypeMarker for AcceptedChannelParameters {
4787        type Borrowed<'a> = &'a Self;
4788        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4789            value
4790        }
4791    }
4792
4793    unsafe impl fidl::encoding::TypeMarker for AcceptedChannelParameters {
4794        type Owned = Self;
4795
4796        #[inline(always)]
4797        fn inline_align(_context: fidl::encoding::Context) -> usize {
4798            8
4799        }
4800
4801        #[inline(always)]
4802        fn inline_size(_context: fidl::encoding::Context) -> usize {
4803            16
4804        }
4805    }
4806
4807    unsafe impl<D: fidl::encoding::ResourceDialect>
4808        fidl::encoding::Encode<AcceptedChannelParameters, D> for &AcceptedChannelParameters
4809    {
4810        unsafe fn encode(
4811            self,
4812            encoder: &mut fidl::encoding::Encoder<'_, D>,
4813            offset: usize,
4814            mut depth: fidl::encoding::Depth,
4815        ) -> fidl::Result<()> {
4816            encoder.debug_check_bounds::<AcceptedChannelParameters>(offset);
4817            // Vector header
4818            let max_ordinal: u64 = self.max_ordinal_present();
4819            encoder.write_num(max_ordinal, offset);
4820            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4821            // Calling encoder.out_of_line_offset(0) is not allowed.
4822            if max_ordinal == 0 {
4823                return Ok(());
4824            }
4825            depth.increment()?;
4826            let envelope_size = 8;
4827            let bytes_len = max_ordinal as usize * envelope_size;
4828            #[allow(unused_variables)]
4829            let offset = encoder.out_of_line_offset(bytes_len);
4830            let mut _prev_end_offset: usize = 0;
4831            if 1 > max_ordinal {
4832                return Ok(());
4833            }
4834
4835            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4836            // are envelope_size bytes.
4837            let cur_offset: usize = (1 - 1) * envelope_size;
4838
4839            // Zero reserved fields.
4840            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4841
4842            // Safety:
4843            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4844            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4845            //   envelope_size bytes, there is always sufficient room.
4846            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>, D>(
4847            self.accepted_channel_modes.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode> as fidl::encoding::ValueTypeMarker>::borrow),
4848            encoder, offset + cur_offset, depth
4849        )?;
4850
4851            _prev_end_offset = cur_offset + envelope_size;
4852            if 2 > max_ordinal {
4853                return Ok(());
4854            }
4855
4856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4857            // are envelope_size bytes.
4858            let cur_offset: usize = (2 - 1) * envelope_size;
4859
4860            // Zero reserved fields.
4861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4862
4863            // Safety:
4864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4866            //   envelope_size bytes, there is always sufficient room.
4867            fidl::encoding::encode_in_envelope_optional::<u16, D>(
4868                self.max_packet_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4869                encoder,
4870                offset + cur_offset,
4871                depth,
4872            )?;
4873
4874            _prev_end_offset = cur_offset + envelope_size;
4875
4876            Ok(())
4877        }
4878    }
4879
4880    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4881        for AcceptedChannelParameters
4882    {
4883        #[inline(always)]
4884        fn new_empty() -> Self {
4885            Self::default()
4886        }
4887
4888        unsafe fn decode(
4889            &mut self,
4890            decoder: &mut fidl::encoding::Decoder<'_, D>,
4891            offset: usize,
4892            mut depth: fidl::encoding::Depth,
4893        ) -> fidl::Result<()> {
4894            decoder.debug_check_bounds::<Self>(offset);
4895            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4896                None => return Err(fidl::Error::NotNullable),
4897                Some(len) => len,
4898            };
4899            // Calling decoder.out_of_line_offset(0) is not allowed.
4900            if len == 0 {
4901                return Ok(());
4902            };
4903            depth.increment()?;
4904            let envelope_size = 8;
4905            let bytes_len = len * envelope_size;
4906            let offset = decoder.out_of_line_offset(bytes_len)?;
4907            // Decode the envelope for each type.
4908            let mut _next_ordinal_to_read = 0;
4909            let mut next_offset = offset;
4910            let end_offset = offset + bytes_len;
4911            _next_ordinal_to_read += 1;
4912            if next_offset >= end_offset {
4913                return Ok(());
4914            }
4915
4916            // Decode unknown envelopes for gaps in ordinals.
4917            while _next_ordinal_to_read < 1 {
4918                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4919                _next_ordinal_to_read += 1;
4920                next_offset += envelope_size;
4921            }
4922
4923            let next_out_of_line = decoder.next_out_of_line();
4924            let handles_before = decoder.remaining_handles();
4925            if let Some((inlined, num_bytes, num_handles)) =
4926                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4927            {
4928                let member_inline_size = <fidl::encoding::UnboundedVector<
4929                    fidl_fuchsia_bluetooth__common::ChannelMode,
4930                > as fidl::encoding::TypeMarker>::inline_size(
4931                    decoder.context
4932                );
4933                if inlined != (member_inline_size <= 4) {
4934                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4935                }
4936                let inner_offset;
4937                let mut inner_depth = depth.clone();
4938                if inlined {
4939                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4940                    inner_offset = next_offset;
4941                } else {
4942                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4943                    inner_depth.increment()?;
4944                }
4945                let val_ref = self.accepted_channel_modes.get_or_insert_with(|| {
4946                    fidl::new_empty!(
4947                        fidl::encoding::UnboundedVector<
4948                            fidl_fuchsia_bluetooth__common::ChannelMode,
4949                        >,
4950                        D
4951                    )
4952                });
4953                fidl::decode!(
4954                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::ChannelMode>,
4955                    D,
4956                    val_ref,
4957                    decoder,
4958                    inner_offset,
4959                    inner_depth
4960                )?;
4961                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4962                {
4963                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
4964                }
4965                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4966                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4967                }
4968            }
4969
4970            next_offset += envelope_size;
4971            _next_ordinal_to_read += 1;
4972            if next_offset >= end_offset {
4973                return Ok(());
4974            }
4975
4976            // Decode unknown envelopes for gaps in ordinals.
4977            while _next_ordinal_to_read < 2 {
4978                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4979                _next_ordinal_to_read += 1;
4980                next_offset += envelope_size;
4981            }
4982
4983            let next_out_of_line = decoder.next_out_of_line();
4984            let handles_before = decoder.remaining_handles();
4985            if let Some((inlined, num_bytes, num_handles)) =
4986                fidl::encoding::decode_envelope_header(decoder, next_offset)?
4987            {
4988                let member_inline_size =
4989                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4990                if inlined != (member_inline_size <= 4) {
4991                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
4992                }
4993                let inner_offset;
4994                let mut inner_depth = depth.clone();
4995                if inlined {
4996                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4997                    inner_offset = next_offset;
4998                } else {
4999                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5000                    inner_depth.increment()?;
5001                }
5002                let val_ref = self.max_packet_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
5003                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5004                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5005                {
5006                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5007                }
5008                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5009                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5010                }
5011            }
5012
5013            next_offset += envelope_size;
5014
5015            // Decode the remaining unknown envelopes.
5016            while next_offset < end_offset {
5017                _next_ordinal_to_read += 1;
5018                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5019                next_offset += envelope_size;
5020            }
5021
5022            Ok(())
5023        }
5024    }
5025
5026    impl AdvertisingData {
5027        #[inline(always)]
5028        fn max_ordinal_present(&self) -> u64 {
5029            if let Some(_) = self.broadcast_name {
5030                return 10;
5031            }
5032            if let Some(_) = self.resolvable_set_identifier {
5033                return 9;
5034            }
5035            if let Some(_) = self.include_tx_power_level {
5036                return 8;
5037            }
5038            if let Some(_) = self.uris {
5039                return 7;
5040            }
5041            if let Some(_) = self.manufacturer_data {
5042                return 6;
5043            }
5044            if let Some(_) = self.service_data {
5045                return 5;
5046            }
5047            if let Some(_) = self.service_uuids {
5048                return 4;
5049            }
5050            if let Some(_) = self.tx_power_level {
5051                return 3;
5052            }
5053            if let Some(_) = self.appearance {
5054                return 2;
5055            }
5056            if let Some(_) = self.name {
5057                return 1;
5058            }
5059            0
5060        }
5061    }
5062
5063    impl fidl::encoding::ValueTypeMarker for AdvertisingData {
5064        type Borrowed<'a> = &'a Self;
5065        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5066            value
5067        }
5068    }
5069
5070    unsafe impl fidl::encoding::TypeMarker for AdvertisingData {
5071        type Owned = Self;
5072
5073        #[inline(always)]
5074        fn inline_align(_context: fidl::encoding::Context) -> usize {
5075            8
5076        }
5077
5078        #[inline(always)]
5079        fn inline_size(_context: fidl::encoding::Context) -> usize {
5080            16
5081        }
5082    }
5083
5084    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingData, D>
5085        for &AdvertisingData
5086    {
5087        unsafe fn encode(
5088            self,
5089            encoder: &mut fidl::encoding::Encoder<'_, D>,
5090            offset: usize,
5091            mut depth: fidl::encoding::Depth,
5092        ) -> fidl::Result<()> {
5093            encoder.debug_check_bounds::<AdvertisingData>(offset);
5094            // Vector header
5095            let max_ordinal: u64 = self.max_ordinal_present();
5096            encoder.write_num(max_ordinal, offset);
5097            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5098            // Calling encoder.out_of_line_offset(0) is not allowed.
5099            if max_ordinal == 0 {
5100                return Ok(());
5101            }
5102            depth.increment()?;
5103            let envelope_size = 8;
5104            let bytes_len = max_ordinal as usize * envelope_size;
5105            #[allow(unused_variables)]
5106            let offset = encoder.out_of_line_offset(bytes_len);
5107            let mut _prev_end_offset: usize = 0;
5108            if 1 > max_ordinal {
5109                return Ok(());
5110            }
5111
5112            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5113            // are envelope_size bytes.
5114            let cur_offset: usize = (1 - 1) * envelope_size;
5115
5116            // Zero reserved fields.
5117            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5118
5119            // Safety:
5120            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5121            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5122            //   envelope_size bytes, there is always sufficient room.
5123            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
5124                self.name.as_ref().map(
5125                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
5126                ),
5127                encoder,
5128                offset + cur_offset,
5129                depth,
5130            )?;
5131
5132            _prev_end_offset = cur_offset + envelope_size;
5133            if 2 > max_ordinal {
5134                return Ok(());
5135            }
5136
5137            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5138            // are envelope_size bytes.
5139            let cur_offset: usize = (2 - 1) * envelope_size;
5140
5141            // Zero reserved fields.
5142            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5143
5144            // Safety:
5145            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5146            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5147            //   envelope_size bytes, there is always sufficient room.
5148            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
5149            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
5150            encoder, offset + cur_offset, depth
5151        )?;
5152
5153            _prev_end_offset = cur_offset + envelope_size;
5154            if 3 > max_ordinal {
5155                return Ok(());
5156            }
5157
5158            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5159            // are envelope_size bytes.
5160            let cur_offset: usize = (3 - 1) * envelope_size;
5161
5162            // Zero reserved fields.
5163            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5164
5165            // Safety:
5166            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5167            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5168            //   envelope_size bytes, there is always sufficient room.
5169            fidl::encoding::encode_in_envelope_optional::<i8, D>(
5170                self.tx_power_level.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5171                encoder,
5172                offset + cur_offset,
5173                depth,
5174            )?;
5175
5176            _prev_end_offset = cur_offset + envelope_size;
5177            if 4 > max_ordinal {
5178                return Ok(());
5179            }
5180
5181            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5182            // are envelope_size bytes.
5183            let cur_offset: usize = (4 - 1) * envelope_size;
5184
5185            // Zero reserved fields.
5186            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5187
5188            // Safety:
5189            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5190            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5191            //   envelope_size bytes, there is always sufficient room.
5192            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
5193            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
5194            encoder, offset + cur_offset, depth
5195        )?;
5196
5197            _prev_end_offset = cur_offset + envelope_size;
5198            if 5 > max_ordinal {
5199                return Ok(());
5200            }
5201
5202            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5203            // are envelope_size bytes.
5204            let cur_offset: usize = (5 - 1) * envelope_size;
5205
5206            // Zero reserved fields.
5207            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5208
5209            // Safety:
5210            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5211            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5212            //   envelope_size bytes, there is always sufficient room.
5213            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
5214            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
5215            encoder, offset + cur_offset, depth
5216        )?;
5217
5218            _prev_end_offset = cur_offset + envelope_size;
5219            if 6 > max_ordinal {
5220                return Ok(());
5221            }
5222
5223            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5224            // are envelope_size bytes.
5225            let cur_offset: usize = (6 - 1) * envelope_size;
5226
5227            // Zero reserved fields.
5228            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5229
5230            // Safety:
5231            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5232            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5233            //   envelope_size bytes, there is always sufficient room.
5234            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
5235            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
5236            encoder, offset + cur_offset, depth
5237        )?;
5238
5239            _prev_end_offset = cur_offset + envelope_size;
5240            if 7 > max_ordinal {
5241                return Ok(());
5242            }
5243
5244            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5245            // are envelope_size bytes.
5246            let cur_offset: usize = (7 - 1) * envelope_size;
5247
5248            // Zero reserved fields.
5249            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5250
5251            // Safety:
5252            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5253            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5254            //   envelope_size bytes, there is always sufficient room.
5255            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
5256            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
5257            encoder, offset + cur_offset, depth
5258        )?;
5259
5260            _prev_end_offset = cur_offset + envelope_size;
5261            if 8 > max_ordinal {
5262                return Ok(());
5263            }
5264
5265            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5266            // are envelope_size bytes.
5267            let cur_offset: usize = (8 - 1) * envelope_size;
5268
5269            // Zero reserved fields.
5270            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5271
5272            // Safety:
5273            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5274            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5275            //   envelope_size bytes, there is always sufficient room.
5276            fidl::encoding::encode_in_envelope_optional::<bool, D>(
5277                self.include_tx_power_level
5278                    .as_ref()
5279                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5280                encoder,
5281                offset + cur_offset,
5282                depth,
5283            )?;
5284
5285            _prev_end_offset = cur_offset + envelope_size;
5286            if 9 > max_ordinal {
5287                return Ok(());
5288            }
5289
5290            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5291            // are envelope_size bytes.
5292            let cur_offset: usize = (9 - 1) * envelope_size;
5293
5294            // Zero reserved fields.
5295            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5296
5297            // Safety:
5298            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5299            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5300            //   envelope_size bytes, there is always sufficient room.
5301            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5302                self.resolvable_set_identifier
5303                    .as_ref()
5304                    .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5305                encoder,
5306                offset + cur_offset,
5307                depth,
5308            )?;
5309
5310            _prev_end_offset = cur_offset + envelope_size;
5311            if 10 > max_ordinal {
5312                return Ok(());
5313            }
5314
5315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5316            // are envelope_size bytes.
5317            let cur_offset: usize = (10 - 1) * envelope_size;
5318
5319            // Zero reserved fields.
5320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5321
5322            // Safety:
5323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5325            //   envelope_size bytes, there is always sufficient room.
5326            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
5327                self.broadcast_name.as_ref().map(
5328                    <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
5329                ),
5330                encoder,
5331                offset + cur_offset,
5332                depth,
5333            )?;
5334
5335            _prev_end_offset = cur_offset + envelope_size;
5336
5337            Ok(())
5338        }
5339    }
5340
5341    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingData {
5342        #[inline(always)]
5343        fn new_empty() -> Self {
5344            Self::default()
5345        }
5346
5347        unsafe fn decode(
5348            &mut self,
5349            decoder: &mut fidl::encoding::Decoder<'_, D>,
5350            offset: usize,
5351            mut depth: fidl::encoding::Depth,
5352        ) -> fidl::Result<()> {
5353            decoder.debug_check_bounds::<Self>(offset);
5354            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5355                None => return Err(fidl::Error::NotNullable),
5356                Some(len) => len,
5357            };
5358            // Calling decoder.out_of_line_offset(0) is not allowed.
5359            if len == 0 {
5360                return Ok(());
5361            };
5362            depth.increment()?;
5363            let envelope_size = 8;
5364            let bytes_len = len * envelope_size;
5365            let offset = decoder.out_of_line_offset(bytes_len)?;
5366            // Decode the envelope for each type.
5367            let mut _next_ordinal_to_read = 0;
5368            let mut next_offset = offset;
5369            let end_offset = offset + bytes_len;
5370            _next_ordinal_to_read += 1;
5371            if next_offset >= end_offset {
5372                return Ok(());
5373            }
5374
5375            // Decode unknown envelopes for gaps in ordinals.
5376            while _next_ordinal_to_read < 1 {
5377                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5378                _next_ordinal_to_read += 1;
5379                next_offset += envelope_size;
5380            }
5381
5382            let next_out_of_line = decoder.next_out_of_line();
5383            let handles_before = decoder.remaining_handles();
5384            if let Some((inlined, num_bytes, num_handles)) =
5385                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5386            {
5387                let member_inline_size =
5388                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
5389                        decoder.context,
5390                    );
5391                if inlined != (member_inline_size <= 4) {
5392                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5393                }
5394                let inner_offset;
5395                let mut inner_depth = depth.clone();
5396                if inlined {
5397                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5398                    inner_offset = next_offset;
5399                } else {
5400                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5401                    inner_depth.increment()?;
5402                }
5403                let val_ref = self
5404                    .name
5405                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
5406                fidl::decode!(
5407                    fidl::encoding::BoundedString<248>,
5408                    D,
5409                    val_ref,
5410                    decoder,
5411                    inner_offset,
5412                    inner_depth
5413                )?;
5414                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5415                {
5416                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5417                }
5418                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5419                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5420                }
5421            }
5422
5423            next_offset += envelope_size;
5424            _next_ordinal_to_read += 1;
5425            if next_offset >= end_offset {
5426                return Ok(());
5427            }
5428
5429            // Decode unknown envelopes for gaps in ordinals.
5430            while _next_ordinal_to_read < 2 {
5431                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5432                _next_ordinal_to_read += 1;
5433                next_offset += envelope_size;
5434            }
5435
5436            let next_out_of_line = decoder.next_out_of_line();
5437            let handles_before = decoder.remaining_handles();
5438            if let Some((inlined, num_bytes, num_handles)) =
5439                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5440            {
5441                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5442                if inlined != (member_inline_size <= 4) {
5443                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5444                }
5445                let inner_offset;
5446                let mut inner_depth = depth.clone();
5447                if inlined {
5448                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5449                    inner_offset = next_offset;
5450                } else {
5451                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5452                    inner_depth.increment()?;
5453                }
5454                let val_ref = self.appearance.get_or_insert_with(|| {
5455                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
5456                });
5457                fidl::decode!(
5458                    fidl_fuchsia_bluetooth__common::Appearance,
5459                    D,
5460                    val_ref,
5461                    decoder,
5462                    inner_offset,
5463                    inner_depth
5464                )?;
5465                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5466                {
5467                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5468                }
5469                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5470                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5471                }
5472            }
5473
5474            next_offset += envelope_size;
5475            _next_ordinal_to_read += 1;
5476            if next_offset >= end_offset {
5477                return Ok(());
5478            }
5479
5480            // Decode unknown envelopes for gaps in ordinals.
5481            while _next_ordinal_to_read < 3 {
5482                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5483                _next_ordinal_to_read += 1;
5484                next_offset += envelope_size;
5485            }
5486
5487            let next_out_of_line = decoder.next_out_of_line();
5488            let handles_before = decoder.remaining_handles();
5489            if let Some((inlined, num_bytes, num_handles)) =
5490                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5491            {
5492                let member_inline_size =
5493                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5494                if inlined != (member_inline_size <= 4) {
5495                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5496                }
5497                let inner_offset;
5498                let mut inner_depth = depth.clone();
5499                if inlined {
5500                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5501                    inner_offset = next_offset;
5502                } else {
5503                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5504                    inner_depth.increment()?;
5505                }
5506                let val_ref = self.tx_power_level.get_or_insert_with(|| fidl::new_empty!(i8, D));
5507                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
5508                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5509                {
5510                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5511                }
5512                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5513                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5514                }
5515            }
5516
5517            next_offset += envelope_size;
5518            _next_ordinal_to_read += 1;
5519            if next_offset >= end_offset {
5520                return Ok(());
5521            }
5522
5523            // Decode unknown envelopes for gaps in ordinals.
5524            while _next_ordinal_to_read < 4 {
5525                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5526                _next_ordinal_to_read += 1;
5527                next_offset += envelope_size;
5528            }
5529
5530            let next_out_of_line = decoder.next_out_of_line();
5531            let handles_before = decoder.remaining_handles();
5532            if let Some((inlined, num_bytes, num_handles)) =
5533                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5534            {
5535                let member_inline_size = <fidl::encoding::UnboundedVector<
5536                    fidl_fuchsia_bluetooth__common::Uuid,
5537                > as fidl::encoding::TypeMarker>::inline_size(
5538                    decoder.context
5539                );
5540                if inlined != (member_inline_size <= 4) {
5541                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5542                }
5543                let inner_offset;
5544                let mut inner_depth = depth.clone();
5545                if inlined {
5546                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5547                    inner_offset = next_offset;
5548                } else {
5549                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5550                    inner_depth.increment()?;
5551                }
5552                let val_ref = self.service_uuids.get_or_insert_with(|| {
5553                    fidl::new_empty!(
5554                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5555                        D
5556                    )
5557                });
5558                fidl::decode!(
5559                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
5560                    D,
5561                    val_ref,
5562                    decoder,
5563                    inner_offset,
5564                    inner_depth
5565                )?;
5566                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5567                {
5568                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5569                }
5570                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5571                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5572                }
5573            }
5574
5575            next_offset += envelope_size;
5576            _next_ordinal_to_read += 1;
5577            if next_offset >= end_offset {
5578                return Ok(());
5579            }
5580
5581            // Decode unknown envelopes for gaps in ordinals.
5582            while _next_ordinal_to_read < 5 {
5583                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5584                _next_ordinal_to_read += 1;
5585                next_offset += envelope_size;
5586            }
5587
5588            let next_out_of_line = decoder.next_out_of_line();
5589            let handles_before = decoder.remaining_handles();
5590            if let Some((inlined, num_bytes, num_handles)) =
5591                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5592            {
5593                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5594                if inlined != (member_inline_size <= 4) {
5595                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5596                }
5597                let inner_offset;
5598                let mut inner_depth = depth.clone();
5599                if inlined {
5600                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5601                    inner_offset = next_offset;
5602                } else {
5603                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5604                    inner_depth.increment()?;
5605                }
5606                let val_ref = self.service_data.get_or_insert_with(|| {
5607                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
5608                });
5609                fidl::decode!(
5610                    fidl::encoding::UnboundedVector<ServiceData>,
5611                    D,
5612                    val_ref,
5613                    decoder,
5614                    inner_offset,
5615                    inner_depth
5616                )?;
5617                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5618                {
5619                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5620                }
5621                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5622                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5623                }
5624            }
5625
5626            next_offset += envelope_size;
5627            _next_ordinal_to_read += 1;
5628            if next_offset >= end_offset {
5629                return Ok(());
5630            }
5631
5632            // Decode unknown envelopes for gaps in ordinals.
5633            while _next_ordinal_to_read < 6 {
5634                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5635                _next_ordinal_to_read += 1;
5636                next_offset += envelope_size;
5637            }
5638
5639            let next_out_of_line = decoder.next_out_of_line();
5640            let handles_before = decoder.remaining_handles();
5641            if let Some((inlined, num_bytes, num_handles)) =
5642                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5643            {
5644                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5645                if inlined != (member_inline_size <= 4) {
5646                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5647                }
5648                let inner_offset;
5649                let mut inner_depth = depth.clone();
5650                if inlined {
5651                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5652                    inner_offset = next_offset;
5653                } else {
5654                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5655                    inner_depth.increment()?;
5656                }
5657                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
5658                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
5659                });
5660                fidl::decode!(
5661                    fidl::encoding::UnboundedVector<ManufacturerData>,
5662                    D,
5663                    val_ref,
5664                    decoder,
5665                    inner_offset,
5666                    inner_depth
5667                )?;
5668                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5669                {
5670                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5671                }
5672                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5673                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5674                }
5675            }
5676
5677            next_offset += envelope_size;
5678            _next_ordinal_to_read += 1;
5679            if next_offset >= end_offset {
5680                return Ok(());
5681            }
5682
5683            // Decode unknown envelopes for gaps in ordinals.
5684            while _next_ordinal_to_read < 7 {
5685                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5686                _next_ordinal_to_read += 1;
5687                next_offset += envelope_size;
5688            }
5689
5690            let next_out_of_line = decoder.next_out_of_line();
5691            let handles_before = decoder.remaining_handles();
5692            if let Some((inlined, num_bytes, num_handles)) =
5693                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5694            {
5695                let member_inline_size = <fidl::encoding::UnboundedVector<
5696                    fidl::encoding::BoundedString<278>,
5697                > as fidl::encoding::TypeMarker>::inline_size(
5698                    decoder.context
5699                );
5700                if inlined != (member_inline_size <= 4) {
5701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5702                }
5703                let inner_offset;
5704                let mut inner_depth = depth.clone();
5705                if inlined {
5706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5707                    inner_offset = next_offset;
5708                } else {
5709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5710                    inner_depth.increment()?;
5711                }
5712                let val_ref = self.uris.get_or_insert_with(|| {
5713                    fidl::new_empty!(
5714                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5715                        D
5716                    )
5717                });
5718                fidl::decode!(
5719                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
5720                    D,
5721                    val_ref,
5722                    decoder,
5723                    inner_offset,
5724                    inner_depth
5725                )?;
5726                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5727                {
5728                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5729                }
5730                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5731                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5732                }
5733            }
5734
5735            next_offset += envelope_size;
5736            _next_ordinal_to_read += 1;
5737            if next_offset >= end_offset {
5738                return Ok(());
5739            }
5740
5741            // Decode unknown envelopes for gaps in ordinals.
5742            while _next_ordinal_to_read < 8 {
5743                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5744                _next_ordinal_to_read += 1;
5745                next_offset += envelope_size;
5746            }
5747
5748            let next_out_of_line = decoder.next_out_of_line();
5749            let handles_before = decoder.remaining_handles();
5750            if let Some((inlined, num_bytes, num_handles)) =
5751                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5752            {
5753                let member_inline_size =
5754                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5755                if inlined != (member_inline_size <= 4) {
5756                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5757                }
5758                let inner_offset;
5759                let mut inner_depth = depth.clone();
5760                if inlined {
5761                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5762                    inner_offset = next_offset;
5763                } else {
5764                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5765                    inner_depth.increment()?;
5766                }
5767                let val_ref =
5768                    self.include_tx_power_level.get_or_insert_with(|| fidl::new_empty!(bool, D));
5769                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5770                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5771                {
5772                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5773                }
5774                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5775                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5776                }
5777            }
5778
5779            next_offset += envelope_size;
5780            _next_ordinal_to_read += 1;
5781            if next_offset >= end_offset {
5782                return Ok(());
5783            }
5784
5785            // Decode unknown envelopes for gaps in ordinals.
5786            while _next_ordinal_to_read < 9 {
5787                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5788                _next_ordinal_to_read += 1;
5789                next_offset += envelope_size;
5790            }
5791
5792            let next_out_of_line = decoder.next_out_of_line();
5793            let handles_before = decoder.remaining_handles();
5794            if let Some((inlined, num_bytes, num_handles)) =
5795                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5796            {
5797                let member_inline_size =
5798                    <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
5799                        decoder.context,
5800                    );
5801                if inlined != (member_inline_size <= 4) {
5802                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5803                }
5804                let inner_offset;
5805                let mut inner_depth = depth.clone();
5806                if inlined {
5807                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5808                    inner_offset = next_offset;
5809                } else {
5810                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5811                    inner_depth.increment()?;
5812                }
5813                let val_ref = self
5814                    .resolvable_set_identifier
5815                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
5816                fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
5817                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5818                {
5819                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5820                }
5821                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5822                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5823                }
5824            }
5825
5826            next_offset += envelope_size;
5827            _next_ordinal_to_read += 1;
5828            if next_offset >= end_offset {
5829                return Ok(());
5830            }
5831
5832            // Decode unknown envelopes for gaps in ordinals.
5833            while _next_ordinal_to_read < 10 {
5834                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5835                _next_ordinal_to_read += 1;
5836                next_offset += envelope_size;
5837            }
5838
5839            let next_out_of_line = decoder.next_out_of_line();
5840            let handles_before = decoder.remaining_handles();
5841            if let Some((inlined, num_bytes, num_handles)) =
5842                fidl::encoding::decode_envelope_header(decoder, next_offset)?
5843            {
5844                let member_inline_size =
5845                    <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
5846                        decoder.context,
5847                    );
5848                if inlined != (member_inline_size <= 4) {
5849                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
5850                }
5851                let inner_offset;
5852                let mut inner_depth = depth.clone();
5853                if inlined {
5854                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5855                    inner_offset = next_offset;
5856                } else {
5857                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5858                    inner_depth.increment()?;
5859                }
5860                let val_ref = self
5861                    .broadcast_name
5862                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
5863                fidl::decode!(
5864                    fidl::encoding::BoundedString<128>,
5865                    D,
5866                    val_ref,
5867                    decoder,
5868                    inner_offset,
5869                    inner_depth
5870                )?;
5871                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5872                {
5873                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
5874                }
5875                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5876                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5877                }
5878            }
5879
5880            next_offset += envelope_size;
5881
5882            // Decode the remaining unknown envelopes.
5883            while next_offset < end_offset {
5884                _next_ordinal_to_read += 1;
5885                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5886                next_offset += envelope_size;
5887            }
5888
5889            Ok(())
5890        }
5891    }
5892
5893    impl AdvertisingParameters {
5894        #[inline(always)]
5895        fn max_ordinal_present(&self) -> u64 {
5896            if let Some(_) = self.address_type {
5897                return 7;
5898            }
5899            if let Some(_) = self.advertising_procedure {
5900                return 6;
5901            }
5902            if let Some(_) = self.connection_options {
5903                return 5;
5904            }
5905            if let Some(_) = self.connectable {
5906                return 4;
5907            }
5908            if let Some(_) = self.mode_hint {
5909                return 3;
5910            }
5911            if let Some(_) = self.scan_response {
5912                return 2;
5913            }
5914            if let Some(_) = self.data {
5915                return 1;
5916            }
5917            0
5918        }
5919    }
5920
5921    impl fidl::encoding::ValueTypeMarker for AdvertisingParameters {
5922        type Borrowed<'a> = &'a Self;
5923        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5924            value
5925        }
5926    }
5927
5928    unsafe impl fidl::encoding::TypeMarker for AdvertisingParameters {
5929        type Owned = Self;
5930
5931        #[inline(always)]
5932        fn inline_align(_context: fidl::encoding::Context) -> usize {
5933            8
5934        }
5935
5936        #[inline(always)]
5937        fn inline_size(_context: fidl::encoding::Context) -> usize {
5938            16
5939        }
5940    }
5941
5942    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingParameters, D>
5943        for &AdvertisingParameters
5944    {
5945        unsafe fn encode(
5946            self,
5947            encoder: &mut fidl::encoding::Encoder<'_, D>,
5948            offset: usize,
5949            mut depth: fidl::encoding::Depth,
5950        ) -> fidl::Result<()> {
5951            encoder.debug_check_bounds::<AdvertisingParameters>(offset);
5952            // Vector header
5953            let max_ordinal: u64 = self.max_ordinal_present();
5954            encoder.write_num(max_ordinal, offset);
5955            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5956            // Calling encoder.out_of_line_offset(0) is not allowed.
5957            if max_ordinal == 0 {
5958                return Ok(());
5959            }
5960            depth.increment()?;
5961            let envelope_size = 8;
5962            let bytes_len = max_ordinal as usize * envelope_size;
5963            #[allow(unused_variables)]
5964            let offset = encoder.out_of_line_offset(bytes_len);
5965            let mut _prev_end_offset: usize = 0;
5966            if 1 > max_ordinal {
5967                return Ok(());
5968            }
5969
5970            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5971            // are envelope_size bytes.
5972            let cur_offset: usize = (1 - 1) * envelope_size;
5973
5974            // Zero reserved fields.
5975            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5976
5977            // Safety:
5978            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5979            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5980            //   envelope_size bytes, there is always sufficient room.
5981            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
5982                self.data
5983                    .as_ref()
5984                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
5985                encoder,
5986                offset + cur_offset,
5987                depth,
5988            )?;
5989
5990            _prev_end_offset = cur_offset + envelope_size;
5991            if 2 > max_ordinal {
5992                return Ok(());
5993            }
5994
5995            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5996            // are envelope_size bytes.
5997            let cur_offset: usize = (2 - 1) * envelope_size;
5998
5999            // Zero reserved fields.
6000            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6001
6002            // Safety:
6003            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6004            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6005            //   envelope_size bytes, there is always sufficient room.
6006            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6007                self.scan_response
6008                    .as_ref()
6009                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6010                encoder,
6011                offset + cur_offset,
6012                depth,
6013            )?;
6014
6015            _prev_end_offset = cur_offset + envelope_size;
6016            if 3 > max_ordinal {
6017                return Ok(());
6018            }
6019
6020            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6021            // are envelope_size bytes.
6022            let cur_offset: usize = (3 - 1) * envelope_size;
6023
6024            // Zero reserved fields.
6025            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6026
6027            // Safety:
6028            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6029            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6030            //   envelope_size bytes, there is always sufficient room.
6031            fidl::encoding::encode_in_envelope_optional::<AdvertisingModeHint, D>(
6032                self.mode_hint
6033                    .as_ref()
6034                    .map(<AdvertisingModeHint as fidl::encoding::ValueTypeMarker>::borrow),
6035                encoder,
6036                offset + cur_offset,
6037                depth,
6038            )?;
6039
6040            _prev_end_offset = cur_offset + envelope_size;
6041            if 4 > max_ordinal {
6042                return Ok(());
6043            }
6044
6045            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6046            // are envelope_size bytes.
6047            let cur_offset: usize = (4 - 1) * envelope_size;
6048
6049            // Zero reserved fields.
6050            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6051
6052            // Safety:
6053            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6054            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6055            //   envelope_size bytes, there is always sufficient room.
6056            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6057                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6058                encoder,
6059                offset + cur_offset,
6060                depth,
6061            )?;
6062
6063            _prev_end_offset = cur_offset + envelope_size;
6064            if 5 > max_ordinal {
6065                return Ok(());
6066            }
6067
6068            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6069            // are envelope_size bytes.
6070            let cur_offset: usize = (5 - 1) * envelope_size;
6071
6072            // Zero reserved fields.
6073            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6074
6075            // Safety:
6076            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6077            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6078            //   envelope_size bytes, there is always sufficient room.
6079            fidl::encoding::encode_in_envelope_optional::<ConnectionOptions, D>(
6080                self.connection_options
6081                    .as_ref()
6082                    .map(<ConnectionOptions as fidl::encoding::ValueTypeMarker>::borrow),
6083                encoder,
6084                offset + cur_offset,
6085                depth,
6086            )?;
6087
6088            _prev_end_offset = cur_offset + envelope_size;
6089            if 6 > max_ordinal {
6090                return Ok(());
6091            }
6092
6093            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6094            // are envelope_size bytes.
6095            let cur_offset: usize = (6 - 1) * envelope_size;
6096
6097            // Zero reserved fields.
6098            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6099
6100            // Safety:
6101            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6102            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6103            //   envelope_size bytes, there is always sufficient room.
6104            fidl::encoding::encode_in_envelope_optional::<AdvertisingProcedure, D>(
6105                self.advertising_procedure
6106                    .as_ref()
6107                    .map(<AdvertisingProcedure as fidl::encoding::ValueTypeMarker>::borrow),
6108                encoder,
6109                offset + cur_offset,
6110                depth,
6111            )?;
6112
6113            _prev_end_offset = cur_offset + envelope_size;
6114            if 7 > max_ordinal {
6115                return Ok(());
6116            }
6117
6118            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6119            // are envelope_size bytes.
6120            let cur_offset: usize = (7 - 1) * envelope_size;
6121
6122            // Zero reserved fields.
6123            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6124
6125            // Safety:
6126            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6127            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6128            //   envelope_size bytes, there is always sufficient room.
6129            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AddressType, D>(
6130            self.address_type.as_ref().map(<fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
6131            encoder, offset + cur_offset, depth
6132        )?;
6133
6134            _prev_end_offset = cur_offset + envelope_size;
6135
6136            Ok(())
6137        }
6138    }
6139
6140    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingParameters {
6141        #[inline(always)]
6142        fn new_empty() -> Self {
6143            Self::default()
6144        }
6145
6146        unsafe fn decode(
6147            &mut self,
6148            decoder: &mut fidl::encoding::Decoder<'_, D>,
6149            offset: usize,
6150            mut depth: fidl::encoding::Depth,
6151        ) -> fidl::Result<()> {
6152            decoder.debug_check_bounds::<Self>(offset);
6153            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6154                None => return Err(fidl::Error::NotNullable),
6155                Some(len) => len,
6156            };
6157            // Calling decoder.out_of_line_offset(0) is not allowed.
6158            if len == 0 {
6159                return Ok(());
6160            };
6161            depth.increment()?;
6162            let envelope_size = 8;
6163            let bytes_len = len * envelope_size;
6164            let offset = decoder.out_of_line_offset(bytes_len)?;
6165            // Decode the envelope for each type.
6166            let mut _next_ordinal_to_read = 0;
6167            let mut next_offset = offset;
6168            let end_offset = offset + bytes_len;
6169            _next_ordinal_to_read += 1;
6170            if next_offset >= end_offset {
6171                return Ok(());
6172            }
6173
6174            // Decode unknown envelopes for gaps in ordinals.
6175            while _next_ordinal_to_read < 1 {
6176                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6177                _next_ordinal_to_read += 1;
6178                next_offset += envelope_size;
6179            }
6180
6181            let next_out_of_line = decoder.next_out_of_line();
6182            let handles_before = decoder.remaining_handles();
6183            if let Some((inlined, num_bytes, num_handles)) =
6184                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6185            {
6186                let member_inline_size =
6187                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6188                if inlined != (member_inline_size <= 4) {
6189                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6190                }
6191                let inner_offset;
6192                let mut inner_depth = depth.clone();
6193                if inlined {
6194                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6195                    inner_offset = next_offset;
6196                } else {
6197                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6198                    inner_depth.increment()?;
6199                }
6200                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6201                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6202                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6203                {
6204                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6205                }
6206                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6207                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6208                }
6209            }
6210
6211            next_offset += envelope_size;
6212            _next_ordinal_to_read += 1;
6213            if next_offset >= end_offset {
6214                return Ok(());
6215            }
6216
6217            // Decode unknown envelopes for gaps in ordinals.
6218            while _next_ordinal_to_read < 2 {
6219                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6220                _next_ordinal_to_read += 1;
6221                next_offset += envelope_size;
6222            }
6223
6224            let next_out_of_line = decoder.next_out_of_line();
6225            let handles_before = decoder.remaining_handles();
6226            if let Some((inlined, num_bytes, num_handles)) =
6227                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6228            {
6229                let member_inline_size =
6230                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6231                if inlined != (member_inline_size <= 4) {
6232                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6233                }
6234                let inner_offset;
6235                let mut inner_depth = depth.clone();
6236                if inlined {
6237                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6238                    inner_offset = next_offset;
6239                } else {
6240                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6241                    inner_depth.increment()?;
6242                }
6243                let val_ref =
6244                    self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6245                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6246                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6247                {
6248                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6249                }
6250                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6251                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6252                }
6253            }
6254
6255            next_offset += envelope_size;
6256            _next_ordinal_to_read += 1;
6257            if next_offset >= end_offset {
6258                return Ok(());
6259            }
6260
6261            // Decode unknown envelopes for gaps in ordinals.
6262            while _next_ordinal_to_read < 3 {
6263                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6264                _next_ordinal_to_read += 1;
6265                next_offset += envelope_size;
6266            }
6267
6268            let next_out_of_line = decoder.next_out_of_line();
6269            let handles_before = decoder.remaining_handles();
6270            if let Some((inlined, num_bytes, num_handles)) =
6271                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6272            {
6273                let member_inline_size =
6274                    <AdvertisingModeHint as fidl::encoding::TypeMarker>::inline_size(
6275                        decoder.context,
6276                    );
6277                if inlined != (member_inline_size <= 4) {
6278                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6279                }
6280                let inner_offset;
6281                let mut inner_depth = depth.clone();
6282                if inlined {
6283                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6284                    inner_offset = next_offset;
6285                } else {
6286                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6287                    inner_depth.increment()?;
6288                }
6289                let val_ref =
6290                    self.mode_hint.get_or_insert_with(|| fidl::new_empty!(AdvertisingModeHint, D));
6291                fidl::decode!(AdvertisingModeHint, D, val_ref, decoder, inner_offset, inner_depth)?;
6292                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6293                {
6294                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6295                }
6296                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6297                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6298                }
6299            }
6300
6301            next_offset += envelope_size;
6302            _next_ordinal_to_read += 1;
6303            if next_offset >= end_offset {
6304                return Ok(());
6305            }
6306
6307            // Decode unknown envelopes for gaps in ordinals.
6308            while _next_ordinal_to_read < 4 {
6309                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6310                _next_ordinal_to_read += 1;
6311                next_offset += envelope_size;
6312            }
6313
6314            let next_out_of_line = decoder.next_out_of_line();
6315            let handles_before = decoder.remaining_handles();
6316            if let Some((inlined, num_bytes, num_handles)) =
6317                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6318            {
6319                let member_inline_size =
6320                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6321                if inlined != (member_inline_size <= 4) {
6322                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6323                }
6324                let inner_offset;
6325                let mut inner_depth = depth.clone();
6326                if inlined {
6327                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6328                    inner_offset = next_offset;
6329                } else {
6330                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6331                    inner_depth.increment()?;
6332                }
6333                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
6334                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6335                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6336                {
6337                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6338                }
6339                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6340                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6341                }
6342            }
6343
6344            next_offset += envelope_size;
6345            _next_ordinal_to_read += 1;
6346            if next_offset >= end_offset {
6347                return Ok(());
6348            }
6349
6350            // Decode unknown envelopes for gaps in ordinals.
6351            while _next_ordinal_to_read < 5 {
6352                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6353                _next_ordinal_to_read += 1;
6354                next_offset += envelope_size;
6355            }
6356
6357            let next_out_of_line = decoder.next_out_of_line();
6358            let handles_before = decoder.remaining_handles();
6359            if let Some((inlined, num_bytes, num_handles)) =
6360                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6361            {
6362                let member_inline_size =
6363                    <ConnectionOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6364                if inlined != (member_inline_size <= 4) {
6365                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6366                }
6367                let inner_offset;
6368                let mut inner_depth = depth.clone();
6369                if inlined {
6370                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6371                    inner_offset = next_offset;
6372                } else {
6373                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6374                    inner_depth.increment()?;
6375                }
6376                let val_ref = self
6377                    .connection_options
6378                    .get_or_insert_with(|| fidl::new_empty!(ConnectionOptions, D));
6379                fidl::decode!(ConnectionOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
6380                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6381                {
6382                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6383                }
6384                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6385                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6386                }
6387            }
6388
6389            next_offset += envelope_size;
6390            _next_ordinal_to_read += 1;
6391            if next_offset >= end_offset {
6392                return Ok(());
6393            }
6394
6395            // Decode unknown envelopes for gaps in ordinals.
6396            while _next_ordinal_to_read < 6 {
6397                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6398                _next_ordinal_to_read += 1;
6399                next_offset += envelope_size;
6400            }
6401
6402            let next_out_of_line = decoder.next_out_of_line();
6403            let handles_before = decoder.remaining_handles();
6404            if let Some((inlined, num_bytes, num_handles)) =
6405                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6406            {
6407                let member_inline_size =
6408                    <AdvertisingProcedure as fidl::encoding::TypeMarker>::inline_size(
6409                        decoder.context,
6410                    );
6411                if inlined != (member_inline_size <= 4) {
6412                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6413                }
6414                let inner_offset;
6415                let mut inner_depth = depth.clone();
6416                if inlined {
6417                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6418                    inner_offset = next_offset;
6419                } else {
6420                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6421                    inner_depth.increment()?;
6422                }
6423                let val_ref = self
6424                    .advertising_procedure
6425                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingProcedure, D));
6426                fidl::decode!(
6427                    AdvertisingProcedure,
6428                    D,
6429                    val_ref,
6430                    decoder,
6431                    inner_offset,
6432                    inner_depth
6433                )?;
6434                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6435                {
6436                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6437                }
6438                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6439                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6440                }
6441            }
6442
6443            next_offset += envelope_size;
6444            _next_ordinal_to_read += 1;
6445            if next_offset >= end_offset {
6446                return Ok(());
6447            }
6448
6449            // Decode unknown envelopes for gaps in ordinals.
6450            while _next_ordinal_to_read < 7 {
6451                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6452                _next_ordinal_to_read += 1;
6453                next_offset += envelope_size;
6454            }
6455
6456            let next_out_of_line = decoder.next_out_of_line();
6457            let handles_before = decoder.remaining_handles();
6458            if let Some((inlined, num_bytes, num_handles)) =
6459                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6460            {
6461                let member_inline_size = <fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6462                if inlined != (member_inline_size <= 4) {
6463                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6464                }
6465                let inner_offset;
6466                let mut inner_depth = depth.clone();
6467                if inlined {
6468                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6469                    inner_offset = next_offset;
6470                } else {
6471                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6472                    inner_depth.increment()?;
6473                }
6474                let val_ref = self.address_type.get_or_insert_with(|| {
6475                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::AddressType, D)
6476                });
6477                fidl::decode!(
6478                    fidl_fuchsia_bluetooth__common::AddressType,
6479                    D,
6480                    val_ref,
6481                    decoder,
6482                    inner_offset,
6483                    inner_depth
6484                )?;
6485                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6486                {
6487                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6488                }
6489                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6490                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6491                }
6492            }
6493
6494            next_offset += envelope_size;
6495
6496            // Decode the remaining unknown envelopes.
6497            while next_offset < end_offset {
6498                _next_ordinal_to_read += 1;
6499                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6500                next_offset += envelope_size;
6501            }
6502
6503            Ok(())
6504        }
6505    }
6506
6507    impl BroadcastIsochronousGroupInfo {
6508        #[inline(always)]
6509        fn max_ordinal_present(&self) -> u64 {
6510            if let Some(_) = self.encryption {
6511                return 4;
6512            }
6513            if let Some(_) = self.phy {
6514                return 3;
6515            }
6516            if let Some(_) = self.max_sdu_size {
6517                return 2;
6518            }
6519            if let Some(_) = self.streams_count {
6520                return 1;
6521            }
6522            0
6523        }
6524    }
6525
6526    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfo {
6527        type Borrowed<'a> = &'a Self;
6528        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6529            value
6530        }
6531    }
6532
6533    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfo {
6534        type Owned = Self;
6535
6536        #[inline(always)]
6537        fn inline_align(_context: fidl::encoding::Context) -> usize {
6538            8
6539        }
6540
6541        #[inline(always)]
6542        fn inline_size(_context: fidl::encoding::Context) -> usize {
6543            16
6544        }
6545    }
6546
6547    unsafe impl<D: fidl::encoding::ResourceDialect>
6548        fidl::encoding::Encode<BroadcastIsochronousGroupInfo, D>
6549        for &BroadcastIsochronousGroupInfo
6550    {
6551        unsafe fn encode(
6552            self,
6553            encoder: &mut fidl::encoding::Encoder<'_, D>,
6554            offset: usize,
6555            mut depth: fidl::encoding::Depth,
6556        ) -> fidl::Result<()> {
6557            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfo>(offset);
6558            // Vector header
6559            let max_ordinal: u64 = self.max_ordinal_present();
6560            encoder.write_num(max_ordinal, offset);
6561            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6562            // Calling encoder.out_of_line_offset(0) is not allowed.
6563            if max_ordinal == 0 {
6564                return Ok(());
6565            }
6566            depth.increment()?;
6567            let envelope_size = 8;
6568            let bytes_len = max_ordinal as usize * envelope_size;
6569            #[allow(unused_variables)]
6570            let offset = encoder.out_of_line_offset(bytes_len);
6571            let mut _prev_end_offset: usize = 0;
6572            if 1 > max_ordinal {
6573                return Ok(());
6574            }
6575
6576            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6577            // are envelope_size bytes.
6578            let cur_offset: usize = (1 - 1) * envelope_size;
6579
6580            // Zero reserved fields.
6581            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6582
6583            // Safety:
6584            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6585            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6586            //   envelope_size bytes, there is always sufficient room.
6587            fidl::encoding::encode_in_envelope_optional::<u8, D>(
6588                self.streams_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6589                encoder,
6590                offset + cur_offset,
6591                depth,
6592            )?;
6593
6594            _prev_end_offset = cur_offset + envelope_size;
6595            if 2 > max_ordinal {
6596                return Ok(());
6597            }
6598
6599            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6600            // are envelope_size bytes.
6601            let cur_offset: usize = (2 - 1) * envelope_size;
6602
6603            // Zero reserved fields.
6604            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6605
6606            // Safety:
6607            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6608            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6609            //   envelope_size bytes, there is always sufficient room.
6610            fidl::encoding::encode_in_envelope_optional::<u16, D>(
6611                self.max_sdu_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
6612                encoder,
6613                offset + cur_offset,
6614                depth,
6615            )?;
6616
6617            _prev_end_offset = cur_offset + envelope_size;
6618            if 3 > max_ordinal {
6619                return Ok(());
6620            }
6621
6622            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6623            // are envelope_size bytes.
6624            let cur_offset: usize = (3 - 1) * envelope_size;
6625
6626            // Zero reserved fields.
6627            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6628
6629            // Safety:
6630            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6631            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6632            //   envelope_size bytes, there is always sufficient room.
6633            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
6634                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
6635                encoder,
6636                offset + cur_offset,
6637                depth,
6638            )?;
6639
6640            _prev_end_offset = cur_offset + envelope_size;
6641            if 4 > max_ordinal {
6642                return Ok(());
6643            }
6644
6645            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6646            // are envelope_size bytes.
6647            let cur_offset: usize = (4 - 1) * envelope_size;
6648
6649            // Zero reserved fields.
6650            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6651
6652            // Safety:
6653            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6654            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6655            //   envelope_size bytes, there is always sufficient room.
6656            fidl::encoding::encode_in_envelope_optional::<bool, D>(
6657                self.encryption.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6658                encoder,
6659                offset + cur_offset,
6660                depth,
6661            )?;
6662
6663            _prev_end_offset = cur_offset + envelope_size;
6664
6665            Ok(())
6666        }
6667    }
6668
6669    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6670        for BroadcastIsochronousGroupInfo
6671    {
6672        #[inline(always)]
6673        fn new_empty() -> Self {
6674            Self::default()
6675        }
6676
6677        unsafe fn decode(
6678            &mut self,
6679            decoder: &mut fidl::encoding::Decoder<'_, D>,
6680            offset: usize,
6681            mut depth: fidl::encoding::Depth,
6682        ) -> fidl::Result<()> {
6683            decoder.debug_check_bounds::<Self>(offset);
6684            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6685                None => return Err(fidl::Error::NotNullable),
6686                Some(len) => len,
6687            };
6688            // Calling decoder.out_of_line_offset(0) is not allowed.
6689            if len == 0 {
6690                return Ok(());
6691            };
6692            depth.increment()?;
6693            let envelope_size = 8;
6694            let bytes_len = len * envelope_size;
6695            let offset = decoder.out_of_line_offset(bytes_len)?;
6696            // Decode the envelope for each type.
6697            let mut _next_ordinal_to_read = 0;
6698            let mut next_offset = offset;
6699            let end_offset = offset + bytes_len;
6700            _next_ordinal_to_read += 1;
6701            if next_offset >= end_offset {
6702                return Ok(());
6703            }
6704
6705            // Decode unknown envelopes for gaps in ordinals.
6706            while _next_ordinal_to_read < 1 {
6707                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6708                _next_ordinal_to_read += 1;
6709                next_offset += envelope_size;
6710            }
6711
6712            let next_out_of_line = decoder.next_out_of_line();
6713            let handles_before = decoder.remaining_handles();
6714            if let Some((inlined, num_bytes, num_handles)) =
6715                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6716            {
6717                let member_inline_size =
6718                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6719                if inlined != (member_inline_size <= 4) {
6720                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6721                }
6722                let inner_offset;
6723                let mut inner_depth = depth.clone();
6724                if inlined {
6725                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6726                    inner_offset = next_offset;
6727                } else {
6728                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6729                    inner_depth.increment()?;
6730                }
6731                let val_ref = self.streams_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
6732                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6733                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6734                {
6735                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6736                }
6737                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6738                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6739                }
6740            }
6741
6742            next_offset += envelope_size;
6743            _next_ordinal_to_read += 1;
6744            if next_offset >= end_offset {
6745                return Ok(());
6746            }
6747
6748            // Decode unknown envelopes for gaps in ordinals.
6749            while _next_ordinal_to_read < 2 {
6750                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6751                _next_ordinal_to_read += 1;
6752                next_offset += envelope_size;
6753            }
6754
6755            let next_out_of_line = decoder.next_out_of_line();
6756            let handles_before = decoder.remaining_handles();
6757            if let Some((inlined, num_bytes, num_handles)) =
6758                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6759            {
6760                let member_inline_size =
6761                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6762                if inlined != (member_inline_size <= 4) {
6763                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6764                }
6765                let inner_offset;
6766                let mut inner_depth = depth.clone();
6767                if inlined {
6768                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6769                    inner_offset = next_offset;
6770                } else {
6771                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6772                    inner_depth.increment()?;
6773                }
6774                let val_ref = self.max_sdu_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6775                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6776                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6777                {
6778                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6779                }
6780                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6781                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6782                }
6783            }
6784
6785            next_offset += envelope_size;
6786            _next_ordinal_to_read += 1;
6787            if next_offset >= end_offset {
6788                return Ok(());
6789            }
6790
6791            // Decode unknown envelopes for gaps in ordinals.
6792            while _next_ordinal_to_read < 3 {
6793                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6794                _next_ordinal_to_read += 1;
6795                next_offset += envelope_size;
6796            }
6797
6798            let next_out_of_line = decoder.next_out_of_line();
6799            let handles_before = decoder.remaining_handles();
6800            if let Some((inlined, num_bytes, num_handles)) =
6801                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6802            {
6803                let member_inline_size =
6804                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6805                if inlined != (member_inline_size <= 4) {
6806                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6807                }
6808                let inner_offset;
6809                let mut inner_depth = depth.clone();
6810                if inlined {
6811                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6812                    inner_offset = next_offset;
6813                } else {
6814                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6815                    inner_depth.increment()?;
6816                }
6817                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
6818                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
6819                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6820                {
6821                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6822                }
6823                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6824                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6825                }
6826            }
6827
6828            next_offset += envelope_size;
6829            _next_ordinal_to_read += 1;
6830            if next_offset >= end_offset {
6831                return Ok(());
6832            }
6833
6834            // Decode unknown envelopes for gaps in ordinals.
6835            while _next_ordinal_to_read < 4 {
6836                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6837                _next_ordinal_to_read += 1;
6838                next_offset += envelope_size;
6839            }
6840
6841            let next_out_of_line = decoder.next_out_of_line();
6842            let handles_before = decoder.remaining_handles();
6843            if let Some((inlined, num_bytes, num_handles)) =
6844                fidl::encoding::decode_envelope_header(decoder, next_offset)?
6845            {
6846                let member_inline_size =
6847                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6848                if inlined != (member_inline_size <= 4) {
6849                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
6850                }
6851                let inner_offset;
6852                let mut inner_depth = depth.clone();
6853                if inlined {
6854                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6855                    inner_offset = next_offset;
6856                } else {
6857                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6858                    inner_depth.increment()?;
6859                }
6860                let val_ref = self.encryption.get_or_insert_with(|| fidl::new_empty!(bool, D));
6861                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6862                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6863                {
6864                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
6865                }
6866                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6867                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6868                }
6869            }
6870
6871            next_offset += envelope_size;
6872
6873            // Decode the remaining unknown envelopes.
6874            while next_offset < end_offset {
6875                _next_ordinal_to_read += 1;
6876                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6877                next_offset += envelope_size;
6878            }
6879
6880            Ok(())
6881        }
6882    }
6883
6884    impl BroadcastIsochronousGroupInfoReport {
6885        #[inline(always)]
6886        fn max_ordinal_present(&self) -> u64 {
6887            if let Some(_) = self.timestamp {
6888                return 2;
6889            }
6890            if let Some(_) = self.info {
6891                return 1;
6892            }
6893            0
6894        }
6895    }
6896
6897    impl fidl::encoding::ValueTypeMarker for BroadcastIsochronousGroupInfoReport {
6898        type Borrowed<'a> = &'a Self;
6899        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6900            value
6901        }
6902    }
6903
6904    unsafe impl fidl::encoding::TypeMarker for BroadcastIsochronousGroupInfoReport {
6905        type Owned = Self;
6906
6907        #[inline(always)]
6908        fn inline_align(_context: fidl::encoding::Context) -> usize {
6909            8
6910        }
6911
6912        #[inline(always)]
6913        fn inline_size(_context: fidl::encoding::Context) -> usize {
6914            16
6915        }
6916    }
6917
6918    unsafe impl<D: fidl::encoding::ResourceDialect>
6919        fidl::encoding::Encode<BroadcastIsochronousGroupInfoReport, D>
6920        for &BroadcastIsochronousGroupInfoReport
6921    {
6922        unsafe fn encode(
6923            self,
6924            encoder: &mut fidl::encoding::Encoder<'_, D>,
6925            offset: usize,
6926            mut depth: fidl::encoding::Depth,
6927        ) -> fidl::Result<()> {
6928            encoder.debug_check_bounds::<BroadcastIsochronousGroupInfoReport>(offset);
6929            // Vector header
6930            let max_ordinal: u64 = self.max_ordinal_present();
6931            encoder.write_num(max_ordinal, offset);
6932            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6933            // Calling encoder.out_of_line_offset(0) is not allowed.
6934            if max_ordinal == 0 {
6935                return Ok(());
6936            }
6937            depth.increment()?;
6938            let envelope_size = 8;
6939            let bytes_len = max_ordinal as usize * envelope_size;
6940            #[allow(unused_variables)]
6941            let offset = encoder.out_of_line_offset(bytes_len);
6942            let mut _prev_end_offset: usize = 0;
6943            if 1 > max_ordinal {
6944                return Ok(());
6945            }
6946
6947            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6948            // are envelope_size bytes.
6949            let cur_offset: usize = (1 - 1) * envelope_size;
6950
6951            // Zero reserved fields.
6952            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6953
6954            // Safety:
6955            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6956            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6957            //   envelope_size bytes, there is always sufficient room.
6958            fidl::encoding::encode_in_envelope_optional::<BroadcastIsochronousGroupInfo, D>(
6959                self.info.as_ref().map(
6960                    <BroadcastIsochronousGroupInfo as fidl::encoding::ValueTypeMarker>::borrow,
6961                ),
6962                encoder,
6963                offset + cur_offset,
6964                depth,
6965            )?;
6966
6967            _prev_end_offset = cur_offset + envelope_size;
6968            if 2 > max_ordinal {
6969                return Ok(());
6970            }
6971
6972            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6973            // are envelope_size bytes.
6974            let cur_offset: usize = (2 - 1) * envelope_size;
6975
6976            // Zero reserved fields.
6977            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6978
6979            // Safety:
6980            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6981            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6982            //   envelope_size bytes, there is always sufficient room.
6983            fidl::encoding::encode_in_envelope_optional::<i64, D>(
6984                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6985                encoder,
6986                offset + cur_offset,
6987                depth,
6988            )?;
6989
6990            _prev_end_offset = cur_offset + envelope_size;
6991
6992            Ok(())
6993        }
6994    }
6995
6996    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6997        for BroadcastIsochronousGroupInfoReport
6998    {
6999        #[inline(always)]
7000        fn new_empty() -> Self {
7001            Self::default()
7002        }
7003
7004        unsafe fn decode(
7005            &mut self,
7006            decoder: &mut fidl::encoding::Decoder<'_, D>,
7007            offset: usize,
7008            mut depth: fidl::encoding::Depth,
7009        ) -> fidl::Result<()> {
7010            decoder.debug_check_bounds::<Self>(offset);
7011            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7012                None => return Err(fidl::Error::NotNullable),
7013                Some(len) => len,
7014            };
7015            // Calling decoder.out_of_line_offset(0) is not allowed.
7016            if len == 0 {
7017                return Ok(());
7018            };
7019            depth.increment()?;
7020            let envelope_size = 8;
7021            let bytes_len = len * envelope_size;
7022            let offset = decoder.out_of_line_offset(bytes_len)?;
7023            // Decode the envelope for each type.
7024            let mut _next_ordinal_to_read = 0;
7025            let mut next_offset = offset;
7026            let end_offset = offset + bytes_len;
7027            _next_ordinal_to_read += 1;
7028            if next_offset >= end_offset {
7029                return Ok(());
7030            }
7031
7032            // Decode unknown envelopes for gaps in ordinals.
7033            while _next_ordinal_to_read < 1 {
7034                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7035                _next_ordinal_to_read += 1;
7036                next_offset += envelope_size;
7037            }
7038
7039            let next_out_of_line = decoder.next_out_of_line();
7040            let handles_before = decoder.remaining_handles();
7041            if let Some((inlined, num_bytes, num_handles)) =
7042                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7043            {
7044                let member_inline_size =
7045                    <BroadcastIsochronousGroupInfo as fidl::encoding::TypeMarker>::inline_size(
7046                        decoder.context,
7047                    );
7048                if inlined != (member_inline_size <= 4) {
7049                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7050                }
7051                let inner_offset;
7052                let mut inner_depth = depth.clone();
7053                if inlined {
7054                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7055                    inner_offset = next_offset;
7056                } else {
7057                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7058                    inner_depth.increment()?;
7059                }
7060                let val_ref = self
7061                    .info
7062                    .get_or_insert_with(|| fidl::new_empty!(BroadcastIsochronousGroupInfo, D));
7063                fidl::decode!(
7064                    BroadcastIsochronousGroupInfo,
7065                    D,
7066                    val_ref,
7067                    decoder,
7068                    inner_offset,
7069                    inner_depth
7070                )?;
7071                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7072                {
7073                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7074                }
7075                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7076                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7077                }
7078            }
7079
7080            next_offset += envelope_size;
7081            _next_ordinal_to_read += 1;
7082            if next_offset >= end_offset {
7083                return Ok(());
7084            }
7085
7086            // Decode unknown envelopes for gaps in ordinals.
7087            while _next_ordinal_to_read < 2 {
7088                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7089                _next_ordinal_to_read += 1;
7090                next_offset += envelope_size;
7091            }
7092
7093            let next_out_of_line = decoder.next_out_of_line();
7094            let handles_before = decoder.remaining_handles();
7095            if let Some((inlined, num_bytes, num_handles)) =
7096                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7097            {
7098                let member_inline_size =
7099                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7100                if inlined != (member_inline_size <= 4) {
7101                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7102                }
7103                let inner_offset;
7104                let mut inner_depth = depth.clone();
7105                if inlined {
7106                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7107                    inner_offset = next_offset;
7108                } else {
7109                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7110                    inner_depth.increment()?;
7111                }
7112                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
7113                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
7114                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7115                {
7116                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7117                }
7118                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7119                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7120                }
7121            }
7122
7123            next_offset += envelope_size;
7124
7125            // Decode the remaining unknown envelopes.
7126            while next_offset < end_offset {
7127                _next_ordinal_to_read += 1;
7128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7129                next_offset += envelope_size;
7130            }
7131
7132            Ok(())
7133        }
7134    }
7135
7136    impl CentralCreateConnectedIsochronousGroupResponse {
7137        #[inline(always)]
7138        fn max_ordinal_present(&self) -> u64 {
7139            if let Some(_) = self.cig_id {
7140                return 1;
7141            }
7142            0
7143        }
7144    }
7145
7146    impl fidl::encoding::ValueTypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7147        type Borrowed<'a> = &'a Self;
7148        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7149            value
7150        }
7151    }
7152
7153    unsafe impl fidl::encoding::TypeMarker for CentralCreateConnectedIsochronousGroupResponse {
7154        type Owned = Self;
7155
7156        #[inline(always)]
7157        fn inline_align(_context: fidl::encoding::Context) -> usize {
7158            8
7159        }
7160
7161        #[inline(always)]
7162        fn inline_size(_context: fidl::encoding::Context) -> usize {
7163            16
7164        }
7165    }
7166
7167    unsafe impl<D: fidl::encoding::ResourceDialect>
7168        fidl::encoding::Encode<CentralCreateConnectedIsochronousGroupResponse, D>
7169        for &CentralCreateConnectedIsochronousGroupResponse
7170    {
7171        unsafe fn encode(
7172            self,
7173            encoder: &mut fidl::encoding::Encoder<'_, D>,
7174            offset: usize,
7175            mut depth: fidl::encoding::Depth,
7176        ) -> fidl::Result<()> {
7177            encoder.debug_check_bounds::<CentralCreateConnectedIsochronousGroupResponse>(offset);
7178            // Vector header
7179            let max_ordinal: u64 = self.max_ordinal_present();
7180            encoder.write_num(max_ordinal, offset);
7181            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7182            // Calling encoder.out_of_line_offset(0) is not allowed.
7183            if max_ordinal == 0 {
7184                return Ok(());
7185            }
7186            depth.increment()?;
7187            let envelope_size = 8;
7188            let bytes_len = max_ordinal as usize * envelope_size;
7189            #[allow(unused_variables)]
7190            let offset = encoder.out_of_line_offset(bytes_len);
7191            let mut _prev_end_offset: usize = 0;
7192            if 1 > max_ordinal {
7193                return Ok(());
7194            }
7195
7196            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7197            // are envelope_size bytes.
7198            let cur_offset: usize = (1 - 1) * envelope_size;
7199
7200            // Zero reserved fields.
7201            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7202
7203            // Safety:
7204            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7205            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7206            //   envelope_size bytes, there is always sufficient room.
7207            fidl::encoding::encode_in_envelope_optional::<u8, D>(
7208                self.cig_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
7209                encoder,
7210                offset + cur_offset,
7211                depth,
7212            )?;
7213
7214            _prev_end_offset = cur_offset + envelope_size;
7215
7216            Ok(())
7217        }
7218    }
7219
7220    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7221        for CentralCreateConnectedIsochronousGroupResponse
7222    {
7223        #[inline(always)]
7224        fn new_empty() -> Self {
7225            Self::default()
7226        }
7227
7228        unsafe fn decode(
7229            &mut self,
7230            decoder: &mut fidl::encoding::Decoder<'_, D>,
7231            offset: usize,
7232            mut depth: fidl::encoding::Depth,
7233        ) -> fidl::Result<()> {
7234            decoder.debug_check_bounds::<Self>(offset);
7235            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7236                None => return Err(fidl::Error::NotNullable),
7237                Some(len) => len,
7238            };
7239            // Calling decoder.out_of_line_offset(0) is not allowed.
7240            if len == 0 {
7241                return Ok(());
7242            };
7243            depth.increment()?;
7244            let envelope_size = 8;
7245            let bytes_len = len * envelope_size;
7246            let offset = decoder.out_of_line_offset(bytes_len)?;
7247            // Decode the envelope for each type.
7248            let mut _next_ordinal_to_read = 0;
7249            let mut next_offset = offset;
7250            let end_offset = offset + bytes_len;
7251            _next_ordinal_to_read += 1;
7252            if next_offset >= end_offset {
7253                return Ok(());
7254            }
7255
7256            // Decode unknown envelopes for gaps in ordinals.
7257            while _next_ordinal_to_read < 1 {
7258                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7259                _next_ordinal_to_read += 1;
7260                next_offset += envelope_size;
7261            }
7262
7263            let next_out_of_line = decoder.next_out_of_line();
7264            let handles_before = decoder.remaining_handles();
7265            if let Some((inlined, num_bytes, num_handles)) =
7266                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7267            {
7268                let member_inline_size =
7269                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7270                if inlined != (member_inline_size <= 4) {
7271                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7272                }
7273                let inner_offset;
7274                let mut inner_depth = depth.clone();
7275                if inlined {
7276                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7277                    inner_offset = next_offset;
7278                } else {
7279                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7280                    inner_depth.increment()?;
7281                }
7282                let val_ref = self.cig_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
7283                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
7284                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7285                {
7286                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7287                }
7288                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7289                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7290                }
7291            }
7292
7293            next_offset += envelope_size;
7294
7295            // Decode the remaining unknown envelopes.
7296            while next_offset < end_offset {
7297                _next_ordinal_to_read += 1;
7298                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7299                next_offset += envelope_size;
7300            }
7301
7302            Ok(())
7303        }
7304    }
7305
7306    impl ChannelListenerRegistryListenL2capResponse {
7307        #[inline(always)]
7308        fn max_ordinal_present(&self) -> u64 {
7309            if let Some(_) = self.psm {
7310                return 1;
7311            }
7312            0
7313        }
7314    }
7315
7316    impl fidl::encoding::ValueTypeMarker for ChannelListenerRegistryListenL2capResponse {
7317        type Borrowed<'a> = &'a Self;
7318        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7319            value
7320        }
7321    }
7322
7323    unsafe impl fidl::encoding::TypeMarker for ChannelListenerRegistryListenL2capResponse {
7324        type Owned = Self;
7325
7326        #[inline(always)]
7327        fn inline_align(_context: fidl::encoding::Context) -> usize {
7328            8
7329        }
7330
7331        #[inline(always)]
7332        fn inline_size(_context: fidl::encoding::Context) -> usize {
7333            16
7334        }
7335    }
7336
7337    unsafe impl<D: fidl::encoding::ResourceDialect>
7338        fidl::encoding::Encode<ChannelListenerRegistryListenL2capResponse, D>
7339        for &ChannelListenerRegistryListenL2capResponse
7340    {
7341        unsafe fn encode(
7342            self,
7343            encoder: &mut fidl::encoding::Encoder<'_, D>,
7344            offset: usize,
7345            mut depth: fidl::encoding::Depth,
7346        ) -> fidl::Result<()> {
7347            encoder.debug_check_bounds::<ChannelListenerRegistryListenL2capResponse>(offset);
7348            // Vector header
7349            let max_ordinal: u64 = self.max_ordinal_present();
7350            encoder.write_num(max_ordinal, offset);
7351            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7352            // Calling encoder.out_of_line_offset(0) is not allowed.
7353            if max_ordinal == 0 {
7354                return Ok(());
7355            }
7356            depth.increment()?;
7357            let envelope_size = 8;
7358            let bytes_len = max_ordinal as usize * envelope_size;
7359            #[allow(unused_variables)]
7360            let offset = encoder.out_of_line_offset(bytes_len);
7361            let mut _prev_end_offset: usize = 0;
7362            if 1 > max_ordinal {
7363                return Ok(());
7364            }
7365
7366            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7367            // are envelope_size bytes.
7368            let cur_offset: usize = (1 - 1) * envelope_size;
7369
7370            // Zero reserved fields.
7371            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7372
7373            // Safety:
7374            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7375            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7376            //   envelope_size bytes, there is always sufficient room.
7377            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7378                self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7379                encoder,
7380                offset + cur_offset,
7381                depth,
7382            )?;
7383
7384            _prev_end_offset = cur_offset + envelope_size;
7385
7386            Ok(())
7387        }
7388    }
7389
7390    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7391        for ChannelListenerRegistryListenL2capResponse
7392    {
7393        #[inline(always)]
7394        fn new_empty() -> Self {
7395            Self::default()
7396        }
7397
7398        unsafe fn decode(
7399            &mut self,
7400            decoder: &mut fidl::encoding::Decoder<'_, D>,
7401            offset: usize,
7402            mut depth: fidl::encoding::Depth,
7403        ) -> fidl::Result<()> {
7404            decoder.debug_check_bounds::<Self>(offset);
7405            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7406                None => return Err(fidl::Error::NotNullable),
7407                Some(len) => len,
7408            };
7409            // Calling decoder.out_of_line_offset(0) is not allowed.
7410            if len == 0 {
7411                return Ok(());
7412            };
7413            depth.increment()?;
7414            let envelope_size = 8;
7415            let bytes_len = len * envelope_size;
7416            let offset = decoder.out_of_line_offset(bytes_len)?;
7417            // Decode the envelope for each type.
7418            let mut _next_ordinal_to_read = 0;
7419            let mut next_offset = offset;
7420            let end_offset = offset + bytes_len;
7421            _next_ordinal_to_read += 1;
7422            if next_offset >= end_offset {
7423                return Ok(());
7424            }
7425
7426            // Decode unknown envelopes for gaps in ordinals.
7427            while _next_ordinal_to_read < 1 {
7428                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7429                _next_ordinal_to_read += 1;
7430                next_offset += envelope_size;
7431            }
7432
7433            let next_out_of_line = decoder.next_out_of_line();
7434            let handles_before = decoder.remaining_handles();
7435            if let Some((inlined, num_bytes, num_handles)) =
7436                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7437            {
7438                let member_inline_size =
7439                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7440                if inlined != (member_inline_size <= 4) {
7441                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7442                }
7443                let inner_offset;
7444                let mut inner_depth = depth.clone();
7445                if inlined {
7446                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7447                    inner_offset = next_offset;
7448                } else {
7449                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7450                    inner_depth.increment()?;
7451                }
7452                let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
7453                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7454                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7455                {
7456                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7457                }
7458                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7459                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7460                }
7461            }
7462
7463            next_offset += envelope_size;
7464
7465            // Decode the remaining unknown envelopes.
7466            while next_offset < end_offset {
7467                _next_ordinal_to_read += 1;
7468                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7469                next_offset += envelope_size;
7470            }
7471
7472            Ok(())
7473        }
7474    }
7475
7476    impl CigParameters {
7477        #[inline(always)]
7478        fn max_ordinal_present(&self) -> u64 {
7479            if let Some(_) = self.max_transport_latency_p_to_c {
7480                return 6;
7481            }
7482            if let Some(_) = self.max_transport_latency_c_to_p {
7483                return 5;
7484            }
7485            if let Some(_) = self.framing {
7486                return 4;
7487            }
7488            if let Some(_) = self.packing {
7489                return 3;
7490            }
7491            if let Some(_) = self.sdu_interval_p_to_c {
7492                return 2;
7493            }
7494            if let Some(_) = self.sdu_interval_c_to_p {
7495                return 1;
7496            }
7497            0
7498        }
7499    }
7500
7501    impl fidl::encoding::ValueTypeMarker for CigParameters {
7502        type Borrowed<'a> = &'a Self;
7503        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7504            value
7505        }
7506    }
7507
7508    unsafe impl fidl::encoding::TypeMarker for CigParameters {
7509        type Owned = Self;
7510
7511        #[inline(always)]
7512        fn inline_align(_context: fidl::encoding::Context) -> usize {
7513            8
7514        }
7515
7516        #[inline(always)]
7517        fn inline_size(_context: fidl::encoding::Context) -> usize {
7518            16
7519        }
7520    }
7521
7522    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CigParameters, D>
7523        for &CigParameters
7524    {
7525        unsafe fn encode(
7526            self,
7527            encoder: &mut fidl::encoding::Encoder<'_, D>,
7528            offset: usize,
7529            mut depth: fidl::encoding::Depth,
7530        ) -> fidl::Result<()> {
7531            encoder.debug_check_bounds::<CigParameters>(offset);
7532            // Vector header
7533            let max_ordinal: u64 = self.max_ordinal_present();
7534            encoder.write_num(max_ordinal, offset);
7535            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7536            // Calling encoder.out_of_line_offset(0) is not allowed.
7537            if max_ordinal == 0 {
7538                return Ok(());
7539            }
7540            depth.increment()?;
7541            let envelope_size = 8;
7542            let bytes_len = max_ordinal as usize * envelope_size;
7543            #[allow(unused_variables)]
7544            let offset = encoder.out_of_line_offset(bytes_len);
7545            let mut _prev_end_offset: usize = 0;
7546            if 1 > max_ordinal {
7547                return Ok(());
7548            }
7549
7550            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7551            // are envelope_size bytes.
7552            let cur_offset: usize = (1 - 1) * envelope_size;
7553
7554            // Zero reserved fields.
7555            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7556
7557            // Safety:
7558            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7559            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7560            //   envelope_size bytes, there is always sufficient room.
7561            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7562                self.sdu_interval_c_to_p
7563                    .as_ref()
7564                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7565                encoder,
7566                offset + cur_offset,
7567                depth,
7568            )?;
7569
7570            _prev_end_offset = cur_offset + envelope_size;
7571            if 2 > max_ordinal {
7572                return Ok(());
7573            }
7574
7575            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7576            // are envelope_size bytes.
7577            let cur_offset: usize = (2 - 1) * envelope_size;
7578
7579            // Zero reserved fields.
7580            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7581
7582            // Safety:
7583            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7584            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7585            //   envelope_size bytes, there is always sufficient room.
7586            fidl::encoding::encode_in_envelope_optional::<u32, D>(
7587                self.sdu_interval_p_to_c
7588                    .as_ref()
7589                    .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
7590                encoder,
7591                offset + cur_offset,
7592                depth,
7593            )?;
7594
7595            _prev_end_offset = cur_offset + envelope_size;
7596            if 3 > max_ordinal {
7597                return Ok(());
7598            }
7599
7600            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7601            // are envelope_size bytes.
7602            let cur_offset: usize = (3 - 1) * envelope_size;
7603
7604            // Zero reserved fields.
7605            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7606
7607            // Safety:
7608            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7609            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7610            //   envelope_size bytes, there is always sufficient room.
7611            fidl::encoding::encode_in_envelope_optional::<CigPacking, D>(
7612                self.packing.as_ref().map(<CigPacking as fidl::encoding::ValueTypeMarker>::borrow),
7613                encoder,
7614                offset + cur_offset,
7615                depth,
7616            )?;
7617
7618            _prev_end_offset = cur_offset + envelope_size;
7619            if 4 > max_ordinal {
7620                return Ok(());
7621            }
7622
7623            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7624            // are envelope_size bytes.
7625            let cur_offset: usize = (4 - 1) * envelope_size;
7626
7627            // Zero reserved fields.
7628            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7629
7630            // Safety:
7631            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7632            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7633            //   envelope_size bytes, there is always sufficient room.
7634            fidl::encoding::encode_in_envelope_optional::<CigFramingOptions, D>(
7635                self.framing
7636                    .as_ref()
7637                    .map(<CigFramingOptions as fidl::encoding::ValueTypeMarker>::borrow),
7638                encoder,
7639                offset + cur_offset,
7640                depth,
7641            )?;
7642
7643            _prev_end_offset = cur_offset + envelope_size;
7644            if 5 > max_ordinal {
7645                return Ok(());
7646            }
7647
7648            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7649            // are envelope_size bytes.
7650            let cur_offset: usize = (5 - 1) * envelope_size;
7651
7652            // Zero reserved fields.
7653            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7654
7655            // Safety:
7656            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7657            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7658            //   envelope_size bytes, there is always sufficient room.
7659            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7660                self.max_transport_latency_c_to_p
7661                    .as_ref()
7662                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7663                encoder,
7664                offset + cur_offset,
7665                depth,
7666            )?;
7667
7668            _prev_end_offset = cur_offset + envelope_size;
7669            if 6 > max_ordinal {
7670                return Ok(());
7671            }
7672
7673            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7674            // are envelope_size bytes.
7675            let cur_offset: usize = (6 - 1) * envelope_size;
7676
7677            // Zero reserved fields.
7678            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7679
7680            // Safety:
7681            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7682            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7683            //   envelope_size bytes, there is always sufficient room.
7684            fidl::encoding::encode_in_envelope_optional::<u16, D>(
7685                self.max_transport_latency_p_to_c
7686                    .as_ref()
7687                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7688                encoder,
7689                offset + cur_offset,
7690                depth,
7691            )?;
7692
7693            _prev_end_offset = cur_offset + envelope_size;
7694
7695            Ok(())
7696        }
7697    }
7698
7699    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CigParameters {
7700        #[inline(always)]
7701        fn new_empty() -> Self {
7702            Self::default()
7703        }
7704
7705        unsafe fn decode(
7706            &mut self,
7707            decoder: &mut fidl::encoding::Decoder<'_, D>,
7708            offset: usize,
7709            mut depth: fidl::encoding::Depth,
7710        ) -> fidl::Result<()> {
7711            decoder.debug_check_bounds::<Self>(offset);
7712            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7713                None => return Err(fidl::Error::NotNullable),
7714                Some(len) => len,
7715            };
7716            // Calling decoder.out_of_line_offset(0) is not allowed.
7717            if len == 0 {
7718                return Ok(());
7719            };
7720            depth.increment()?;
7721            let envelope_size = 8;
7722            let bytes_len = len * envelope_size;
7723            let offset = decoder.out_of_line_offset(bytes_len)?;
7724            // Decode the envelope for each type.
7725            let mut _next_ordinal_to_read = 0;
7726            let mut next_offset = offset;
7727            let end_offset = offset + bytes_len;
7728            _next_ordinal_to_read += 1;
7729            if next_offset >= end_offset {
7730                return Ok(());
7731            }
7732
7733            // Decode unknown envelopes for gaps in ordinals.
7734            while _next_ordinal_to_read < 1 {
7735                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7736                _next_ordinal_to_read += 1;
7737                next_offset += envelope_size;
7738            }
7739
7740            let next_out_of_line = decoder.next_out_of_line();
7741            let handles_before = decoder.remaining_handles();
7742            if let Some((inlined, num_bytes, num_handles)) =
7743                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7744            {
7745                let member_inline_size =
7746                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7747                if inlined != (member_inline_size <= 4) {
7748                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7749                }
7750                let inner_offset;
7751                let mut inner_depth = depth.clone();
7752                if inlined {
7753                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7754                    inner_offset = next_offset;
7755                } else {
7756                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7757                    inner_depth.increment()?;
7758                }
7759                let val_ref =
7760                    self.sdu_interval_c_to_p.get_or_insert_with(|| fidl::new_empty!(u32, D));
7761                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7762                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7763                {
7764                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7765                }
7766                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7767                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7768                }
7769            }
7770
7771            next_offset += envelope_size;
7772            _next_ordinal_to_read += 1;
7773            if next_offset >= end_offset {
7774                return Ok(());
7775            }
7776
7777            // Decode unknown envelopes for gaps in ordinals.
7778            while _next_ordinal_to_read < 2 {
7779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7780                _next_ordinal_to_read += 1;
7781                next_offset += envelope_size;
7782            }
7783
7784            let next_out_of_line = decoder.next_out_of_line();
7785            let handles_before = decoder.remaining_handles();
7786            if let Some((inlined, num_bytes, num_handles)) =
7787                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7788            {
7789                let member_inline_size =
7790                    <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7791                if inlined != (member_inline_size <= 4) {
7792                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7793                }
7794                let inner_offset;
7795                let mut inner_depth = depth.clone();
7796                if inlined {
7797                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7798                    inner_offset = next_offset;
7799                } else {
7800                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7801                    inner_depth.increment()?;
7802                }
7803                let val_ref =
7804                    self.sdu_interval_p_to_c.get_or_insert_with(|| fidl::new_empty!(u32, D));
7805                fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7806                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7807                {
7808                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7809                }
7810                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7811                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7812                }
7813            }
7814
7815            next_offset += envelope_size;
7816            _next_ordinal_to_read += 1;
7817            if next_offset >= end_offset {
7818                return Ok(());
7819            }
7820
7821            // Decode unknown envelopes for gaps in ordinals.
7822            while _next_ordinal_to_read < 3 {
7823                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7824                _next_ordinal_to_read += 1;
7825                next_offset += envelope_size;
7826            }
7827
7828            let next_out_of_line = decoder.next_out_of_line();
7829            let handles_before = decoder.remaining_handles();
7830            if let Some((inlined, num_bytes, num_handles)) =
7831                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7832            {
7833                let member_inline_size =
7834                    <CigPacking as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7835                if inlined != (member_inline_size <= 4) {
7836                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7837                }
7838                let inner_offset;
7839                let mut inner_depth = depth.clone();
7840                if inlined {
7841                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7842                    inner_offset = next_offset;
7843                } else {
7844                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7845                    inner_depth.increment()?;
7846                }
7847                let val_ref = self.packing.get_or_insert_with(|| fidl::new_empty!(CigPacking, D));
7848                fidl::decode!(CigPacking, D, val_ref, decoder, inner_offset, inner_depth)?;
7849                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7850                {
7851                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7852                }
7853                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7854                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7855                }
7856            }
7857
7858            next_offset += envelope_size;
7859            _next_ordinal_to_read += 1;
7860            if next_offset >= end_offset {
7861                return Ok(());
7862            }
7863
7864            // Decode unknown envelopes for gaps in ordinals.
7865            while _next_ordinal_to_read < 4 {
7866                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7867                _next_ordinal_to_read += 1;
7868                next_offset += envelope_size;
7869            }
7870
7871            let next_out_of_line = decoder.next_out_of_line();
7872            let handles_before = decoder.remaining_handles();
7873            if let Some((inlined, num_bytes, num_handles)) =
7874                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7875            {
7876                let member_inline_size =
7877                    <CigFramingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7878                if inlined != (member_inline_size <= 4) {
7879                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7880                }
7881                let inner_offset;
7882                let mut inner_depth = depth.clone();
7883                if inlined {
7884                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7885                    inner_offset = next_offset;
7886                } else {
7887                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7888                    inner_depth.increment()?;
7889                }
7890                let val_ref =
7891                    self.framing.get_or_insert_with(|| fidl::new_empty!(CigFramingOptions, D));
7892                fidl::decode!(CigFramingOptions, D, val_ref, decoder, inner_offset, inner_depth)?;
7893                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7894                {
7895                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7896                }
7897                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7898                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7899                }
7900            }
7901
7902            next_offset += envelope_size;
7903            _next_ordinal_to_read += 1;
7904            if next_offset >= end_offset {
7905                return Ok(());
7906            }
7907
7908            // Decode unknown envelopes for gaps in ordinals.
7909            while _next_ordinal_to_read < 5 {
7910                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7911                _next_ordinal_to_read += 1;
7912                next_offset += envelope_size;
7913            }
7914
7915            let next_out_of_line = decoder.next_out_of_line();
7916            let handles_before = decoder.remaining_handles();
7917            if let Some((inlined, num_bytes, num_handles)) =
7918                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7919            {
7920                let member_inline_size =
7921                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7922                if inlined != (member_inline_size <= 4) {
7923                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7924                }
7925                let inner_offset;
7926                let mut inner_depth = depth.clone();
7927                if inlined {
7928                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7929                    inner_offset = next_offset;
7930                } else {
7931                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7932                    inner_depth.increment()?;
7933                }
7934                let val_ref = self
7935                    .max_transport_latency_c_to_p
7936                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
7937                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7938                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7939                {
7940                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7941                }
7942                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7943                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7944                }
7945            }
7946
7947            next_offset += envelope_size;
7948            _next_ordinal_to_read += 1;
7949            if next_offset >= end_offset {
7950                return Ok(());
7951            }
7952
7953            // Decode unknown envelopes for gaps in ordinals.
7954            while _next_ordinal_to_read < 6 {
7955                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7956                _next_ordinal_to_read += 1;
7957                next_offset += envelope_size;
7958            }
7959
7960            let next_out_of_line = decoder.next_out_of_line();
7961            let handles_before = decoder.remaining_handles();
7962            if let Some((inlined, num_bytes, num_handles)) =
7963                fidl::encoding::decode_envelope_header(decoder, next_offset)?
7964            {
7965                let member_inline_size =
7966                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7967                if inlined != (member_inline_size <= 4) {
7968                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
7969                }
7970                let inner_offset;
7971                let mut inner_depth = depth.clone();
7972                if inlined {
7973                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7974                    inner_offset = next_offset;
7975                } else {
7976                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7977                    inner_depth.increment()?;
7978                }
7979                let val_ref = self
7980                    .max_transport_latency_p_to_c
7981                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
7982                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7983                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7984                {
7985                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
7986                }
7987                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7988                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7989                }
7990            }
7991
7992            next_offset += envelope_size;
7993
7994            // Decode the remaining unknown envelopes.
7995            while next_offset < end_offset {
7996                _next_ordinal_to_read += 1;
7997                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7998                next_offset += envelope_size;
7999            }
8000
8001            Ok(())
8002        }
8003    }
8004
8005    impl CisEstablishedParameters {
8006        #[inline(always)]
8007        fn max_ordinal_present(&self) -> u64 {
8008            if let Some(_) = self.peripheral_to_central_params {
8009                return 6;
8010            }
8011            if let Some(_) = self.central_to_peripheral_params {
8012                return 5;
8013            }
8014            if let Some(_) = self.iso_interval {
8015                return 4;
8016            }
8017            if let Some(_) = self.max_subevents {
8018                return 3;
8019            }
8020            if let Some(_) = self.cis_sync_delay {
8021                return 2;
8022            }
8023            if let Some(_) = self.cig_sync_delay {
8024                return 1;
8025            }
8026            0
8027        }
8028    }
8029
8030    impl fidl::encoding::ValueTypeMarker for CisEstablishedParameters {
8031        type Borrowed<'a> = &'a Self;
8032        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8033            value
8034        }
8035    }
8036
8037    unsafe impl fidl::encoding::TypeMarker for CisEstablishedParameters {
8038        type Owned = Self;
8039
8040        #[inline(always)]
8041        fn inline_align(_context: fidl::encoding::Context) -> usize {
8042            8
8043        }
8044
8045        #[inline(always)]
8046        fn inline_size(_context: fidl::encoding::Context) -> usize {
8047            16
8048        }
8049    }
8050
8051    unsafe impl<D: fidl::encoding::ResourceDialect>
8052        fidl::encoding::Encode<CisEstablishedParameters, D> for &CisEstablishedParameters
8053    {
8054        unsafe fn encode(
8055            self,
8056            encoder: &mut fidl::encoding::Encoder<'_, D>,
8057            offset: usize,
8058            mut depth: fidl::encoding::Depth,
8059        ) -> fidl::Result<()> {
8060            encoder.debug_check_bounds::<CisEstablishedParameters>(offset);
8061            // Vector header
8062            let max_ordinal: u64 = self.max_ordinal_present();
8063            encoder.write_num(max_ordinal, offset);
8064            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8065            // Calling encoder.out_of_line_offset(0) is not allowed.
8066            if max_ordinal == 0 {
8067                return Ok(());
8068            }
8069            depth.increment()?;
8070            let envelope_size = 8;
8071            let bytes_len = max_ordinal as usize * envelope_size;
8072            #[allow(unused_variables)]
8073            let offset = encoder.out_of_line_offset(bytes_len);
8074            let mut _prev_end_offset: usize = 0;
8075            if 1 > max_ordinal {
8076                return Ok(());
8077            }
8078
8079            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8080            // are envelope_size bytes.
8081            let cur_offset: usize = (1 - 1) * envelope_size;
8082
8083            // Zero reserved fields.
8084            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8085
8086            // Safety:
8087            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8088            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8089            //   envelope_size bytes, there is always sufficient room.
8090            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8091                self.cig_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8092                encoder,
8093                offset + cur_offset,
8094                depth,
8095            )?;
8096
8097            _prev_end_offset = cur_offset + envelope_size;
8098            if 2 > max_ordinal {
8099                return Ok(());
8100            }
8101
8102            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8103            // are envelope_size bytes.
8104            let cur_offset: usize = (2 - 1) * envelope_size;
8105
8106            // Zero reserved fields.
8107            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8108
8109            // Safety:
8110            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8111            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8112            //   envelope_size bytes, there is always sufficient room.
8113            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8114                self.cis_sync_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8115                encoder,
8116                offset + cur_offset,
8117                depth,
8118            )?;
8119
8120            _prev_end_offset = cur_offset + envelope_size;
8121            if 3 > max_ordinal {
8122                return Ok(());
8123            }
8124
8125            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8126            // are envelope_size bytes.
8127            let cur_offset: usize = (3 - 1) * envelope_size;
8128
8129            // Zero reserved fields.
8130            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8131
8132            // Safety:
8133            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8134            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8135            //   envelope_size bytes, there is always sufficient room.
8136            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8137                self.max_subevents.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8138                encoder,
8139                offset + cur_offset,
8140                depth,
8141            )?;
8142
8143            _prev_end_offset = cur_offset + envelope_size;
8144            if 4 > max_ordinal {
8145                return Ok(());
8146            }
8147
8148            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8149            // are envelope_size bytes.
8150            let cur_offset: usize = (4 - 1) * envelope_size;
8151
8152            // Zero reserved fields.
8153            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8154
8155            // Safety:
8156            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8157            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8158            //   envelope_size bytes, there is always sufficient room.
8159            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8160                self.iso_interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8161                encoder,
8162                offset + cur_offset,
8163                depth,
8164            )?;
8165
8166            _prev_end_offset = cur_offset + envelope_size;
8167            if 5 > max_ordinal {
8168                return Ok(());
8169            }
8170
8171            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8172            // are envelope_size bytes.
8173            let cur_offset: usize = (5 - 1) * envelope_size;
8174
8175            // Zero reserved fields.
8176            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8177
8178            // Safety:
8179            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8180            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8181            //   envelope_size bytes, there is always sufficient room.
8182            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8183                self.central_to_peripheral_params
8184                    .as_ref()
8185                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8186                encoder,
8187                offset + cur_offset,
8188                depth,
8189            )?;
8190
8191            _prev_end_offset = cur_offset + envelope_size;
8192            if 6 > max_ordinal {
8193                return Ok(());
8194            }
8195
8196            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8197            // are envelope_size bytes.
8198            let cur_offset: usize = (6 - 1) * envelope_size;
8199
8200            // Zero reserved fields.
8201            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8202
8203            // Safety:
8204            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8205            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8206            //   envelope_size bytes, there is always sufficient room.
8207            fidl::encoding::encode_in_envelope_optional::<CisUnidirectionalParams, D>(
8208                self.peripheral_to_central_params
8209                    .as_ref()
8210                    .map(<CisUnidirectionalParams as fidl::encoding::ValueTypeMarker>::borrow),
8211                encoder,
8212                offset + cur_offset,
8213                depth,
8214            )?;
8215
8216            _prev_end_offset = cur_offset + envelope_size;
8217
8218            Ok(())
8219        }
8220    }
8221
8222    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8223        for CisEstablishedParameters
8224    {
8225        #[inline(always)]
8226        fn new_empty() -> Self {
8227            Self::default()
8228        }
8229
8230        unsafe fn decode(
8231            &mut self,
8232            decoder: &mut fidl::encoding::Decoder<'_, D>,
8233            offset: usize,
8234            mut depth: fidl::encoding::Depth,
8235        ) -> fidl::Result<()> {
8236            decoder.debug_check_bounds::<Self>(offset);
8237            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8238                None => return Err(fidl::Error::NotNullable),
8239                Some(len) => len,
8240            };
8241            // Calling decoder.out_of_line_offset(0) is not allowed.
8242            if len == 0 {
8243                return Ok(());
8244            };
8245            depth.increment()?;
8246            let envelope_size = 8;
8247            let bytes_len = len * envelope_size;
8248            let offset = decoder.out_of_line_offset(bytes_len)?;
8249            // Decode the envelope for each type.
8250            let mut _next_ordinal_to_read = 0;
8251            let mut next_offset = offset;
8252            let end_offset = offset + bytes_len;
8253            _next_ordinal_to_read += 1;
8254            if next_offset >= end_offset {
8255                return Ok(());
8256            }
8257
8258            // Decode unknown envelopes for gaps in ordinals.
8259            while _next_ordinal_to_read < 1 {
8260                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8261                _next_ordinal_to_read += 1;
8262                next_offset += envelope_size;
8263            }
8264
8265            let next_out_of_line = decoder.next_out_of_line();
8266            let handles_before = decoder.remaining_handles();
8267            if let Some((inlined, num_bytes, num_handles)) =
8268                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8269            {
8270                let member_inline_size =
8271                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8272                if inlined != (member_inline_size <= 4) {
8273                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8274                }
8275                let inner_offset;
8276                let mut inner_depth = depth.clone();
8277                if inlined {
8278                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8279                    inner_offset = next_offset;
8280                } else {
8281                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8282                    inner_depth.increment()?;
8283                }
8284                let val_ref = self.cig_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8285                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8286                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8287                {
8288                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8289                }
8290                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8291                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8292                }
8293            }
8294
8295            next_offset += envelope_size;
8296            _next_ordinal_to_read += 1;
8297            if next_offset >= end_offset {
8298                return Ok(());
8299            }
8300
8301            // Decode unknown envelopes for gaps in ordinals.
8302            while _next_ordinal_to_read < 2 {
8303                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8304                _next_ordinal_to_read += 1;
8305                next_offset += envelope_size;
8306            }
8307
8308            let next_out_of_line = decoder.next_out_of_line();
8309            let handles_before = decoder.remaining_handles();
8310            if let Some((inlined, num_bytes, num_handles)) =
8311                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8312            {
8313                let member_inline_size =
8314                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8315                if inlined != (member_inline_size <= 4) {
8316                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8317                }
8318                let inner_offset;
8319                let mut inner_depth = depth.clone();
8320                if inlined {
8321                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8322                    inner_offset = next_offset;
8323                } else {
8324                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8325                    inner_depth.increment()?;
8326                }
8327                let val_ref = self.cis_sync_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
8328                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8329                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8330                {
8331                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8332                }
8333                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8334                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8335                }
8336            }
8337
8338            next_offset += envelope_size;
8339            _next_ordinal_to_read += 1;
8340            if next_offset >= end_offset {
8341                return Ok(());
8342            }
8343
8344            // Decode unknown envelopes for gaps in ordinals.
8345            while _next_ordinal_to_read < 3 {
8346                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8347                _next_ordinal_to_read += 1;
8348                next_offset += envelope_size;
8349            }
8350
8351            let next_out_of_line = decoder.next_out_of_line();
8352            let handles_before = decoder.remaining_handles();
8353            if let Some((inlined, num_bytes, num_handles)) =
8354                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8355            {
8356                let member_inline_size =
8357                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8358                if inlined != (member_inline_size <= 4) {
8359                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8360                }
8361                let inner_offset;
8362                let mut inner_depth = depth.clone();
8363                if inlined {
8364                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8365                    inner_offset = next_offset;
8366                } else {
8367                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8368                    inner_depth.increment()?;
8369                }
8370                let val_ref = self.max_subevents.get_or_insert_with(|| fidl::new_empty!(u8, D));
8371                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8372                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8373                {
8374                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8375                }
8376                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8377                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8378                }
8379            }
8380
8381            next_offset += envelope_size;
8382            _next_ordinal_to_read += 1;
8383            if next_offset >= end_offset {
8384                return Ok(());
8385            }
8386
8387            // Decode unknown envelopes for gaps in ordinals.
8388            while _next_ordinal_to_read < 4 {
8389                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8390                _next_ordinal_to_read += 1;
8391                next_offset += envelope_size;
8392            }
8393
8394            let next_out_of_line = decoder.next_out_of_line();
8395            let handles_before = decoder.remaining_handles();
8396            if let Some((inlined, num_bytes, num_handles)) =
8397                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8398            {
8399                let member_inline_size =
8400                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8401                if inlined != (member_inline_size <= 4) {
8402                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8403                }
8404                let inner_offset;
8405                let mut inner_depth = depth.clone();
8406                if inlined {
8407                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8408                    inner_offset = next_offset;
8409                } else {
8410                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8411                    inner_depth.increment()?;
8412                }
8413                let val_ref = self.iso_interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
8414                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8415                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8416                {
8417                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8418                }
8419                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8420                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8421                }
8422            }
8423
8424            next_offset += envelope_size;
8425            _next_ordinal_to_read += 1;
8426            if next_offset >= end_offset {
8427                return Ok(());
8428            }
8429
8430            // Decode unknown envelopes for gaps in ordinals.
8431            while _next_ordinal_to_read < 5 {
8432                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8433                _next_ordinal_to_read += 1;
8434                next_offset += envelope_size;
8435            }
8436
8437            let next_out_of_line = decoder.next_out_of_line();
8438            let handles_before = decoder.remaining_handles();
8439            if let Some((inlined, num_bytes, num_handles)) =
8440                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8441            {
8442                let member_inline_size =
8443                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8444                        decoder.context,
8445                    );
8446                if inlined != (member_inline_size <= 4) {
8447                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8448                }
8449                let inner_offset;
8450                let mut inner_depth = depth.clone();
8451                if inlined {
8452                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8453                    inner_offset = next_offset;
8454                } else {
8455                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8456                    inner_depth.increment()?;
8457                }
8458                let val_ref = self
8459                    .central_to_peripheral_params
8460                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8461                fidl::decode!(
8462                    CisUnidirectionalParams,
8463                    D,
8464                    val_ref,
8465                    decoder,
8466                    inner_offset,
8467                    inner_depth
8468                )?;
8469                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8470                {
8471                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8472                }
8473                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8474                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8475                }
8476            }
8477
8478            next_offset += envelope_size;
8479            _next_ordinal_to_read += 1;
8480            if next_offset >= end_offset {
8481                return Ok(());
8482            }
8483
8484            // Decode unknown envelopes for gaps in ordinals.
8485            while _next_ordinal_to_read < 6 {
8486                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8487                _next_ordinal_to_read += 1;
8488                next_offset += envelope_size;
8489            }
8490
8491            let next_out_of_line = decoder.next_out_of_line();
8492            let handles_before = decoder.remaining_handles();
8493            if let Some((inlined, num_bytes, num_handles)) =
8494                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8495            {
8496                let member_inline_size =
8497                    <CisUnidirectionalParams as fidl::encoding::TypeMarker>::inline_size(
8498                        decoder.context,
8499                    );
8500                if inlined != (member_inline_size <= 4) {
8501                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8502                }
8503                let inner_offset;
8504                let mut inner_depth = depth.clone();
8505                if inlined {
8506                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8507                    inner_offset = next_offset;
8508                } else {
8509                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8510                    inner_depth.increment()?;
8511                }
8512                let val_ref = self
8513                    .peripheral_to_central_params
8514                    .get_or_insert_with(|| fidl::new_empty!(CisUnidirectionalParams, D));
8515                fidl::decode!(
8516                    CisUnidirectionalParams,
8517                    D,
8518                    val_ref,
8519                    decoder,
8520                    inner_offset,
8521                    inner_depth
8522                )?;
8523                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8524                {
8525                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8526                }
8527                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8528                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8529                }
8530            }
8531
8532            next_offset += envelope_size;
8533
8534            // Decode the remaining unknown envelopes.
8535            while next_offset < end_offset {
8536                _next_ordinal_to_read += 1;
8537                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8538                next_offset += envelope_size;
8539            }
8540
8541            Ok(())
8542        }
8543    }
8544
8545    impl CisParameters {
8546        #[inline(always)]
8547        fn max_ordinal_present(&self) -> u64 {
8548            if let Some(_) = self.id {
8549                return 2;
8550            }
8551            if let Some(_) = self.cis_id {
8552                return 1;
8553            }
8554            0
8555        }
8556    }
8557
8558    impl fidl::encoding::ValueTypeMarker for CisParameters {
8559        type Borrowed<'a> = &'a Self;
8560        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8561            value
8562        }
8563    }
8564
8565    unsafe impl fidl::encoding::TypeMarker for CisParameters {
8566        type Owned = Self;
8567
8568        #[inline(always)]
8569        fn inline_align(_context: fidl::encoding::Context) -> usize {
8570            8
8571        }
8572
8573        #[inline(always)]
8574        fn inline_size(_context: fidl::encoding::Context) -> usize {
8575            16
8576        }
8577    }
8578
8579    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CisParameters, D>
8580        for &CisParameters
8581    {
8582        unsafe fn encode(
8583            self,
8584            encoder: &mut fidl::encoding::Encoder<'_, D>,
8585            offset: usize,
8586            mut depth: fidl::encoding::Depth,
8587        ) -> fidl::Result<()> {
8588            encoder.debug_check_bounds::<CisParameters>(offset);
8589            // Vector header
8590            let max_ordinal: u64 = self.max_ordinal_present();
8591            encoder.write_num(max_ordinal, offset);
8592            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8593            // Calling encoder.out_of_line_offset(0) is not allowed.
8594            if max_ordinal == 0 {
8595                return Ok(());
8596            }
8597            depth.increment()?;
8598            let envelope_size = 8;
8599            let bytes_len = max_ordinal as usize * envelope_size;
8600            #[allow(unused_variables)]
8601            let offset = encoder.out_of_line_offset(bytes_len);
8602            let mut _prev_end_offset: usize = 0;
8603            if 1 > max_ordinal {
8604                return Ok(());
8605            }
8606
8607            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8608            // are envelope_size bytes.
8609            let cur_offset: usize = (1 - 1) * envelope_size;
8610
8611            // Zero reserved fields.
8612            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8613
8614            // Safety:
8615            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8616            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8617            //   envelope_size bytes, there is always sufficient room.
8618            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8619                self.cis_id.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8620                encoder,
8621                offset + cur_offset,
8622                depth,
8623            )?;
8624
8625            _prev_end_offset = cur_offset + envelope_size;
8626            if 2 > max_ordinal {
8627                return Ok(());
8628            }
8629
8630            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8631            // are envelope_size bytes.
8632            let cur_offset: usize = (2 - 1) * envelope_size;
8633
8634            // Zero reserved fields.
8635            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8636
8637            // Safety:
8638            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8639            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8640            //   envelope_size bytes, there is always sufficient room.
8641            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
8642            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
8643            encoder, offset + cur_offset, depth
8644        )?;
8645
8646            _prev_end_offset = cur_offset + envelope_size;
8647
8648            Ok(())
8649        }
8650    }
8651
8652    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CisParameters {
8653        #[inline(always)]
8654        fn new_empty() -> Self {
8655            Self::default()
8656        }
8657
8658        unsafe fn decode(
8659            &mut self,
8660            decoder: &mut fidl::encoding::Decoder<'_, D>,
8661            offset: usize,
8662            mut depth: fidl::encoding::Depth,
8663        ) -> fidl::Result<()> {
8664            decoder.debug_check_bounds::<Self>(offset);
8665            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8666                None => return Err(fidl::Error::NotNullable),
8667                Some(len) => len,
8668            };
8669            // Calling decoder.out_of_line_offset(0) is not allowed.
8670            if len == 0 {
8671                return Ok(());
8672            };
8673            depth.increment()?;
8674            let envelope_size = 8;
8675            let bytes_len = len * envelope_size;
8676            let offset = decoder.out_of_line_offset(bytes_len)?;
8677            // Decode the envelope for each type.
8678            let mut _next_ordinal_to_read = 0;
8679            let mut next_offset = offset;
8680            let end_offset = offset + bytes_len;
8681            _next_ordinal_to_read += 1;
8682            if next_offset >= end_offset {
8683                return Ok(());
8684            }
8685
8686            // Decode unknown envelopes for gaps in ordinals.
8687            while _next_ordinal_to_read < 1 {
8688                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8689                _next_ordinal_to_read += 1;
8690                next_offset += envelope_size;
8691            }
8692
8693            let next_out_of_line = decoder.next_out_of_line();
8694            let handles_before = decoder.remaining_handles();
8695            if let Some((inlined, num_bytes, num_handles)) =
8696                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8697            {
8698                let member_inline_size =
8699                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8700                if inlined != (member_inline_size <= 4) {
8701                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8702                }
8703                let inner_offset;
8704                let mut inner_depth = depth.clone();
8705                if inlined {
8706                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8707                    inner_offset = next_offset;
8708                } else {
8709                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8710                    inner_depth.increment()?;
8711                }
8712                let val_ref = self.cis_id.get_or_insert_with(|| fidl::new_empty!(u8, D));
8713                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
8714                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8715                {
8716                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8717                }
8718                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8719                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8720                }
8721            }
8722
8723            next_offset += envelope_size;
8724            _next_ordinal_to_read += 1;
8725            if next_offset >= end_offset {
8726                return Ok(());
8727            }
8728
8729            // Decode unknown envelopes for gaps in ordinals.
8730            while _next_ordinal_to_read < 2 {
8731                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8732                _next_ordinal_to_read += 1;
8733                next_offset += envelope_size;
8734            }
8735
8736            let next_out_of_line = decoder.next_out_of_line();
8737            let handles_before = decoder.remaining_handles();
8738            if let Some((inlined, num_bytes, num_handles)) =
8739                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8740            {
8741                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8742                if inlined != (member_inline_size <= 4) {
8743                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8744                }
8745                let inner_offset;
8746                let mut inner_depth = depth.clone();
8747                if inlined {
8748                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8749                    inner_offset = next_offset;
8750                } else {
8751                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8752                    inner_depth.increment()?;
8753                }
8754                let val_ref = self.id.get_or_insert_with(|| {
8755                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
8756                });
8757                fidl::decode!(
8758                    fidl_fuchsia_bluetooth__common::PeerId,
8759                    D,
8760                    val_ref,
8761                    decoder,
8762                    inner_offset,
8763                    inner_depth
8764                )?;
8765                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8766                {
8767                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8768                }
8769                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8770                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8771                }
8772            }
8773
8774            next_offset += envelope_size;
8775
8776            // Decode the remaining unknown envelopes.
8777            while next_offset < end_offset {
8778                _next_ordinal_to_read += 1;
8779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8780                next_offset += envelope_size;
8781            }
8782
8783            Ok(())
8784        }
8785    }
8786
8787    impl CisUnidirectionalParams {
8788        #[inline(always)]
8789        fn max_ordinal_present(&self) -> u64 {
8790            if let Some(_) = self.flush_timeout {
8791                return 3;
8792            }
8793            if let Some(_) = self.burst_number {
8794                return 2;
8795            }
8796            if let Some(_) = self.transport_latency {
8797                return 1;
8798            }
8799            0
8800        }
8801    }
8802
8803    impl fidl::encoding::ValueTypeMarker for CisUnidirectionalParams {
8804        type Borrowed<'a> = &'a Self;
8805        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8806            value
8807        }
8808    }
8809
8810    unsafe impl fidl::encoding::TypeMarker for CisUnidirectionalParams {
8811        type Owned = Self;
8812
8813        #[inline(always)]
8814        fn inline_align(_context: fidl::encoding::Context) -> usize {
8815            8
8816        }
8817
8818        #[inline(always)]
8819        fn inline_size(_context: fidl::encoding::Context) -> usize {
8820            16
8821        }
8822    }
8823
8824    unsafe impl<D: fidl::encoding::ResourceDialect>
8825        fidl::encoding::Encode<CisUnidirectionalParams, D> for &CisUnidirectionalParams
8826    {
8827        unsafe fn encode(
8828            self,
8829            encoder: &mut fidl::encoding::Encoder<'_, D>,
8830            offset: usize,
8831            mut depth: fidl::encoding::Depth,
8832        ) -> fidl::Result<()> {
8833            encoder.debug_check_bounds::<CisUnidirectionalParams>(offset);
8834            // Vector header
8835            let max_ordinal: u64 = self.max_ordinal_present();
8836            encoder.write_num(max_ordinal, offset);
8837            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
8838            // Calling encoder.out_of_line_offset(0) is not allowed.
8839            if max_ordinal == 0 {
8840                return Ok(());
8841            }
8842            depth.increment()?;
8843            let envelope_size = 8;
8844            let bytes_len = max_ordinal as usize * envelope_size;
8845            #[allow(unused_variables)]
8846            let offset = encoder.out_of_line_offset(bytes_len);
8847            let mut _prev_end_offset: usize = 0;
8848            if 1 > max_ordinal {
8849                return Ok(());
8850            }
8851
8852            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8853            // are envelope_size bytes.
8854            let cur_offset: usize = (1 - 1) * envelope_size;
8855
8856            // Zero reserved fields.
8857            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8858
8859            // Safety:
8860            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8861            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8862            //   envelope_size bytes, there is always sufficient room.
8863            fidl::encoding::encode_in_envelope_optional::<i64, D>(
8864                self.transport_latency
8865                    .as_ref()
8866                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
8867                encoder,
8868                offset + cur_offset,
8869                depth,
8870            )?;
8871
8872            _prev_end_offset = cur_offset + envelope_size;
8873            if 2 > max_ordinal {
8874                return Ok(());
8875            }
8876
8877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8878            // are envelope_size bytes.
8879            let cur_offset: usize = (2 - 1) * envelope_size;
8880
8881            // Zero reserved fields.
8882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8883
8884            // Safety:
8885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8887            //   envelope_size bytes, there is always sufficient room.
8888            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8889                self.burst_number.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8890                encoder,
8891                offset + cur_offset,
8892                depth,
8893            )?;
8894
8895            _prev_end_offset = cur_offset + envelope_size;
8896            if 3 > max_ordinal {
8897                return Ok(());
8898            }
8899
8900            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
8901            // are envelope_size bytes.
8902            let cur_offset: usize = (3 - 1) * envelope_size;
8903
8904            // Zero reserved fields.
8905            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
8906
8907            // Safety:
8908            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
8909            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
8910            //   envelope_size bytes, there is always sufficient room.
8911            fidl::encoding::encode_in_envelope_optional::<u8, D>(
8912                self.flush_timeout.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
8913                encoder,
8914                offset + cur_offset,
8915                depth,
8916            )?;
8917
8918            _prev_end_offset = cur_offset + envelope_size;
8919
8920            Ok(())
8921        }
8922    }
8923
8924    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8925        for CisUnidirectionalParams
8926    {
8927        #[inline(always)]
8928        fn new_empty() -> Self {
8929            Self::default()
8930        }
8931
8932        unsafe fn decode(
8933            &mut self,
8934            decoder: &mut fidl::encoding::Decoder<'_, D>,
8935            offset: usize,
8936            mut depth: fidl::encoding::Depth,
8937        ) -> fidl::Result<()> {
8938            decoder.debug_check_bounds::<Self>(offset);
8939            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
8940                None => return Err(fidl::Error::NotNullable),
8941                Some(len) => len,
8942            };
8943            // Calling decoder.out_of_line_offset(0) is not allowed.
8944            if len == 0 {
8945                return Ok(());
8946            };
8947            depth.increment()?;
8948            let envelope_size = 8;
8949            let bytes_len = len * envelope_size;
8950            let offset = decoder.out_of_line_offset(bytes_len)?;
8951            // Decode the envelope for each type.
8952            let mut _next_ordinal_to_read = 0;
8953            let mut next_offset = offset;
8954            let end_offset = offset + bytes_len;
8955            _next_ordinal_to_read += 1;
8956            if next_offset >= end_offset {
8957                return Ok(());
8958            }
8959
8960            // Decode unknown envelopes for gaps in ordinals.
8961            while _next_ordinal_to_read < 1 {
8962                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
8963                _next_ordinal_to_read += 1;
8964                next_offset += envelope_size;
8965            }
8966
8967            let next_out_of_line = decoder.next_out_of_line();
8968            let handles_before = decoder.remaining_handles();
8969            if let Some((inlined, num_bytes, num_handles)) =
8970                fidl::encoding::decode_envelope_header(decoder, next_offset)?
8971            {
8972                let member_inline_size =
8973                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
8974                if inlined != (member_inline_size <= 4) {
8975                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
8976                }
8977                let inner_offset;
8978                let mut inner_depth = depth.clone();
8979                if inlined {
8980                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
8981                    inner_offset = next_offset;
8982                } else {
8983                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8984                    inner_depth.increment()?;
8985                }
8986                let val_ref =
8987                    self.transport_latency.get_or_insert_with(|| fidl::new_empty!(i64, D));
8988                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
8989                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
8990                {
8991                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
8992                }
8993                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8994                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8995                }
8996            }
8997
8998            next_offset += envelope_size;
8999            _next_ordinal_to_read += 1;
9000            if next_offset >= end_offset {
9001                return Ok(());
9002            }
9003
9004            // Decode unknown envelopes for gaps in ordinals.
9005            while _next_ordinal_to_read < 2 {
9006                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9007                _next_ordinal_to_read += 1;
9008                next_offset += envelope_size;
9009            }
9010
9011            let next_out_of_line = decoder.next_out_of_line();
9012            let handles_before = decoder.remaining_handles();
9013            if let Some((inlined, num_bytes, num_handles)) =
9014                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9015            {
9016                let member_inline_size =
9017                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9018                if inlined != (member_inline_size <= 4) {
9019                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9020                }
9021                let inner_offset;
9022                let mut inner_depth = depth.clone();
9023                if inlined {
9024                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9025                    inner_offset = next_offset;
9026                } else {
9027                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9028                    inner_depth.increment()?;
9029                }
9030                let val_ref = self.burst_number.get_or_insert_with(|| fidl::new_empty!(u8, D));
9031                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9032                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9033                {
9034                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9035                }
9036                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9037                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9038                }
9039            }
9040
9041            next_offset += envelope_size;
9042            _next_ordinal_to_read += 1;
9043            if next_offset >= end_offset {
9044                return Ok(());
9045            }
9046
9047            // Decode unknown envelopes for gaps in ordinals.
9048            while _next_ordinal_to_read < 3 {
9049                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9050                _next_ordinal_to_read += 1;
9051                next_offset += envelope_size;
9052            }
9053
9054            let next_out_of_line = decoder.next_out_of_line();
9055            let handles_before = decoder.remaining_handles();
9056            if let Some((inlined, num_bytes, num_handles)) =
9057                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9058            {
9059                let member_inline_size =
9060                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9061                if inlined != (member_inline_size <= 4) {
9062                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9063                }
9064                let inner_offset;
9065                let mut inner_depth = depth.clone();
9066                if inlined {
9067                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9068                    inner_offset = next_offset;
9069                } else {
9070                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9071                    inner_depth.increment()?;
9072                }
9073                let val_ref = self.flush_timeout.get_or_insert_with(|| fidl::new_empty!(u8, D));
9074                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
9075                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9076                {
9077                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9078                }
9079                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9080                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9081                }
9082            }
9083
9084            next_offset += envelope_size;
9085
9086            // Decode the remaining unknown envelopes.
9087            while next_offset < end_offset {
9088                _next_ordinal_to_read += 1;
9089                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9090                next_offset += envelope_size;
9091            }
9092
9093            Ok(())
9094        }
9095    }
9096
9097    impl CodecDelayGetCodecLocalDelayRangeRequest {
9098        #[inline(always)]
9099        fn max_ordinal_present(&self) -> u64 {
9100            if let Some(_) = self.codec_attributes {
9101                return 3;
9102            }
9103            if let Some(_) = self.data_direction {
9104                return 2;
9105            }
9106            if let Some(_) = self.logical_transport_type {
9107                return 1;
9108            }
9109            0
9110        }
9111    }
9112
9113    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9114        type Borrowed<'a> = &'a Self;
9115        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9116            value
9117        }
9118    }
9119
9120    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeRequest {
9121        type Owned = Self;
9122
9123        #[inline(always)]
9124        fn inline_align(_context: fidl::encoding::Context) -> usize {
9125            8
9126        }
9127
9128        #[inline(always)]
9129        fn inline_size(_context: fidl::encoding::Context) -> usize {
9130            16
9131        }
9132    }
9133
9134    unsafe impl<D: fidl::encoding::ResourceDialect>
9135        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeRequest, D>
9136        for &CodecDelayGetCodecLocalDelayRangeRequest
9137    {
9138        unsafe fn encode(
9139            self,
9140            encoder: &mut fidl::encoding::Encoder<'_, D>,
9141            offset: usize,
9142            mut depth: fidl::encoding::Depth,
9143        ) -> fidl::Result<()> {
9144            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeRequest>(offset);
9145            // Vector header
9146            let max_ordinal: u64 = self.max_ordinal_present();
9147            encoder.write_num(max_ordinal, offset);
9148            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9149            // Calling encoder.out_of_line_offset(0) is not allowed.
9150            if max_ordinal == 0 {
9151                return Ok(());
9152            }
9153            depth.increment()?;
9154            let envelope_size = 8;
9155            let bytes_len = max_ordinal as usize * envelope_size;
9156            #[allow(unused_variables)]
9157            let offset = encoder.out_of_line_offset(bytes_len);
9158            let mut _prev_end_offset: usize = 0;
9159            if 1 > max_ordinal {
9160                return Ok(());
9161            }
9162
9163            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9164            // are envelope_size bytes.
9165            let cur_offset: usize = (1 - 1) * envelope_size;
9166
9167            // Zero reserved fields.
9168            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9169
9170            // Safety:
9171            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9172            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9173            //   envelope_size bytes, there is always sufficient room.
9174            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::LogicalTransportType, D>(
9175            self.logical_transport_type.as_ref().map(<fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::ValueTypeMarker>::borrow),
9176            encoder, offset + cur_offset, depth
9177        )?;
9178
9179            _prev_end_offset = cur_offset + envelope_size;
9180            if 2 > max_ordinal {
9181                return Ok(());
9182            }
9183
9184            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9185            // are envelope_size bytes.
9186            let cur_offset: usize = (2 - 1) * envelope_size;
9187
9188            // Zero reserved fields.
9189            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9190
9191            // Safety:
9192            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9193            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9194            //   envelope_size bytes, there is always sufficient room.
9195            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
9196            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
9197            encoder, offset + cur_offset, depth
9198        )?;
9199
9200            _prev_end_offset = cur_offset + envelope_size;
9201            if 3 > max_ordinal {
9202                return Ok(());
9203            }
9204
9205            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9206            // are envelope_size bytes.
9207            let cur_offset: usize = (3 - 1) * envelope_size;
9208
9209            // Zero reserved fields.
9210            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9211
9212            // Safety:
9213            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9214            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9215            //   envelope_size bytes, there is always sufficient room.
9216            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
9217            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
9218            encoder, offset + cur_offset, depth
9219        )?;
9220
9221            _prev_end_offset = cur_offset + envelope_size;
9222
9223            Ok(())
9224        }
9225    }
9226
9227    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9228        for CodecDelayGetCodecLocalDelayRangeRequest
9229    {
9230        #[inline(always)]
9231        fn new_empty() -> Self {
9232            Self::default()
9233        }
9234
9235        unsafe fn decode(
9236            &mut self,
9237            decoder: &mut fidl::encoding::Decoder<'_, D>,
9238            offset: usize,
9239            mut depth: fidl::encoding::Depth,
9240        ) -> fidl::Result<()> {
9241            decoder.debug_check_bounds::<Self>(offset);
9242            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9243                None => return Err(fidl::Error::NotNullable),
9244                Some(len) => len,
9245            };
9246            // Calling decoder.out_of_line_offset(0) is not allowed.
9247            if len == 0 {
9248                return Ok(());
9249            };
9250            depth.increment()?;
9251            let envelope_size = 8;
9252            let bytes_len = len * envelope_size;
9253            let offset = decoder.out_of_line_offset(bytes_len)?;
9254            // Decode the envelope for each type.
9255            let mut _next_ordinal_to_read = 0;
9256            let mut next_offset = offset;
9257            let end_offset = offset + bytes_len;
9258            _next_ordinal_to_read += 1;
9259            if next_offset >= end_offset {
9260                return Ok(());
9261            }
9262
9263            // Decode unknown envelopes for gaps in ordinals.
9264            while _next_ordinal_to_read < 1 {
9265                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9266                _next_ordinal_to_read += 1;
9267                next_offset += envelope_size;
9268            }
9269
9270            let next_out_of_line = decoder.next_out_of_line();
9271            let handles_before = decoder.remaining_handles();
9272            if let Some((inlined, num_bytes, num_handles)) =
9273                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9274            {
9275                let member_inline_size = <fidl_fuchsia_bluetooth__common::LogicalTransportType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9276                if inlined != (member_inline_size <= 4) {
9277                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9278                }
9279                let inner_offset;
9280                let mut inner_depth = depth.clone();
9281                if inlined {
9282                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9283                    inner_offset = next_offset;
9284                } else {
9285                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9286                    inner_depth.increment()?;
9287                }
9288                let val_ref = self.logical_transport_type.get_or_insert_with(|| {
9289                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::LogicalTransportType, D)
9290                });
9291                fidl::decode!(
9292                    fidl_fuchsia_bluetooth__common::LogicalTransportType,
9293                    D,
9294                    val_ref,
9295                    decoder,
9296                    inner_offset,
9297                    inner_depth
9298                )?;
9299                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9300                {
9301                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9302                }
9303                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9304                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9305                }
9306            }
9307
9308            next_offset += envelope_size;
9309            _next_ordinal_to_read += 1;
9310            if next_offset >= end_offset {
9311                return Ok(());
9312            }
9313
9314            // Decode unknown envelopes for gaps in ordinals.
9315            while _next_ordinal_to_read < 2 {
9316                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9317                _next_ordinal_to_read += 1;
9318                next_offset += envelope_size;
9319            }
9320
9321            let next_out_of_line = decoder.next_out_of_line();
9322            let handles_before = decoder.remaining_handles();
9323            if let Some((inlined, num_bytes, num_handles)) =
9324                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9325            {
9326                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9327                if inlined != (member_inline_size <= 4) {
9328                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9329                }
9330                let inner_offset;
9331                let mut inner_depth = depth.clone();
9332                if inlined {
9333                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9334                    inner_offset = next_offset;
9335                } else {
9336                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9337                    inner_depth.increment()?;
9338                }
9339                let val_ref = self.data_direction.get_or_insert_with(|| {
9340                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
9341                });
9342                fidl::decode!(
9343                    fidl_fuchsia_bluetooth__common::DataDirection,
9344                    D,
9345                    val_ref,
9346                    decoder,
9347                    inner_offset,
9348                    inner_depth
9349                )?;
9350                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9351                {
9352                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9353                }
9354                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9355                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9356                }
9357            }
9358
9359            next_offset += envelope_size;
9360            _next_ordinal_to_read += 1;
9361            if next_offset >= end_offset {
9362                return Ok(());
9363            }
9364
9365            // Decode unknown envelopes for gaps in ordinals.
9366            while _next_ordinal_to_read < 3 {
9367                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9368                _next_ordinal_to_read += 1;
9369                next_offset += envelope_size;
9370            }
9371
9372            let next_out_of_line = decoder.next_out_of_line();
9373            let handles_before = decoder.remaining_handles();
9374            if let Some((inlined, num_bytes, num_handles)) =
9375                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9376            {
9377                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9378                if inlined != (member_inline_size <= 4) {
9379                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9380                }
9381                let inner_offset;
9382                let mut inner_depth = depth.clone();
9383                if inlined {
9384                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9385                    inner_offset = next_offset;
9386                } else {
9387                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9388                    inner_depth.increment()?;
9389                }
9390                let val_ref = self.codec_attributes.get_or_insert_with(|| {
9391                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
9392                });
9393                fidl::decode!(
9394                    fidl_fuchsia_bluetooth__common::CodecAttributes,
9395                    D,
9396                    val_ref,
9397                    decoder,
9398                    inner_offset,
9399                    inner_depth
9400                )?;
9401                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9402                {
9403                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9404                }
9405                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9406                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9407                }
9408            }
9409
9410            next_offset += envelope_size;
9411
9412            // Decode the remaining unknown envelopes.
9413            while next_offset < end_offset {
9414                _next_ordinal_to_read += 1;
9415                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9416                next_offset += envelope_size;
9417            }
9418
9419            Ok(())
9420        }
9421    }
9422
9423    impl CodecDelayGetCodecLocalDelayRangeResponse {
9424        #[inline(always)]
9425        fn max_ordinal_present(&self) -> u64 {
9426            if let Some(_) = self.max_controller_delay {
9427                return 2;
9428            }
9429            if let Some(_) = self.min_controller_delay {
9430                return 1;
9431            }
9432            0
9433        }
9434    }
9435
9436    impl fidl::encoding::ValueTypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9437        type Borrowed<'a> = &'a Self;
9438        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9439            value
9440        }
9441    }
9442
9443    unsafe impl fidl::encoding::TypeMarker for CodecDelayGetCodecLocalDelayRangeResponse {
9444        type Owned = Self;
9445
9446        #[inline(always)]
9447        fn inline_align(_context: fidl::encoding::Context) -> usize {
9448            8
9449        }
9450
9451        #[inline(always)]
9452        fn inline_size(_context: fidl::encoding::Context) -> usize {
9453            16
9454        }
9455    }
9456
9457    unsafe impl<D: fidl::encoding::ResourceDialect>
9458        fidl::encoding::Encode<CodecDelayGetCodecLocalDelayRangeResponse, D>
9459        for &CodecDelayGetCodecLocalDelayRangeResponse
9460    {
9461        unsafe fn encode(
9462            self,
9463            encoder: &mut fidl::encoding::Encoder<'_, D>,
9464            offset: usize,
9465            mut depth: fidl::encoding::Depth,
9466        ) -> fidl::Result<()> {
9467            encoder.debug_check_bounds::<CodecDelayGetCodecLocalDelayRangeResponse>(offset);
9468            // Vector header
9469            let max_ordinal: u64 = self.max_ordinal_present();
9470            encoder.write_num(max_ordinal, offset);
9471            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9472            // Calling encoder.out_of_line_offset(0) is not allowed.
9473            if max_ordinal == 0 {
9474                return Ok(());
9475            }
9476            depth.increment()?;
9477            let envelope_size = 8;
9478            let bytes_len = max_ordinal as usize * envelope_size;
9479            #[allow(unused_variables)]
9480            let offset = encoder.out_of_line_offset(bytes_len);
9481            let mut _prev_end_offset: usize = 0;
9482            if 1 > max_ordinal {
9483                return Ok(());
9484            }
9485
9486            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9487            // are envelope_size bytes.
9488            let cur_offset: usize = (1 - 1) * envelope_size;
9489
9490            // Zero reserved fields.
9491            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9492
9493            // Safety:
9494            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9495            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9496            //   envelope_size bytes, there is always sufficient room.
9497            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9498                self.min_controller_delay
9499                    .as_ref()
9500                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9501                encoder,
9502                offset + cur_offset,
9503                depth,
9504            )?;
9505
9506            _prev_end_offset = cur_offset + envelope_size;
9507            if 2 > max_ordinal {
9508                return Ok(());
9509            }
9510
9511            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9512            // are envelope_size bytes.
9513            let cur_offset: usize = (2 - 1) * envelope_size;
9514
9515            // Zero reserved fields.
9516            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9517
9518            // Safety:
9519            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9520            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9521            //   envelope_size bytes, there is always sufficient room.
9522            fidl::encoding::encode_in_envelope_optional::<i64, D>(
9523                self.max_controller_delay
9524                    .as_ref()
9525                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
9526                encoder,
9527                offset + cur_offset,
9528                depth,
9529            )?;
9530
9531            _prev_end_offset = cur_offset + envelope_size;
9532
9533            Ok(())
9534        }
9535    }
9536
9537    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9538        for CodecDelayGetCodecLocalDelayRangeResponse
9539    {
9540        #[inline(always)]
9541        fn new_empty() -> Self {
9542            Self::default()
9543        }
9544
9545        unsafe fn decode(
9546            &mut self,
9547            decoder: &mut fidl::encoding::Decoder<'_, D>,
9548            offset: usize,
9549            mut depth: fidl::encoding::Depth,
9550        ) -> fidl::Result<()> {
9551            decoder.debug_check_bounds::<Self>(offset);
9552            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9553                None => return Err(fidl::Error::NotNullable),
9554                Some(len) => len,
9555            };
9556            // Calling decoder.out_of_line_offset(0) is not allowed.
9557            if len == 0 {
9558                return Ok(());
9559            };
9560            depth.increment()?;
9561            let envelope_size = 8;
9562            let bytes_len = len * envelope_size;
9563            let offset = decoder.out_of_line_offset(bytes_len)?;
9564            // Decode the envelope for each type.
9565            let mut _next_ordinal_to_read = 0;
9566            let mut next_offset = offset;
9567            let end_offset = offset + bytes_len;
9568            _next_ordinal_to_read += 1;
9569            if next_offset >= end_offset {
9570                return Ok(());
9571            }
9572
9573            // Decode unknown envelopes for gaps in ordinals.
9574            while _next_ordinal_to_read < 1 {
9575                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9576                _next_ordinal_to_read += 1;
9577                next_offset += envelope_size;
9578            }
9579
9580            let next_out_of_line = decoder.next_out_of_line();
9581            let handles_before = decoder.remaining_handles();
9582            if let Some((inlined, num_bytes, num_handles)) =
9583                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9584            {
9585                let member_inline_size =
9586                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9587                if inlined != (member_inline_size <= 4) {
9588                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9589                }
9590                let inner_offset;
9591                let mut inner_depth = depth.clone();
9592                if inlined {
9593                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9594                    inner_offset = next_offset;
9595                } else {
9596                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9597                    inner_depth.increment()?;
9598                }
9599                let val_ref =
9600                    self.min_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9601                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9602                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9603                {
9604                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9605                }
9606                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9607                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9608                }
9609            }
9610
9611            next_offset += envelope_size;
9612            _next_ordinal_to_read += 1;
9613            if next_offset >= end_offset {
9614                return Ok(());
9615            }
9616
9617            // Decode unknown envelopes for gaps in ordinals.
9618            while _next_ordinal_to_read < 2 {
9619                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9620                _next_ordinal_to_read += 1;
9621                next_offset += envelope_size;
9622            }
9623
9624            let next_out_of_line = decoder.next_out_of_line();
9625            let handles_before = decoder.remaining_handles();
9626            if let Some((inlined, num_bytes, num_handles)) =
9627                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9628            {
9629                let member_inline_size =
9630                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9631                if inlined != (member_inline_size <= 4) {
9632                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9633                }
9634                let inner_offset;
9635                let mut inner_depth = depth.clone();
9636                if inlined {
9637                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9638                    inner_offset = next_offset;
9639                } else {
9640                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9641                    inner_depth.increment()?;
9642                }
9643                let val_ref =
9644                    self.max_controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
9645                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
9646                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9647                {
9648                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9649                }
9650                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9651                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9652                }
9653            }
9654
9655            next_offset += envelope_size;
9656
9657            // Decode the remaining unknown envelopes.
9658            while next_offset < end_offset {
9659                _next_ordinal_to_read += 1;
9660                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9661                next_offset += envelope_size;
9662            }
9663
9664            Ok(())
9665        }
9666    }
9667
9668    impl ConnectedIsochronousGroupEstablishStreamsRequest {
9669        #[inline(always)]
9670        fn max_ordinal_present(&self) -> u64 {
9671            if let Some(_) = self.cis_params {
9672                return 1;
9673            }
9674            0
9675        }
9676    }
9677
9678    impl fidl::encoding::ValueTypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
9679        type Borrowed<'a> = &'a Self;
9680        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9681            value
9682        }
9683    }
9684
9685    unsafe impl fidl::encoding::TypeMarker for ConnectedIsochronousGroupEstablishStreamsRequest {
9686        type Owned = Self;
9687
9688        #[inline(always)]
9689        fn inline_align(_context: fidl::encoding::Context) -> usize {
9690            8
9691        }
9692
9693        #[inline(always)]
9694        fn inline_size(_context: fidl::encoding::Context) -> usize {
9695            16
9696        }
9697    }
9698
9699    unsafe impl<D: fidl::encoding::ResourceDialect>
9700        fidl::encoding::Encode<ConnectedIsochronousGroupEstablishStreamsRequest, D>
9701        for &ConnectedIsochronousGroupEstablishStreamsRequest
9702    {
9703        unsafe fn encode(
9704            self,
9705            encoder: &mut fidl::encoding::Encoder<'_, D>,
9706            offset: usize,
9707            mut depth: fidl::encoding::Depth,
9708        ) -> fidl::Result<()> {
9709            encoder.debug_check_bounds::<ConnectedIsochronousGroupEstablishStreamsRequest>(offset);
9710            // Vector header
9711            let max_ordinal: u64 = self.max_ordinal_present();
9712            encoder.write_num(max_ordinal, offset);
9713            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9714            // Calling encoder.out_of_line_offset(0) is not allowed.
9715            if max_ordinal == 0 {
9716                return Ok(());
9717            }
9718            depth.increment()?;
9719            let envelope_size = 8;
9720            let bytes_len = max_ordinal as usize * envelope_size;
9721            #[allow(unused_variables)]
9722            let offset = encoder.out_of_line_offset(bytes_len);
9723            let mut _prev_end_offset: usize = 0;
9724            if 1 > max_ordinal {
9725                return Ok(());
9726            }
9727
9728            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9729            // are envelope_size bytes.
9730            let cur_offset: usize = (1 - 1) * envelope_size;
9731
9732            // Zero reserved fields.
9733            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9734
9735            // Safety:
9736            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9737            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9738            //   envelope_size bytes, there is always sufficient room.
9739            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CisParameters, 31>, D>(
9740            self.cis_params.as_ref().map(<fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::ValueTypeMarker>::borrow),
9741            encoder, offset + cur_offset, depth
9742        )?;
9743
9744            _prev_end_offset = cur_offset + envelope_size;
9745
9746            Ok(())
9747        }
9748    }
9749
9750    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
9751        for ConnectedIsochronousGroupEstablishStreamsRequest
9752    {
9753        #[inline(always)]
9754        fn new_empty() -> Self {
9755            Self::default()
9756        }
9757
9758        unsafe fn decode(
9759            &mut self,
9760            decoder: &mut fidl::encoding::Decoder<'_, D>,
9761            offset: usize,
9762            mut depth: fidl::encoding::Depth,
9763        ) -> fidl::Result<()> {
9764            decoder.debug_check_bounds::<Self>(offset);
9765            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9766                None => return Err(fidl::Error::NotNullable),
9767                Some(len) => len,
9768            };
9769            // Calling decoder.out_of_line_offset(0) is not allowed.
9770            if len == 0 {
9771                return Ok(());
9772            };
9773            depth.increment()?;
9774            let envelope_size = 8;
9775            let bytes_len = len * envelope_size;
9776            let offset = decoder.out_of_line_offset(bytes_len)?;
9777            // Decode the envelope for each type.
9778            let mut _next_ordinal_to_read = 0;
9779            let mut next_offset = offset;
9780            let end_offset = offset + bytes_len;
9781            _next_ordinal_to_read += 1;
9782            if next_offset >= end_offset {
9783                return Ok(());
9784            }
9785
9786            // Decode unknown envelopes for gaps in ordinals.
9787            while _next_ordinal_to_read < 1 {
9788                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9789                _next_ordinal_to_read += 1;
9790                next_offset += envelope_size;
9791            }
9792
9793            let next_out_of_line = decoder.next_out_of_line();
9794            let handles_before = decoder.remaining_handles();
9795            if let Some((inlined, num_bytes, num_handles)) =
9796                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9797            {
9798                let member_inline_size = <fidl::encoding::Vector<CisParameters, 31> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9799                if inlined != (member_inline_size <= 4) {
9800                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9801                }
9802                let inner_offset;
9803                let mut inner_depth = depth.clone();
9804                if inlined {
9805                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9806                    inner_offset = next_offset;
9807                } else {
9808                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
9809                    inner_depth.increment()?;
9810                }
9811                let val_ref = self.cis_params.get_or_insert_with(
9812                    || fidl::new_empty!(fidl::encoding::Vector<CisParameters, 31>, D),
9813                );
9814                fidl::decode!(fidl::encoding::Vector<CisParameters, 31>, D, val_ref, decoder, inner_offset, inner_depth)?;
9815                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
9816                {
9817                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
9818                }
9819                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
9820                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
9821                }
9822            }
9823
9824            next_offset += envelope_size;
9825
9826            // Decode the remaining unknown envelopes.
9827            while next_offset < end_offset {
9828                _next_ordinal_to_read += 1;
9829                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9830                next_offset += envelope_size;
9831            }
9832
9833            Ok(())
9834        }
9835    }
9836
9837    impl ConnectionOptions {
9838        #[inline(always)]
9839        fn max_ordinal_present(&self) -> u64 {
9840            if let Some(_) = self.service_filter {
9841                return 2;
9842            }
9843            if let Some(_) = self.bondable_mode {
9844                return 1;
9845            }
9846            0
9847        }
9848    }
9849
9850    impl fidl::encoding::ValueTypeMarker for ConnectionOptions {
9851        type Borrowed<'a> = &'a Self;
9852        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
9853            value
9854        }
9855    }
9856
9857    unsafe impl fidl::encoding::TypeMarker for ConnectionOptions {
9858        type Owned = Self;
9859
9860        #[inline(always)]
9861        fn inline_align(_context: fidl::encoding::Context) -> usize {
9862            8
9863        }
9864
9865        #[inline(always)]
9866        fn inline_size(_context: fidl::encoding::Context) -> usize {
9867            16
9868        }
9869    }
9870
9871    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectionOptions, D>
9872        for &ConnectionOptions
9873    {
9874        unsafe fn encode(
9875            self,
9876            encoder: &mut fidl::encoding::Encoder<'_, D>,
9877            offset: usize,
9878            mut depth: fidl::encoding::Depth,
9879        ) -> fidl::Result<()> {
9880            encoder.debug_check_bounds::<ConnectionOptions>(offset);
9881            // Vector header
9882            let max_ordinal: u64 = self.max_ordinal_present();
9883            encoder.write_num(max_ordinal, offset);
9884            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
9885            // Calling encoder.out_of_line_offset(0) is not allowed.
9886            if max_ordinal == 0 {
9887                return Ok(());
9888            }
9889            depth.increment()?;
9890            let envelope_size = 8;
9891            let bytes_len = max_ordinal as usize * envelope_size;
9892            #[allow(unused_variables)]
9893            let offset = encoder.out_of_line_offset(bytes_len);
9894            let mut _prev_end_offset: usize = 0;
9895            if 1 > max_ordinal {
9896                return Ok(());
9897            }
9898
9899            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9900            // are envelope_size bytes.
9901            let cur_offset: usize = (1 - 1) * envelope_size;
9902
9903            // Zero reserved fields.
9904            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9905
9906            // Safety:
9907            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9908            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9909            //   envelope_size bytes, there is always sufficient room.
9910            fidl::encoding::encode_in_envelope_optional::<bool, D>(
9911                self.bondable_mode.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
9912                encoder,
9913                offset + cur_offset,
9914                depth,
9915            )?;
9916
9917            _prev_end_offset = cur_offset + envelope_size;
9918            if 2 > max_ordinal {
9919                return Ok(());
9920            }
9921
9922            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
9923            // are envelope_size bytes.
9924            let cur_offset: usize = (2 - 1) * envelope_size;
9925
9926            // Zero reserved fields.
9927            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
9928
9929            // Safety:
9930            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
9931            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
9932            //   envelope_size bytes, there is always sufficient room.
9933            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
9934            self.service_filter.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
9935            encoder, offset + cur_offset, depth
9936        )?;
9937
9938            _prev_end_offset = cur_offset + envelope_size;
9939
9940            Ok(())
9941        }
9942    }
9943
9944    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionOptions {
9945        #[inline(always)]
9946        fn new_empty() -> Self {
9947            Self::default()
9948        }
9949
9950        unsafe fn decode(
9951            &mut self,
9952            decoder: &mut fidl::encoding::Decoder<'_, D>,
9953            offset: usize,
9954            mut depth: fidl::encoding::Depth,
9955        ) -> fidl::Result<()> {
9956            decoder.debug_check_bounds::<Self>(offset);
9957            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
9958                None => return Err(fidl::Error::NotNullable),
9959                Some(len) => len,
9960            };
9961            // Calling decoder.out_of_line_offset(0) is not allowed.
9962            if len == 0 {
9963                return Ok(());
9964            };
9965            depth.increment()?;
9966            let envelope_size = 8;
9967            let bytes_len = len * envelope_size;
9968            let offset = decoder.out_of_line_offset(bytes_len)?;
9969            // Decode the envelope for each type.
9970            let mut _next_ordinal_to_read = 0;
9971            let mut next_offset = offset;
9972            let end_offset = offset + bytes_len;
9973            _next_ordinal_to_read += 1;
9974            if next_offset >= end_offset {
9975                return Ok(());
9976            }
9977
9978            // Decode unknown envelopes for gaps in ordinals.
9979            while _next_ordinal_to_read < 1 {
9980                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
9981                _next_ordinal_to_read += 1;
9982                next_offset += envelope_size;
9983            }
9984
9985            let next_out_of_line = decoder.next_out_of_line();
9986            let handles_before = decoder.remaining_handles();
9987            if let Some((inlined, num_bytes, num_handles)) =
9988                fidl::encoding::decode_envelope_header(decoder, next_offset)?
9989            {
9990                let member_inline_size =
9991                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
9992                if inlined != (member_inline_size <= 4) {
9993                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
9994                }
9995                let inner_offset;
9996                let mut inner_depth = depth.clone();
9997                if inlined {
9998                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
9999                    inner_offset = next_offset;
10000                } else {
10001                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10002                    inner_depth.increment()?;
10003                }
10004                let val_ref = self.bondable_mode.get_or_insert_with(|| fidl::new_empty!(bool, D));
10005                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10006                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10007                {
10008                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10009                }
10010                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10011                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10012                }
10013            }
10014
10015            next_offset += envelope_size;
10016            _next_ordinal_to_read += 1;
10017            if next_offset >= end_offset {
10018                return Ok(());
10019            }
10020
10021            // Decode unknown envelopes for gaps in ordinals.
10022            while _next_ordinal_to_read < 2 {
10023                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10024                _next_ordinal_to_read += 1;
10025                next_offset += envelope_size;
10026            }
10027
10028            let next_out_of_line = decoder.next_out_of_line();
10029            let handles_before = decoder.remaining_handles();
10030            if let Some((inlined, num_bytes, num_handles)) =
10031                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10032            {
10033                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10034                if inlined != (member_inline_size <= 4) {
10035                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10036                }
10037                let inner_offset;
10038                let mut inner_depth = depth.clone();
10039                if inlined {
10040                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10041                    inner_offset = next_offset;
10042                } else {
10043                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10044                    inner_depth.increment()?;
10045                }
10046                let val_ref = self.service_filter.get_or_insert_with(|| {
10047                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10048                });
10049                fidl::decode!(
10050                    fidl_fuchsia_bluetooth__common::Uuid,
10051                    D,
10052                    val_ref,
10053                    decoder,
10054                    inner_offset,
10055                    inner_depth
10056                )?;
10057                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10058                {
10059                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10060                }
10061                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10062                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10063                }
10064            }
10065
10066            next_offset += envelope_size;
10067
10068            // Decode the remaining unknown envelopes.
10069            while next_offset < end_offset {
10070                _next_ordinal_to_read += 1;
10071                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10072                next_offset += envelope_size;
10073            }
10074
10075            Ok(())
10076        }
10077    }
10078
10079    impl ConnectionTransferPeriodicAdvertisingSyncRequest {
10080        #[inline(always)]
10081        fn max_ordinal_present(&self) -> u64 {
10082            if let Some(_) = self.service_data {
10083                return 2;
10084            }
10085            if let Some(_) = self.sync_id {
10086                return 1;
10087            }
10088            0
10089        }
10090    }
10091
10092    impl fidl::encoding::ValueTypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10093        type Borrowed<'a> = &'a Self;
10094        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10095            value
10096        }
10097    }
10098
10099    unsafe impl fidl::encoding::TypeMarker for ConnectionTransferPeriodicAdvertisingSyncRequest {
10100        type Owned = Self;
10101
10102        #[inline(always)]
10103        fn inline_align(_context: fidl::encoding::Context) -> usize {
10104            8
10105        }
10106
10107        #[inline(always)]
10108        fn inline_size(_context: fidl::encoding::Context) -> usize {
10109            16
10110        }
10111    }
10112
10113    unsafe impl<D: fidl::encoding::ResourceDialect>
10114        fidl::encoding::Encode<ConnectionTransferPeriodicAdvertisingSyncRequest, D>
10115        for &ConnectionTransferPeriodicAdvertisingSyncRequest
10116    {
10117        unsafe fn encode(
10118            self,
10119            encoder: &mut fidl::encoding::Encoder<'_, D>,
10120            offset: usize,
10121            mut depth: fidl::encoding::Depth,
10122        ) -> fidl::Result<()> {
10123            encoder.debug_check_bounds::<ConnectionTransferPeriodicAdvertisingSyncRequest>(offset);
10124            // Vector header
10125            let max_ordinal: u64 = self.max_ordinal_present();
10126            encoder.write_num(max_ordinal, offset);
10127            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10128            // Calling encoder.out_of_line_offset(0) is not allowed.
10129            if max_ordinal == 0 {
10130                return Ok(());
10131            }
10132            depth.increment()?;
10133            let envelope_size = 8;
10134            let bytes_len = max_ordinal as usize * envelope_size;
10135            #[allow(unused_variables)]
10136            let offset = encoder.out_of_line_offset(bytes_len);
10137            let mut _prev_end_offset: usize = 0;
10138            if 1 > max_ordinal {
10139                return Ok(());
10140            }
10141
10142            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10143            // are envelope_size bytes.
10144            let cur_offset: usize = (1 - 1) * envelope_size;
10145
10146            // Zero reserved fields.
10147            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10148
10149            // Safety:
10150            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10151            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10152            //   envelope_size bytes, there is always sufficient room.
10153            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
10154                self.sync_id
10155                    .as_ref()
10156                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
10157                encoder,
10158                offset + cur_offset,
10159                depth,
10160            )?;
10161
10162            _prev_end_offset = cur_offset + envelope_size;
10163            if 2 > max_ordinal {
10164                return Ok(());
10165            }
10166
10167            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10168            // are envelope_size bytes.
10169            let cur_offset: usize = (2 - 1) * envelope_size;
10170
10171            // Zero reserved fields.
10172            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10173
10174            // Safety:
10175            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10176            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10177            //   envelope_size bytes, there is always sufficient room.
10178            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10179                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10180                encoder,
10181                offset + cur_offset,
10182                depth,
10183            )?;
10184
10185            _prev_end_offset = cur_offset + envelope_size;
10186
10187            Ok(())
10188        }
10189    }
10190
10191    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
10192        for ConnectionTransferPeriodicAdvertisingSyncRequest
10193    {
10194        #[inline(always)]
10195        fn new_empty() -> Self {
10196            Self::default()
10197        }
10198
10199        unsafe fn decode(
10200            &mut self,
10201            decoder: &mut fidl::encoding::Decoder<'_, D>,
10202            offset: usize,
10203            mut depth: fidl::encoding::Depth,
10204        ) -> fidl::Result<()> {
10205            decoder.debug_check_bounds::<Self>(offset);
10206            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10207                None => return Err(fidl::Error::NotNullable),
10208                Some(len) => len,
10209            };
10210            // Calling decoder.out_of_line_offset(0) is not allowed.
10211            if len == 0 {
10212                return Ok(());
10213            };
10214            depth.increment()?;
10215            let envelope_size = 8;
10216            let bytes_len = len * envelope_size;
10217            let offset = decoder.out_of_line_offset(bytes_len)?;
10218            // Decode the envelope for each type.
10219            let mut _next_ordinal_to_read = 0;
10220            let mut next_offset = offset;
10221            let end_offset = offset + bytes_len;
10222            _next_ordinal_to_read += 1;
10223            if next_offset >= end_offset {
10224                return Ok(());
10225            }
10226
10227            // Decode unknown envelopes for gaps in ordinals.
10228            while _next_ordinal_to_read < 1 {
10229                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10230                _next_ordinal_to_read += 1;
10231                next_offset += envelope_size;
10232            }
10233
10234            let next_out_of_line = decoder.next_out_of_line();
10235            let handles_before = decoder.remaining_handles();
10236            if let Some((inlined, num_bytes, num_handles)) =
10237                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10238            {
10239                let member_inline_size =
10240                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
10241                        decoder.context,
10242                    );
10243                if inlined != (member_inline_size <= 4) {
10244                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10245                }
10246                let inner_offset;
10247                let mut inner_depth = depth.clone();
10248                if inlined {
10249                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10250                    inner_offset = next_offset;
10251                } else {
10252                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10253                    inner_depth.increment()?;
10254                }
10255                let val_ref = self
10256                    .sync_id
10257                    .get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
10258                fidl::decode!(
10259                    PeriodicAdvertisingSyncId,
10260                    D,
10261                    val_ref,
10262                    decoder,
10263                    inner_offset,
10264                    inner_depth
10265                )?;
10266                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10267                {
10268                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10269                }
10270                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10271                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10272                }
10273            }
10274
10275            next_offset += envelope_size;
10276            _next_ordinal_to_read += 1;
10277            if next_offset >= end_offset {
10278                return Ok(());
10279            }
10280
10281            // Decode unknown envelopes for gaps in ordinals.
10282            while _next_ordinal_to_read < 2 {
10283                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10284                _next_ordinal_to_read += 1;
10285                next_offset += envelope_size;
10286            }
10287
10288            let next_out_of_line = decoder.next_out_of_line();
10289            let handles_before = decoder.remaining_handles();
10290            if let Some((inlined, num_bytes, num_handles)) =
10291                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10292            {
10293                let member_inline_size =
10294                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10295                if inlined != (member_inline_size <= 4) {
10296                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10297                }
10298                let inner_offset;
10299                let mut inner_depth = depth.clone();
10300                if inlined {
10301                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10302                    inner_offset = next_offset;
10303                } else {
10304                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10305                    inner_depth.increment()?;
10306                }
10307                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
10308                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10309                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10310                {
10311                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10312                }
10313                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10314                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10315                }
10316            }
10317
10318            next_offset += envelope_size;
10319
10320            // Decode the remaining unknown envelopes.
10321            while next_offset < end_offset {
10322                _next_ordinal_to_read += 1;
10323                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10324                next_offset += envelope_size;
10325            }
10326
10327            Ok(())
10328        }
10329    }
10330
10331    impl Extended {
10332        #[inline(always)]
10333        fn max_ordinal_present(&self) -> u64 {
10334            0
10335        }
10336    }
10337
10338    impl fidl::encoding::ValueTypeMarker for Extended {
10339        type Borrowed<'a> = &'a Self;
10340        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10341            value
10342        }
10343    }
10344
10345    unsafe impl fidl::encoding::TypeMarker for Extended {
10346        type Owned = Self;
10347
10348        #[inline(always)]
10349        fn inline_align(_context: fidl::encoding::Context) -> usize {
10350            8
10351        }
10352
10353        #[inline(always)]
10354        fn inline_size(_context: fidl::encoding::Context) -> usize {
10355            16
10356        }
10357    }
10358
10359    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Extended, D> for &Extended {
10360        unsafe fn encode(
10361            self,
10362            encoder: &mut fidl::encoding::Encoder<'_, D>,
10363            offset: usize,
10364            mut depth: fidl::encoding::Depth,
10365        ) -> fidl::Result<()> {
10366            encoder.debug_check_bounds::<Extended>(offset);
10367            // Vector header
10368            let max_ordinal: u64 = self.max_ordinal_present();
10369            encoder.write_num(max_ordinal, offset);
10370            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10371            // Calling encoder.out_of_line_offset(0) is not allowed.
10372            if max_ordinal == 0 {
10373                return Ok(());
10374            }
10375            depth.increment()?;
10376            let envelope_size = 8;
10377            let bytes_len = max_ordinal as usize * envelope_size;
10378            #[allow(unused_variables)]
10379            let offset = encoder.out_of_line_offset(bytes_len);
10380            let mut _prev_end_offset: usize = 0;
10381
10382            Ok(())
10383        }
10384    }
10385
10386    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Extended {
10387        #[inline(always)]
10388        fn new_empty() -> Self {
10389            Self::default()
10390        }
10391
10392        unsafe fn decode(
10393            &mut self,
10394            decoder: &mut fidl::encoding::Decoder<'_, D>,
10395            offset: usize,
10396            mut depth: fidl::encoding::Depth,
10397        ) -> fidl::Result<()> {
10398            decoder.debug_check_bounds::<Self>(offset);
10399            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10400                None => return Err(fidl::Error::NotNullable),
10401                Some(len) => len,
10402            };
10403            // Calling decoder.out_of_line_offset(0) is not allowed.
10404            if len == 0 {
10405                return Ok(());
10406            };
10407            depth.increment()?;
10408            let envelope_size = 8;
10409            let bytes_len = len * envelope_size;
10410            let offset = decoder.out_of_line_offset(bytes_len)?;
10411            // Decode the envelope for each type.
10412            let mut _next_ordinal_to_read = 0;
10413            let mut next_offset = offset;
10414            let end_offset = offset + bytes_len;
10415
10416            // Decode the remaining unknown envelopes.
10417            while next_offset < end_offset {
10418                _next_ordinal_to_read += 1;
10419                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10420                next_offset += envelope_size;
10421            }
10422
10423            Ok(())
10424        }
10425    }
10426
10427    impl Filter {
10428        #[inline(always)]
10429        fn max_ordinal_present(&self) -> u64 {
10430            if let Some(_) = self.solicitation_uuid {
10431                return 7;
10432            }
10433            if let Some(_) = self.max_path_loss {
10434                return 6;
10435            }
10436            if let Some(_) = self.name {
10437                return 5;
10438            }
10439            if let Some(_) = self.connectable {
10440                return 4;
10441            }
10442            if let Some(_) = self.manufacturer_id {
10443                return 3;
10444            }
10445            if let Some(_) = self.service_data_uuid {
10446                return 2;
10447            }
10448            if let Some(_) = self.service_uuid {
10449                return 1;
10450            }
10451            0
10452        }
10453    }
10454
10455    impl fidl::encoding::ValueTypeMarker for Filter {
10456        type Borrowed<'a> = &'a Self;
10457        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
10458            value
10459        }
10460    }
10461
10462    unsafe impl fidl::encoding::TypeMarker for Filter {
10463        type Owned = Self;
10464
10465        #[inline(always)]
10466        fn inline_align(_context: fidl::encoding::Context) -> usize {
10467            8
10468        }
10469
10470        #[inline(always)]
10471        fn inline_size(_context: fidl::encoding::Context) -> usize {
10472            16
10473        }
10474    }
10475
10476    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Filter, D> for &Filter {
10477        unsafe fn encode(
10478            self,
10479            encoder: &mut fidl::encoding::Encoder<'_, D>,
10480            offset: usize,
10481            mut depth: fidl::encoding::Depth,
10482        ) -> fidl::Result<()> {
10483            encoder.debug_check_bounds::<Filter>(offset);
10484            // Vector header
10485            let max_ordinal: u64 = self.max_ordinal_present();
10486            encoder.write_num(max_ordinal, offset);
10487            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
10488            // Calling encoder.out_of_line_offset(0) is not allowed.
10489            if max_ordinal == 0 {
10490                return Ok(());
10491            }
10492            depth.increment()?;
10493            let envelope_size = 8;
10494            let bytes_len = max_ordinal as usize * envelope_size;
10495            #[allow(unused_variables)]
10496            let offset = encoder.out_of_line_offset(bytes_len);
10497            let mut _prev_end_offset: usize = 0;
10498            if 1 > max_ordinal {
10499                return Ok(());
10500            }
10501
10502            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10503            // are envelope_size bytes.
10504            let cur_offset: usize = (1 - 1) * envelope_size;
10505
10506            // Zero reserved fields.
10507            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10508
10509            // Safety:
10510            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10511            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10512            //   envelope_size bytes, there is always sufficient room.
10513            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10514            self.service_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10515            encoder, offset + cur_offset, depth
10516        )?;
10517
10518            _prev_end_offset = cur_offset + envelope_size;
10519            if 2 > max_ordinal {
10520                return Ok(());
10521            }
10522
10523            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10524            // are envelope_size bytes.
10525            let cur_offset: usize = (2 - 1) * envelope_size;
10526
10527            // Zero reserved fields.
10528            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10529
10530            // Safety:
10531            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10532            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10533            //   envelope_size bytes, there is always sufficient room.
10534            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10535            self.service_data_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10536            encoder, offset + cur_offset, depth
10537        )?;
10538
10539            _prev_end_offset = cur_offset + envelope_size;
10540            if 3 > max_ordinal {
10541                return Ok(());
10542            }
10543
10544            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10545            // are envelope_size bytes.
10546            let cur_offset: usize = (3 - 1) * envelope_size;
10547
10548            // Zero reserved fields.
10549            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10550
10551            // Safety:
10552            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10553            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10554            //   envelope_size bytes, there is always sufficient room.
10555            fidl::encoding::encode_in_envelope_optional::<u16, D>(
10556                self.manufacturer_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
10557                encoder,
10558                offset + cur_offset,
10559                depth,
10560            )?;
10561
10562            _prev_end_offset = cur_offset + envelope_size;
10563            if 4 > max_ordinal {
10564                return Ok(());
10565            }
10566
10567            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10568            // are envelope_size bytes.
10569            let cur_offset: usize = (4 - 1) * envelope_size;
10570
10571            // Zero reserved fields.
10572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10573
10574            // Safety:
10575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10577            //   envelope_size bytes, there is always sufficient room.
10578            fidl::encoding::encode_in_envelope_optional::<bool, D>(
10579                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
10580                encoder,
10581                offset + cur_offset,
10582                depth,
10583            )?;
10584
10585            _prev_end_offset = cur_offset + envelope_size;
10586            if 5 > max_ordinal {
10587                return Ok(());
10588            }
10589
10590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10591            // are envelope_size bytes.
10592            let cur_offset: usize = (5 - 1) * envelope_size;
10593
10594            // Zero reserved fields.
10595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10596
10597            // Safety:
10598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10600            //   envelope_size bytes, there is always sufficient room.
10601            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
10602                self.name.as_ref().map(
10603                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
10604                ),
10605                encoder,
10606                offset + cur_offset,
10607                depth,
10608            )?;
10609
10610            _prev_end_offset = cur_offset + envelope_size;
10611            if 6 > max_ordinal {
10612                return Ok(());
10613            }
10614
10615            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10616            // are envelope_size bytes.
10617            let cur_offset: usize = (6 - 1) * envelope_size;
10618
10619            // Zero reserved fields.
10620            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10621
10622            // Safety:
10623            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10624            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10625            //   envelope_size bytes, there is always sufficient room.
10626            fidl::encoding::encode_in_envelope_optional::<i8, D>(
10627                self.max_path_loss.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
10628                encoder,
10629                offset + cur_offset,
10630                depth,
10631            )?;
10632
10633            _prev_end_offset = cur_offset + envelope_size;
10634            if 7 > max_ordinal {
10635                return Ok(());
10636            }
10637
10638            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
10639            // are envelope_size bytes.
10640            let cur_offset: usize = (7 - 1) * envelope_size;
10641
10642            // Zero reserved fields.
10643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
10644
10645            // Safety:
10646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
10647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
10648            //   envelope_size bytes, there is always sufficient room.
10649            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Uuid, D>(
10650            self.solicitation_uuid.as_ref().map(<fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow),
10651            encoder, offset + cur_offset, depth
10652        )?;
10653
10654            _prev_end_offset = cur_offset + envelope_size;
10655
10656            Ok(())
10657        }
10658    }
10659
10660    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Filter {
10661        #[inline(always)]
10662        fn new_empty() -> Self {
10663            Self::default()
10664        }
10665
10666        unsafe fn decode(
10667            &mut self,
10668            decoder: &mut fidl::encoding::Decoder<'_, D>,
10669            offset: usize,
10670            mut depth: fidl::encoding::Depth,
10671        ) -> fidl::Result<()> {
10672            decoder.debug_check_bounds::<Self>(offset);
10673            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
10674                None => return Err(fidl::Error::NotNullable),
10675                Some(len) => len,
10676            };
10677            // Calling decoder.out_of_line_offset(0) is not allowed.
10678            if len == 0 {
10679                return Ok(());
10680            };
10681            depth.increment()?;
10682            let envelope_size = 8;
10683            let bytes_len = len * envelope_size;
10684            let offset = decoder.out_of_line_offset(bytes_len)?;
10685            // Decode the envelope for each type.
10686            let mut _next_ordinal_to_read = 0;
10687            let mut next_offset = offset;
10688            let end_offset = offset + bytes_len;
10689            _next_ordinal_to_read += 1;
10690            if next_offset >= end_offset {
10691                return Ok(());
10692            }
10693
10694            // Decode unknown envelopes for gaps in ordinals.
10695            while _next_ordinal_to_read < 1 {
10696                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10697                _next_ordinal_to_read += 1;
10698                next_offset += envelope_size;
10699            }
10700
10701            let next_out_of_line = decoder.next_out_of_line();
10702            let handles_before = decoder.remaining_handles();
10703            if let Some((inlined, num_bytes, num_handles)) =
10704                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10705            {
10706                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10707                if inlined != (member_inline_size <= 4) {
10708                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10709                }
10710                let inner_offset;
10711                let mut inner_depth = depth.clone();
10712                if inlined {
10713                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10714                    inner_offset = next_offset;
10715                } else {
10716                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10717                    inner_depth.increment()?;
10718                }
10719                let val_ref = self.service_uuid.get_or_insert_with(|| {
10720                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10721                });
10722                fidl::decode!(
10723                    fidl_fuchsia_bluetooth__common::Uuid,
10724                    D,
10725                    val_ref,
10726                    decoder,
10727                    inner_offset,
10728                    inner_depth
10729                )?;
10730                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10731                {
10732                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10733                }
10734                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10735                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10736                }
10737            }
10738
10739            next_offset += envelope_size;
10740            _next_ordinal_to_read += 1;
10741            if next_offset >= end_offset {
10742                return Ok(());
10743            }
10744
10745            // Decode unknown envelopes for gaps in ordinals.
10746            while _next_ordinal_to_read < 2 {
10747                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10748                _next_ordinal_to_read += 1;
10749                next_offset += envelope_size;
10750            }
10751
10752            let next_out_of_line = decoder.next_out_of_line();
10753            let handles_before = decoder.remaining_handles();
10754            if let Some((inlined, num_bytes, num_handles)) =
10755                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10756            {
10757                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10758                if inlined != (member_inline_size <= 4) {
10759                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10760                }
10761                let inner_offset;
10762                let mut inner_depth = depth.clone();
10763                if inlined {
10764                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10765                    inner_offset = next_offset;
10766                } else {
10767                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10768                    inner_depth.increment()?;
10769                }
10770                let val_ref = self.service_data_uuid.get_or_insert_with(|| {
10771                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
10772                });
10773                fidl::decode!(
10774                    fidl_fuchsia_bluetooth__common::Uuid,
10775                    D,
10776                    val_ref,
10777                    decoder,
10778                    inner_offset,
10779                    inner_depth
10780                )?;
10781                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10782                {
10783                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10784                }
10785                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10786                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10787                }
10788            }
10789
10790            next_offset += envelope_size;
10791            _next_ordinal_to_read += 1;
10792            if next_offset >= end_offset {
10793                return Ok(());
10794            }
10795
10796            // Decode unknown envelopes for gaps in ordinals.
10797            while _next_ordinal_to_read < 3 {
10798                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10799                _next_ordinal_to_read += 1;
10800                next_offset += envelope_size;
10801            }
10802
10803            let next_out_of_line = decoder.next_out_of_line();
10804            let handles_before = decoder.remaining_handles();
10805            if let Some((inlined, num_bytes, num_handles)) =
10806                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10807            {
10808                let member_inline_size =
10809                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10810                if inlined != (member_inline_size <= 4) {
10811                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10812                }
10813                let inner_offset;
10814                let mut inner_depth = depth.clone();
10815                if inlined {
10816                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10817                    inner_offset = next_offset;
10818                } else {
10819                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10820                    inner_depth.increment()?;
10821                }
10822                let val_ref = self.manufacturer_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
10823                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
10824                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10825                {
10826                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10827                }
10828                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10829                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10830                }
10831            }
10832
10833            next_offset += envelope_size;
10834            _next_ordinal_to_read += 1;
10835            if next_offset >= end_offset {
10836                return Ok(());
10837            }
10838
10839            // Decode unknown envelopes for gaps in ordinals.
10840            while _next_ordinal_to_read < 4 {
10841                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10842                _next_ordinal_to_read += 1;
10843                next_offset += envelope_size;
10844            }
10845
10846            let next_out_of_line = decoder.next_out_of_line();
10847            let handles_before = decoder.remaining_handles();
10848            if let Some((inlined, num_bytes, num_handles)) =
10849                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10850            {
10851                let member_inline_size =
10852                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10853                if inlined != (member_inline_size <= 4) {
10854                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10855                }
10856                let inner_offset;
10857                let mut inner_depth = depth.clone();
10858                if inlined {
10859                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10860                    inner_offset = next_offset;
10861                } else {
10862                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10863                    inner_depth.increment()?;
10864                }
10865                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
10866                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
10867                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10868                {
10869                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10870                }
10871                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10872                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10873                }
10874            }
10875
10876            next_offset += envelope_size;
10877            _next_ordinal_to_read += 1;
10878            if next_offset >= end_offset {
10879                return Ok(());
10880            }
10881
10882            // Decode unknown envelopes for gaps in ordinals.
10883            while _next_ordinal_to_read < 5 {
10884                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10885                _next_ordinal_to_read += 1;
10886                next_offset += envelope_size;
10887            }
10888
10889            let next_out_of_line = decoder.next_out_of_line();
10890            let handles_before = decoder.remaining_handles();
10891            if let Some((inlined, num_bytes, num_handles)) =
10892                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10893            {
10894                let member_inline_size =
10895                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
10896                        decoder.context,
10897                    );
10898                if inlined != (member_inline_size <= 4) {
10899                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10900                }
10901                let inner_offset;
10902                let mut inner_depth = depth.clone();
10903                if inlined {
10904                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10905                    inner_offset = next_offset;
10906                } else {
10907                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10908                    inner_depth.increment()?;
10909                }
10910                let val_ref = self
10911                    .name
10912                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
10913                fidl::decode!(
10914                    fidl::encoding::BoundedString<248>,
10915                    D,
10916                    val_ref,
10917                    decoder,
10918                    inner_offset,
10919                    inner_depth
10920                )?;
10921                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10922                {
10923                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10924                }
10925                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10926                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10927                }
10928            }
10929
10930            next_offset += envelope_size;
10931            _next_ordinal_to_read += 1;
10932            if next_offset >= end_offset {
10933                return Ok(());
10934            }
10935
10936            // Decode unknown envelopes for gaps in ordinals.
10937            while _next_ordinal_to_read < 6 {
10938                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10939                _next_ordinal_to_read += 1;
10940                next_offset += envelope_size;
10941            }
10942
10943            let next_out_of_line = decoder.next_out_of_line();
10944            let handles_before = decoder.remaining_handles();
10945            if let Some((inlined, num_bytes, num_handles)) =
10946                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10947            {
10948                let member_inline_size =
10949                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10950                if inlined != (member_inline_size <= 4) {
10951                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10952                }
10953                let inner_offset;
10954                let mut inner_depth = depth.clone();
10955                if inlined {
10956                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10957                    inner_offset = next_offset;
10958                } else {
10959                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
10960                    inner_depth.increment()?;
10961                }
10962                let val_ref = self.max_path_loss.get_or_insert_with(|| fidl::new_empty!(i8, D));
10963                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
10964                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
10965                {
10966                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
10967                }
10968                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
10969                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
10970                }
10971            }
10972
10973            next_offset += envelope_size;
10974            _next_ordinal_to_read += 1;
10975            if next_offset >= end_offset {
10976                return Ok(());
10977            }
10978
10979            // Decode unknown envelopes for gaps in ordinals.
10980            while _next_ordinal_to_read < 7 {
10981                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
10982                _next_ordinal_to_read += 1;
10983                next_offset += envelope_size;
10984            }
10985
10986            let next_out_of_line = decoder.next_out_of_line();
10987            let handles_before = decoder.remaining_handles();
10988            if let Some((inlined, num_bytes, num_handles)) =
10989                fidl::encoding::decode_envelope_header(decoder, next_offset)?
10990            {
10991                let member_inline_size = <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context);
10992                if inlined != (member_inline_size <= 4) {
10993                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
10994                }
10995                let inner_offset;
10996                let mut inner_depth = depth.clone();
10997                if inlined {
10998                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
10999                    inner_offset = next_offset;
11000                } else {
11001                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11002                    inner_depth.increment()?;
11003                }
11004                let val_ref = self.solicitation_uuid.get_or_insert_with(|| {
11005                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Uuid, D)
11006                });
11007                fidl::decode!(
11008                    fidl_fuchsia_bluetooth__common::Uuid,
11009                    D,
11010                    val_ref,
11011                    decoder,
11012                    inner_offset,
11013                    inner_depth
11014                )?;
11015                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11016                {
11017                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11018                }
11019                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11020                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11021                }
11022            }
11023
11024            next_offset += envelope_size;
11025
11026            // Decode the remaining unknown envelopes.
11027            while next_offset < end_offset {
11028                _next_ordinal_to_read += 1;
11029                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11030                next_offset += envelope_size;
11031            }
11032
11033            Ok(())
11034        }
11035    }
11036
11037    impl IsochronousStreamOnEstablishedRequest {
11038        #[inline(always)]
11039        fn max_ordinal_present(&self) -> u64 {
11040            if let Some(_) = self.established_params {
11041                return 2;
11042            }
11043            if let Some(_) = self.result {
11044                return 1;
11045            }
11046            0
11047        }
11048    }
11049
11050    impl fidl::encoding::ValueTypeMarker for IsochronousStreamOnEstablishedRequest {
11051        type Borrowed<'a> = &'a Self;
11052        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11053            value
11054        }
11055    }
11056
11057    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamOnEstablishedRequest {
11058        type Owned = Self;
11059
11060        #[inline(always)]
11061        fn inline_align(_context: fidl::encoding::Context) -> usize {
11062            8
11063        }
11064
11065        #[inline(always)]
11066        fn inline_size(_context: fidl::encoding::Context) -> usize {
11067            16
11068        }
11069    }
11070
11071    unsafe impl<D: fidl::encoding::ResourceDialect>
11072        fidl::encoding::Encode<IsochronousStreamOnEstablishedRequest, D>
11073        for &IsochronousStreamOnEstablishedRequest
11074    {
11075        unsafe fn encode(
11076            self,
11077            encoder: &mut fidl::encoding::Encoder<'_, D>,
11078            offset: usize,
11079            mut depth: fidl::encoding::Depth,
11080        ) -> fidl::Result<()> {
11081            encoder.debug_check_bounds::<IsochronousStreamOnEstablishedRequest>(offset);
11082            // Vector header
11083            let max_ordinal: u64 = self.max_ordinal_present();
11084            encoder.write_num(max_ordinal, offset);
11085            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11086            // Calling encoder.out_of_line_offset(0) is not allowed.
11087            if max_ordinal == 0 {
11088                return Ok(());
11089            }
11090            depth.increment()?;
11091            let envelope_size = 8;
11092            let bytes_len = max_ordinal as usize * envelope_size;
11093            #[allow(unused_variables)]
11094            let offset = encoder.out_of_line_offset(bytes_len);
11095            let mut _prev_end_offset: usize = 0;
11096            if 1 > max_ordinal {
11097                return Ok(());
11098            }
11099
11100            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11101            // are envelope_size bytes.
11102            let cur_offset: usize = (1 - 1) * envelope_size;
11103
11104            // Zero reserved fields.
11105            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11106
11107            // Safety:
11108            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11109            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11110            //   envelope_size bytes, there is always sufficient room.
11111            fidl::encoding::encode_in_envelope_optional::<i32, D>(
11112                self.result.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
11113                encoder,
11114                offset + cur_offset,
11115                depth,
11116            )?;
11117
11118            _prev_end_offset = cur_offset + envelope_size;
11119            if 2 > max_ordinal {
11120                return Ok(());
11121            }
11122
11123            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11124            // are envelope_size bytes.
11125            let cur_offset: usize = (2 - 1) * envelope_size;
11126
11127            // Zero reserved fields.
11128            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11129
11130            // Safety:
11131            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11132            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11133            //   envelope_size bytes, there is always sufficient room.
11134            fidl::encoding::encode_in_envelope_optional::<CisEstablishedParameters, D>(
11135                self.established_params
11136                    .as_ref()
11137                    .map(<CisEstablishedParameters as fidl::encoding::ValueTypeMarker>::borrow),
11138                encoder,
11139                offset + cur_offset,
11140                depth,
11141            )?;
11142
11143            _prev_end_offset = cur_offset + envelope_size;
11144
11145            Ok(())
11146        }
11147    }
11148
11149    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11150        for IsochronousStreamOnEstablishedRequest
11151    {
11152        #[inline(always)]
11153        fn new_empty() -> Self {
11154            Self::default()
11155        }
11156
11157        unsafe fn decode(
11158            &mut self,
11159            decoder: &mut fidl::encoding::Decoder<'_, D>,
11160            offset: usize,
11161            mut depth: fidl::encoding::Depth,
11162        ) -> fidl::Result<()> {
11163            decoder.debug_check_bounds::<Self>(offset);
11164            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11165                None => return Err(fidl::Error::NotNullable),
11166                Some(len) => len,
11167            };
11168            // Calling decoder.out_of_line_offset(0) is not allowed.
11169            if len == 0 {
11170                return Ok(());
11171            };
11172            depth.increment()?;
11173            let envelope_size = 8;
11174            let bytes_len = len * envelope_size;
11175            let offset = decoder.out_of_line_offset(bytes_len)?;
11176            // Decode the envelope for each type.
11177            let mut _next_ordinal_to_read = 0;
11178            let mut next_offset = offset;
11179            let end_offset = offset + bytes_len;
11180            _next_ordinal_to_read += 1;
11181            if next_offset >= end_offset {
11182                return Ok(());
11183            }
11184
11185            // Decode unknown envelopes for gaps in ordinals.
11186            while _next_ordinal_to_read < 1 {
11187                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11188                _next_ordinal_to_read += 1;
11189                next_offset += envelope_size;
11190            }
11191
11192            let next_out_of_line = decoder.next_out_of_line();
11193            let handles_before = decoder.remaining_handles();
11194            if let Some((inlined, num_bytes, num_handles)) =
11195                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11196            {
11197                let member_inline_size =
11198                    <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11199                if inlined != (member_inline_size <= 4) {
11200                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11201                }
11202                let inner_offset;
11203                let mut inner_depth = depth.clone();
11204                if inlined {
11205                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11206                    inner_offset = next_offset;
11207                } else {
11208                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11209                    inner_depth.increment()?;
11210                }
11211                let val_ref = self.result.get_or_insert_with(|| fidl::new_empty!(i32, D));
11212                fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
11213                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11214                {
11215                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11216                }
11217                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11218                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11219                }
11220            }
11221
11222            next_offset += envelope_size;
11223            _next_ordinal_to_read += 1;
11224            if next_offset >= end_offset {
11225                return Ok(());
11226            }
11227
11228            // Decode unknown envelopes for gaps in ordinals.
11229            while _next_ordinal_to_read < 2 {
11230                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11231                _next_ordinal_to_read += 1;
11232                next_offset += envelope_size;
11233            }
11234
11235            let next_out_of_line = decoder.next_out_of_line();
11236            let handles_before = decoder.remaining_handles();
11237            if let Some((inlined, num_bytes, num_handles)) =
11238                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11239            {
11240                let member_inline_size =
11241                    <CisEstablishedParameters as fidl::encoding::TypeMarker>::inline_size(
11242                        decoder.context,
11243                    );
11244                if inlined != (member_inline_size <= 4) {
11245                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11246                }
11247                let inner_offset;
11248                let mut inner_depth = depth.clone();
11249                if inlined {
11250                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11251                    inner_offset = next_offset;
11252                } else {
11253                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11254                    inner_depth.increment()?;
11255                }
11256                let val_ref = self
11257                    .established_params
11258                    .get_or_insert_with(|| fidl::new_empty!(CisEstablishedParameters, D));
11259                fidl::decode!(
11260                    CisEstablishedParameters,
11261                    D,
11262                    val_ref,
11263                    decoder,
11264                    inner_offset,
11265                    inner_depth
11266                )?;
11267                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11268                {
11269                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11270                }
11271                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11272                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11273                }
11274            }
11275
11276            next_offset += envelope_size;
11277
11278            // Decode the remaining unknown envelopes.
11279            while next_offset < end_offset {
11280                _next_ordinal_to_read += 1;
11281                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11282                next_offset += envelope_size;
11283            }
11284
11285            Ok(())
11286        }
11287    }
11288
11289    impl IsochronousStreamSetupDataPathRequest {
11290        #[inline(always)]
11291        fn max_ordinal_present(&self) -> u64 {
11292            if let Some(_) = self.controller_delay {
11293                return 3;
11294            }
11295            if let Some(_) = self.codec_attributes {
11296                return 2;
11297            }
11298            if let Some(_) = self.data_direction {
11299                return 1;
11300            }
11301            0
11302        }
11303    }
11304
11305    impl fidl::encoding::ValueTypeMarker for IsochronousStreamSetupDataPathRequest {
11306        type Borrowed<'a> = &'a Self;
11307        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11308            value
11309        }
11310    }
11311
11312    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamSetupDataPathRequest {
11313        type Owned = Self;
11314
11315        #[inline(always)]
11316        fn inline_align(_context: fidl::encoding::Context) -> usize {
11317            8
11318        }
11319
11320        #[inline(always)]
11321        fn inline_size(_context: fidl::encoding::Context) -> usize {
11322            16
11323        }
11324    }
11325
11326    unsafe impl<D: fidl::encoding::ResourceDialect>
11327        fidl::encoding::Encode<IsochronousStreamSetupDataPathRequest, D>
11328        for &IsochronousStreamSetupDataPathRequest
11329    {
11330        unsafe fn encode(
11331            self,
11332            encoder: &mut fidl::encoding::Encoder<'_, D>,
11333            offset: usize,
11334            mut depth: fidl::encoding::Depth,
11335        ) -> fidl::Result<()> {
11336            encoder.debug_check_bounds::<IsochronousStreamSetupDataPathRequest>(offset);
11337            // Vector header
11338            let max_ordinal: u64 = self.max_ordinal_present();
11339            encoder.write_num(max_ordinal, offset);
11340            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11341            // Calling encoder.out_of_line_offset(0) is not allowed.
11342            if max_ordinal == 0 {
11343                return Ok(());
11344            }
11345            depth.increment()?;
11346            let envelope_size = 8;
11347            let bytes_len = max_ordinal as usize * envelope_size;
11348            #[allow(unused_variables)]
11349            let offset = encoder.out_of_line_offset(bytes_len);
11350            let mut _prev_end_offset: usize = 0;
11351            if 1 > max_ordinal {
11352                return Ok(());
11353            }
11354
11355            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11356            // are envelope_size bytes.
11357            let cur_offset: usize = (1 - 1) * envelope_size;
11358
11359            // Zero reserved fields.
11360            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11361
11362            // Safety:
11363            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11364            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11365            //   envelope_size bytes, there is always sufficient room.
11366            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DataDirection, D>(
11367            self.data_direction.as_ref().map(<fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::ValueTypeMarker>::borrow),
11368            encoder, offset + cur_offset, depth
11369        )?;
11370
11371            _prev_end_offset = cur_offset + envelope_size;
11372            if 2 > max_ordinal {
11373                return Ok(());
11374            }
11375
11376            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11377            // are envelope_size bytes.
11378            let cur_offset: usize = (2 - 1) * envelope_size;
11379
11380            // Zero reserved fields.
11381            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11382
11383            // Safety:
11384            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11385            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11386            //   envelope_size bytes, there is always sufficient room.
11387            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::CodecAttributes, D>(
11388            self.codec_attributes.as_ref().map(<fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::ValueTypeMarker>::borrow),
11389            encoder, offset + cur_offset, depth
11390        )?;
11391
11392            _prev_end_offset = cur_offset + envelope_size;
11393            if 3 > max_ordinal {
11394                return Ok(());
11395            }
11396
11397            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11398            // are envelope_size bytes.
11399            let cur_offset: usize = (3 - 1) * envelope_size;
11400
11401            // Zero reserved fields.
11402            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11403
11404            // Safety:
11405            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11406            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11407            //   envelope_size bytes, there is always sufficient room.
11408            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11409                self.controller_delay
11410                    .as_ref()
11411                    .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11412                encoder,
11413                offset + cur_offset,
11414                depth,
11415            )?;
11416
11417            _prev_end_offset = cur_offset + envelope_size;
11418
11419            Ok(())
11420        }
11421    }
11422
11423    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11424        for IsochronousStreamSetupDataPathRequest
11425    {
11426        #[inline(always)]
11427        fn new_empty() -> Self {
11428            Self::default()
11429        }
11430
11431        unsafe fn decode(
11432            &mut self,
11433            decoder: &mut fidl::encoding::Decoder<'_, D>,
11434            offset: usize,
11435            mut depth: fidl::encoding::Depth,
11436        ) -> fidl::Result<()> {
11437            decoder.debug_check_bounds::<Self>(offset);
11438            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11439                None => return Err(fidl::Error::NotNullable),
11440                Some(len) => len,
11441            };
11442            // Calling decoder.out_of_line_offset(0) is not allowed.
11443            if len == 0 {
11444                return Ok(());
11445            };
11446            depth.increment()?;
11447            let envelope_size = 8;
11448            let bytes_len = len * envelope_size;
11449            let offset = decoder.out_of_line_offset(bytes_len)?;
11450            // Decode the envelope for each type.
11451            let mut _next_ordinal_to_read = 0;
11452            let mut next_offset = offset;
11453            let end_offset = offset + bytes_len;
11454            _next_ordinal_to_read += 1;
11455            if next_offset >= end_offset {
11456                return Ok(());
11457            }
11458
11459            // Decode unknown envelopes for gaps in ordinals.
11460            while _next_ordinal_to_read < 1 {
11461                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11462                _next_ordinal_to_read += 1;
11463                next_offset += envelope_size;
11464            }
11465
11466            let next_out_of_line = decoder.next_out_of_line();
11467            let handles_before = decoder.remaining_handles();
11468            if let Some((inlined, num_bytes, num_handles)) =
11469                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11470            {
11471                let member_inline_size = <fidl_fuchsia_bluetooth__common::DataDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11472                if inlined != (member_inline_size <= 4) {
11473                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11474                }
11475                let inner_offset;
11476                let mut inner_depth = depth.clone();
11477                if inlined {
11478                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11479                    inner_offset = next_offset;
11480                } else {
11481                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11482                    inner_depth.increment()?;
11483                }
11484                let val_ref = self.data_direction.get_or_insert_with(|| {
11485                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::DataDirection, D)
11486                });
11487                fidl::decode!(
11488                    fidl_fuchsia_bluetooth__common::DataDirection,
11489                    D,
11490                    val_ref,
11491                    decoder,
11492                    inner_offset,
11493                    inner_depth
11494                )?;
11495                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11496                {
11497                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11498                }
11499                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11500                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11501                }
11502            }
11503
11504            next_offset += envelope_size;
11505            _next_ordinal_to_read += 1;
11506            if next_offset >= end_offset {
11507                return Ok(());
11508            }
11509
11510            // Decode unknown envelopes for gaps in ordinals.
11511            while _next_ordinal_to_read < 2 {
11512                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11513                _next_ordinal_to_read += 1;
11514                next_offset += envelope_size;
11515            }
11516
11517            let next_out_of_line = decoder.next_out_of_line();
11518            let handles_before = decoder.remaining_handles();
11519            if let Some((inlined, num_bytes, num_handles)) =
11520                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11521            {
11522                let member_inline_size = <fidl_fuchsia_bluetooth__common::CodecAttributes as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11523                if inlined != (member_inline_size <= 4) {
11524                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11525                }
11526                let inner_offset;
11527                let mut inner_depth = depth.clone();
11528                if inlined {
11529                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11530                    inner_offset = next_offset;
11531                } else {
11532                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11533                    inner_depth.increment()?;
11534                }
11535                let val_ref = self.codec_attributes.get_or_insert_with(|| {
11536                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::CodecAttributes, D)
11537                });
11538                fidl::decode!(
11539                    fidl_fuchsia_bluetooth__common::CodecAttributes,
11540                    D,
11541                    val_ref,
11542                    decoder,
11543                    inner_offset,
11544                    inner_depth
11545                )?;
11546                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11547                {
11548                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11549                }
11550                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11551                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11552                }
11553            }
11554
11555            next_offset += envelope_size;
11556            _next_ordinal_to_read += 1;
11557            if next_offset >= end_offset {
11558                return Ok(());
11559            }
11560
11561            // Decode unknown envelopes for gaps in ordinals.
11562            while _next_ordinal_to_read < 3 {
11563                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11564                _next_ordinal_to_read += 1;
11565                next_offset += envelope_size;
11566            }
11567
11568            let next_out_of_line = decoder.next_out_of_line();
11569            let handles_before = decoder.remaining_handles();
11570            if let Some((inlined, num_bytes, num_handles)) =
11571                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11572            {
11573                let member_inline_size =
11574                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11575                if inlined != (member_inline_size <= 4) {
11576                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11577                }
11578                let inner_offset;
11579                let mut inner_depth = depth.clone();
11580                if inlined {
11581                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11582                    inner_offset = next_offset;
11583                } else {
11584                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11585                    inner_depth.increment()?;
11586                }
11587                let val_ref = self.controller_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
11588                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
11589                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11590                {
11591                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11592                }
11593                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11594                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11595                }
11596            }
11597
11598            next_offset += envelope_size;
11599
11600            // Decode the remaining unknown envelopes.
11601            while next_offset < end_offset {
11602                _next_ordinal_to_read += 1;
11603                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11604                next_offset += envelope_size;
11605            }
11606
11607            Ok(())
11608        }
11609    }
11610
11611    impl IsochronousStreamWriteRequest {
11612        #[inline(always)]
11613        fn max_ordinal_present(&self) -> u64 {
11614            if let Some(_) = self.data {
11615                return 1;
11616            }
11617            0
11618        }
11619    }
11620
11621    impl fidl::encoding::ValueTypeMarker for IsochronousStreamWriteRequest {
11622        type Borrowed<'a> = &'a Self;
11623        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11624            value
11625        }
11626    }
11627
11628    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamWriteRequest {
11629        type Owned = Self;
11630
11631        #[inline(always)]
11632        fn inline_align(_context: fidl::encoding::Context) -> usize {
11633            8
11634        }
11635
11636        #[inline(always)]
11637        fn inline_size(_context: fidl::encoding::Context) -> usize {
11638            16
11639        }
11640    }
11641
11642    unsafe impl<D: fidl::encoding::ResourceDialect>
11643        fidl::encoding::Encode<IsochronousStreamWriteRequest, D>
11644        for &IsochronousStreamWriteRequest
11645    {
11646        unsafe fn encode(
11647            self,
11648            encoder: &mut fidl::encoding::Encoder<'_, D>,
11649            offset: usize,
11650            mut depth: fidl::encoding::Depth,
11651        ) -> fidl::Result<()> {
11652            encoder.debug_check_bounds::<IsochronousStreamWriteRequest>(offset);
11653            // Vector header
11654            let max_ordinal: u64 = self.max_ordinal_present();
11655            encoder.write_num(max_ordinal, offset);
11656            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11657            // Calling encoder.out_of_line_offset(0) is not allowed.
11658            if max_ordinal == 0 {
11659                return Ok(());
11660            }
11661            depth.increment()?;
11662            let envelope_size = 8;
11663            let bytes_len = max_ordinal as usize * envelope_size;
11664            #[allow(unused_variables)]
11665            let offset = encoder.out_of_line_offset(bytes_len);
11666            let mut _prev_end_offset: usize = 0;
11667            if 1 > max_ordinal {
11668                return Ok(());
11669            }
11670
11671            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11672            // are envelope_size bytes.
11673            let cur_offset: usize = (1 - 1) * envelope_size;
11674
11675            // Zero reserved fields.
11676            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11677
11678            // Safety:
11679            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11680            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11681            //   envelope_size bytes, there is always sufficient room.
11682            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 4095>, D>(
11683                self.data.as_ref().map(
11684                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::ValueTypeMarker>::borrow,
11685                ),
11686                encoder,
11687                offset + cur_offset,
11688                depth,
11689            )?;
11690
11691            _prev_end_offset = cur_offset + envelope_size;
11692
11693            Ok(())
11694        }
11695    }
11696
11697    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11698        for IsochronousStreamWriteRequest
11699    {
11700        #[inline(always)]
11701        fn new_empty() -> Self {
11702            Self::default()
11703        }
11704
11705        unsafe fn decode(
11706            &mut self,
11707            decoder: &mut fidl::encoding::Decoder<'_, D>,
11708            offset: usize,
11709            mut depth: fidl::encoding::Depth,
11710        ) -> fidl::Result<()> {
11711            decoder.debug_check_bounds::<Self>(offset);
11712            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11713                None => return Err(fidl::Error::NotNullable),
11714                Some(len) => len,
11715            };
11716            // Calling decoder.out_of_line_offset(0) is not allowed.
11717            if len == 0 {
11718                return Ok(());
11719            };
11720            depth.increment()?;
11721            let envelope_size = 8;
11722            let bytes_len = len * envelope_size;
11723            let offset = decoder.out_of_line_offset(bytes_len)?;
11724            // Decode the envelope for each type.
11725            let mut _next_ordinal_to_read = 0;
11726            let mut next_offset = offset;
11727            let end_offset = offset + bytes_len;
11728            _next_ordinal_to_read += 1;
11729            if next_offset >= end_offset {
11730                return Ok(());
11731            }
11732
11733            // Decode unknown envelopes for gaps in ordinals.
11734            while _next_ordinal_to_read < 1 {
11735                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11736                _next_ordinal_to_read += 1;
11737                next_offset += envelope_size;
11738            }
11739
11740            let next_out_of_line = decoder.next_out_of_line();
11741            let handles_before = decoder.remaining_handles();
11742            if let Some((inlined, num_bytes, num_handles)) =
11743                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11744            {
11745                let member_inline_size =
11746                    <fidl::encoding::Vector<u8, 4095> as fidl::encoding::TypeMarker>::inline_size(
11747                        decoder.context,
11748                    );
11749                if inlined != (member_inline_size <= 4) {
11750                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
11751                }
11752                let inner_offset;
11753                let mut inner_depth = depth.clone();
11754                if inlined {
11755                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
11756                    inner_offset = next_offset;
11757                } else {
11758                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
11759                    inner_depth.increment()?;
11760                }
11761                let val_ref = self
11762                    .data
11763                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 4095>, D));
11764                fidl::decode!(fidl::encoding::Vector<u8, 4095>, D, val_ref, decoder, inner_offset, inner_depth)?;
11765                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
11766                {
11767                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
11768                }
11769                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
11770                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
11771                }
11772            }
11773
11774            next_offset += envelope_size;
11775
11776            // Decode the remaining unknown envelopes.
11777            while next_offset < end_offset {
11778                _next_ordinal_to_read += 1;
11779                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11780                next_offset += envelope_size;
11781            }
11782
11783            Ok(())
11784        }
11785    }
11786
11787    impl IsochronousStreamReadResponse {
11788        #[inline(always)]
11789        fn max_ordinal_present(&self) -> u64 {
11790            if let Some(_) = self.timestamp {
11791                return 4;
11792            }
11793            if let Some(_) = self.status_flag {
11794                return 3;
11795            }
11796            if let Some(_) = self.sequence_number {
11797                return 2;
11798            }
11799            if let Some(_) = self.data {
11800                return 1;
11801            }
11802            0
11803        }
11804    }
11805
11806    impl fidl::encoding::ValueTypeMarker for IsochronousStreamReadResponse {
11807        type Borrowed<'a> = &'a Self;
11808        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
11809            value
11810        }
11811    }
11812
11813    unsafe impl fidl::encoding::TypeMarker for IsochronousStreamReadResponse {
11814        type Owned = Self;
11815
11816        #[inline(always)]
11817        fn inline_align(_context: fidl::encoding::Context) -> usize {
11818            8
11819        }
11820
11821        #[inline(always)]
11822        fn inline_size(_context: fidl::encoding::Context) -> usize {
11823            16
11824        }
11825    }
11826
11827    unsafe impl<D: fidl::encoding::ResourceDialect>
11828        fidl::encoding::Encode<IsochronousStreamReadResponse, D>
11829        for &IsochronousStreamReadResponse
11830    {
11831        unsafe fn encode(
11832            self,
11833            encoder: &mut fidl::encoding::Encoder<'_, D>,
11834            offset: usize,
11835            mut depth: fidl::encoding::Depth,
11836        ) -> fidl::Result<()> {
11837            encoder.debug_check_bounds::<IsochronousStreamReadResponse>(offset);
11838            // Vector header
11839            let max_ordinal: u64 = self.max_ordinal_present();
11840            encoder.write_num(max_ordinal, offset);
11841            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
11842            // Calling encoder.out_of_line_offset(0) is not allowed.
11843            if max_ordinal == 0 {
11844                return Ok(());
11845            }
11846            depth.increment()?;
11847            let envelope_size = 8;
11848            let bytes_len = max_ordinal as usize * envelope_size;
11849            #[allow(unused_variables)]
11850            let offset = encoder.out_of_line_offset(bytes_len);
11851            let mut _prev_end_offset: usize = 0;
11852            if 1 > max_ordinal {
11853                return Ok(());
11854            }
11855
11856            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11857            // are envelope_size bytes.
11858            let cur_offset: usize = (1 - 1) * envelope_size;
11859
11860            // Zero reserved fields.
11861            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11862
11863            // Safety:
11864            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11865            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11866            //   envelope_size bytes, there is always sufficient room.
11867            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
11868            self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
11869            encoder, offset + cur_offset, depth
11870        )?;
11871
11872            _prev_end_offset = cur_offset + envelope_size;
11873            if 2 > max_ordinal {
11874                return Ok(());
11875            }
11876
11877            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11878            // are envelope_size bytes.
11879            let cur_offset: usize = (2 - 1) * envelope_size;
11880
11881            // Zero reserved fields.
11882            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11883
11884            // Safety:
11885            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11886            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11887            //   envelope_size bytes, there is always sufficient room.
11888            fidl::encoding::encode_in_envelope_optional::<u16, D>(
11889                self.sequence_number.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
11890                encoder,
11891                offset + cur_offset,
11892                depth,
11893            )?;
11894
11895            _prev_end_offset = cur_offset + envelope_size;
11896            if 3 > max_ordinal {
11897                return Ok(());
11898            }
11899
11900            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11901            // are envelope_size bytes.
11902            let cur_offset: usize = (3 - 1) * envelope_size;
11903
11904            // Zero reserved fields.
11905            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11906
11907            // Safety:
11908            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11909            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11910            //   envelope_size bytes, there is always sufficient room.
11911            fidl::encoding::encode_in_envelope_optional::<IsoPacketStatusFlag, D>(
11912                self.status_flag
11913                    .as_ref()
11914                    .map(<IsoPacketStatusFlag as fidl::encoding::ValueTypeMarker>::borrow),
11915                encoder,
11916                offset + cur_offset,
11917                depth,
11918            )?;
11919
11920            _prev_end_offset = cur_offset + envelope_size;
11921            if 4 > max_ordinal {
11922                return Ok(());
11923            }
11924
11925            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
11926            // are envelope_size bytes.
11927            let cur_offset: usize = (4 - 1) * envelope_size;
11928
11929            // Zero reserved fields.
11930            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
11931
11932            // Safety:
11933            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
11934            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
11935            //   envelope_size bytes, there is always sufficient room.
11936            fidl::encoding::encode_in_envelope_optional::<i64, D>(
11937                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
11938                encoder,
11939                offset + cur_offset,
11940                depth,
11941            )?;
11942
11943            _prev_end_offset = cur_offset + envelope_size;
11944
11945            Ok(())
11946        }
11947    }
11948
11949    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
11950        for IsochronousStreamReadResponse
11951    {
11952        #[inline(always)]
11953        fn new_empty() -> Self {
11954            Self::default()
11955        }
11956
11957        unsafe fn decode(
11958            &mut self,
11959            decoder: &mut fidl::encoding::Decoder<'_, D>,
11960            offset: usize,
11961            mut depth: fidl::encoding::Depth,
11962        ) -> fidl::Result<()> {
11963            decoder.debug_check_bounds::<Self>(offset);
11964            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
11965                None => return Err(fidl::Error::NotNullable),
11966                Some(len) => len,
11967            };
11968            // Calling decoder.out_of_line_offset(0) is not allowed.
11969            if len == 0 {
11970                return Ok(());
11971            };
11972            depth.increment()?;
11973            let envelope_size = 8;
11974            let bytes_len = len * envelope_size;
11975            let offset = decoder.out_of_line_offset(bytes_len)?;
11976            // Decode the envelope for each type.
11977            let mut _next_ordinal_to_read = 0;
11978            let mut next_offset = offset;
11979            let end_offset = offset + bytes_len;
11980            _next_ordinal_to_read += 1;
11981            if next_offset >= end_offset {
11982                return Ok(());
11983            }
11984
11985            // Decode unknown envelopes for gaps in ordinals.
11986            while _next_ordinal_to_read < 1 {
11987                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
11988                _next_ordinal_to_read += 1;
11989                next_offset += envelope_size;
11990            }
11991
11992            let next_out_of_line = decoder.next_out_of_line();
11993            let handles_before = decoder.remaining_handles();
11994            if let Some((inlined, num_bytes, num_handles)) =
11995                fidl::encoding::decode_envelope_header(decoder, next_offset)?
11996            {
11997                let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
11998                if inlined != (member_inline_size <= 4) {
11999                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12000                }
12001                let inner_offset;
12002                let mut inner_depth = depth.clone();
12003                if inlined {
12004                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12005                    inner_offset = next_offset;
12006                } else {
12007                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12008                    inner_depth.increment()?;
12009                }
12010                let val_ref = self.data.get_or_insert_with(|| {
12011                    fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
12012                });
12013                fidl::decode!(
12014                    fidl::encoding::UnboundedVector<u8>,
12015                    D,
12016                    val_ref,
12017                    decoder,
12018                    inner_offset,
12019                    inner_depth
12020                )?;
12021                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12022                {
12023                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12024                }
12025                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12026                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12027                }
12028            }
12029
12030            next_offset += envelope_size;
12031            _next_ordinal_to_read += 1;
12032            if next_offset >= end_offset {
12033                return Ok(());
12034            }
12035
12036            // Decode unknown envelopes for gaps in ordinals.
12037            while _next_ordinal_to_read < 2 {
12038                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12039                _next_ordinal_to_read += 1;
12040                next_offset += envelope_size;
12041            }
12042
12043            let next_out_of_line = decoder.next_out_of_line();
12044            let handles_before = decoder.remaining_handles();
12045            if let Some((inlined, num_bytes, num_handles)) =
12046                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12047            {
12048                let member_inline_size =
12049                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12050                if inlined != (member_inline_size <= 4) {
12051                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12052                }
12053                let inner_offset;
12054                let mut inner_depth = depth.clone();
12055                if inlined {
12056                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12057                    inner_offset = next_offset;
12058                } else {
12059                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12060                    inner_depth.increment()?;
12061                }
12062                let val_ref = self.sequence_number.get_or_insert_with(|| fidl::new_empty!(u16, D));
12063                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
12064                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12065                {
12066                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12067                }
12068                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12069                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12070                }
12071            }
12072
12073            next_offset += envelope_size;
12074            _next_ordinal_to_read += 1;
12075            if next_offset >= end_offset {
12076                return Ok(());
12077            }
12078
12079            // Decode unknown envelopes for gaps in ordinals.
12080            while _next_ordinal_to_read < 3 {
12081                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12082                _next_ordinal_to_read += 1;
12083                next_offset += envelope_size;
12084            }
12085
12086            let next_out_of_line = decoder.next_out_of_line();
12087            let handles_before = decoder.remaining_handles();
12088            if let Some((inlined, num_bytes, num_handles)) =
12089                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12090            {
12091                let member_inline_size =
12092                    <IsoPacketStatusFlag as fidl::encoding::TypeMarker>::inline_size(
12093                        decoder.context,
12094                    );
12095                if inlined != (member_inline_size <= 4) {
12096                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12097                }
12098                let inner_offset;
12099                let mut inner_depth = depth.clone();
12100                if inlined {
12101                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12102                    inner_offset = next_offset;
12103                } else {
12104                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12105                    inner_depth.increment()?;
12106                }
12107                let val_ref = self
12108                    .status_flag
12109                    .get_or_insert_with(|| fidl::new_empty!(IsoPacketStatusFlag, D));
12110                fidl::decode!(IsoPacketStatusFlag, D, val_ref, decoder, inner_offset, inner_depth)?;
12111                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12112                {
12113                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12114                }
12115                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12116                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12117                }
12118            }
12119
12120            next_offset += envelope_size;
12121            _next_ordinal_to_read += 1;
12122            if next_offset >= end_offset {
12123                return Ok(());
12124            }
12125
12126            // Decode unknown envelopes for gaps in ordinals.
12127            while _next_ordinal_to_read < 4 {
12128                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12129                _next_ordinal_to_read += 1;
12130                next_offset += envelope_size;
12131            }
12132
12133            let next_out_of_line = decoder.next_out_of_line();
12134            let handles_before = decoder.remaining_handles();
12135            if let Some((inlined, num_bytes, num_handles)) =
12136                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12137            {
12138                let member_inline_size =
12139                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12140                if inlined != (member_inline_size <= 4) {
12141                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12142                }
12143                let inner_offset;
12144                let mut inner_depth = depth.clone();
12145                if inlined {
12146                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12147                    inner_offset = next_offset;
12148                } else {
12149                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12150                    inner_depth.increment()?;
12151                }
12152                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
12153                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12154                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12155                {
12156                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12157                }
12158                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12159                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12160                }
12161            }
12162
12163            next_offset += envelope_size;
12164
12165            // Decode the remaining unknown envelopes.
12166            while next_offset < end_offset {
12167                _next_ordinal_to_read += 1;
12168                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12169                next_offset += envelope_size;
12170            }
12171
12172            Ok(())
12173        }
12174    }
12175
12176    impl Legacy {
12177        #[inline(always)]
12178        fn max_ordinal_present(&self) -> u64 {
12179            0
12180        }
12181    }
12182
12183    impl fidl::encoding::ValueTypeMarker for Legacy {
12184        type Borrowed<'a> = &'a Self;
12185        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12186            value
12187        }
12188    }
12189
12190    unsafe impl fidl::encoding::TypeMarker for Legacy {
12191        type Owned = Self;
12192
12193        #[inline(always)]
12194        fn inline_align(_context: fidl::encoding::Context) -> usize {
12195            8
12196        }
12197
12198        #[inline(always)]
12199        fn inline_size(_context: fidl::encoding::Context) -> usize {
12200            16
12201        }
12202    }
12203
12204    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Legacy, D> for &Legacy {
12205        unsafe fn encode(
12206            self,
12207            encoder: &mut fidl::encoding::Encoder<'_, D>,
12208            offset: usize,
12209            mut depth: fidl::encoding::Depth,
12210        ) -> fidl::Result<()> {
12211            encoder.debug_check_bounds::<Legacy>(offset);
12212            // Vector header
12213            let max_ordinal: u64 = self.max_ordinal_present();
12214            encoder.write_num(max_ordinal, offset);
12215            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12216            // Calling encoder.out_of_line_offset(0) is not allowed.
12217            if max_ordinal == 0 {
12218                return Ok(());
12219            }
12220            depth.increment()?;
12221            let envelope_size = 8;
12222            let bytes_len = max_ordinal as usize * envelope_size;
12223            #[allow(unused_variables)]
12224            let offset = encoder.out_of_line_offset(bytes_len);
12225            let mut _prev_end_offset: usize = 0;
12226
12227            Ok(())
12228        }
12229    }
12230
12231    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Legacy {
12232        #[inline(always)]
12233        fn new_empty() -> Self {
12234            Self::default()
12235        }
12236
12237        unsafe fn decode(
12238            &mut self,
12239            decoder: &mut fidl::encoding::Decoder<'_, D>,
12240            offset: usize,
12241            mut depth: fidl::encoding::Depth,
12242        ) -> fidl::Result<()> {
12243            decoder.debug_check_bounds::<Self>(offset);
12244            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12245                None => return Err(fidl::Error::NotNullable),
12246                Some(len) => len,
12247            };
12248            // Calling decoder.out_of_line_offset(0) is not allowed.
12249            if len == 0 {
12250                return Ok(());
12251            };
12252            depth.increment()?;
12253            let envelope_size = 8;
12254            let bytes_len = len * envelope_size;
12255            let offset = decoder.out_of_line_offset(bytes_len)?;
12256            // Decode the envelope for each type.
12257            let mut _next_ordinal_to_read = 0;
12258            let mut next_offset = offset;
12259            let end_offset = offset + bytes_len;
12260
12261            // Decode the remaining unknown envelopes.
12262            while next_offset < end_offset {
12263                _next_ordinal_to_read += 1;
12264                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12265                next_offset += envelope_size;
12266            }
12267
12268            Ok(())
12269        }
12270    }
12271
12272    impl Peer {
12273        #[inline(always)]
12274        fn max_ordinal_present(&self) -> u64 {
12275            if let Some(_) = self.periodic_advertising_interval {
12276                return 10;
12277            }
12278            if let Some(_) = self.advertising_sid {
12279                return 9;
12280            }
12281            if let Some(_) = self.last_updated {
12282                return 8;
12283            }
12284            if let Some(_) = self.bonded {
12285                return 7;
12286            }
12287            if let Some(_) = self.data {
12288                return 6;
12289            }
12290            if let Some(_) = self.name {
12291                return 5;
12292            }
12293            if let Some(_) = self.advertising_data {
12294                return 4;
12295            }
12296            if let Some(_) = self.rssi {
12297                return 3;
12298            }
12299            if let Some(_) = self.connectable {
12300                return 2;
12301            }
12302            if let Some(_) = self.id {
12303                return 1;
12304            }
12305            0
12306        }
12307    }
12308
12309    impl fidl::encoding::ValueTypeMarker for Peer {
12310        type Borrowed<'a> = &'a Self;
12311        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
12312            value
12313        }
12314    }
12315
12316    unsafe impl fidl::encoding::TypeMarker for Peer {
12317        type Owned = Self;
12318
12319        #[inline(always)]
12320        fn inline_align(_context: fidl::encoding::Context) -> usize {
12321            8
12322        }
12323
12324        #[inline(always)]
12325        fn inline_size(_context: fidl::encoding::Context) -> usize {
12326            16
12327        }
12328    }
12329
12330    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
12331        unsafe fn encode(
12332            self,
12333            encoder: &mut fidl::encoding::Encoder<'_, D>,
12334            offset: usize,
12335            mut depth: fidl::encoding::Depth,
12336        ) -> fidl::Result<()> {
12337            encoder.debug_check_bounds::<Peer>(offset);
12338            // Vector header
12339            let max_ordinal: u64 = self.max_ordinal_present();
12340            encoder.write_num(max_ordinal, offset);
12341            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
12342            // Calling encoder.out_of_line_offset(0) is not allowed.
12343            if max_ordinal == 0 {
12344                return Ok(());
12345            }
12346            depth.increment()?;
12347            let envelope_size = 8;
12348            let bytes_len = max_ordinal as usize * envelope_size;
12349            #[allow(unused_variables)]
12350            let offset = encoder.out_of_line_offset(bytes_len);
12351            let mut _prev_end_offset: usize = 0;
12352            if 1 > max_ordinal {
12353                return Ok(());
12354            }
12355
12356            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12357            // are envelope_size bytes.
12358            let cur_offset: usize = (1 - 1) * envelope_size;
12359
12360            // Zero reserved fields.
12361            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12362
12363            // Safety:
12364            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12365            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12366            //   envelope_size bytes, there is always sufficient room.
12367            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
12368            self.id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
12369            encoder, offset + cur_offset, depth
12370        )?;
12371
12372            _prev_end_offset = cur_offset + envelope_size;
12373            if 2 > max_ordinal {
12374                return Ok(());
12375            }
12376
12377            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12378            // are envelope_size bytes.
12379            let cur_offset: usize = (2 - 1) * envelope_size;
12380
12381            // Zero reserved fields.
12382            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12383
12384            // Safety:
12385            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12386            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12387            //   envelope_size bytes, there is always sufficient room.
12388            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12389                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12390                encoder,
12391                offset + cur_offset,
12392                depth,
12393            )?;
12394
12395            _prev_end_offset = cur_offset + envelope_size;
12396            if 3 > max_ordinal {
12397                return Ok(());
12398            }
12399
12400            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12401            // are envelope_size bytes.
12402            let cur_offset: usize = (3 - 1) * envelope_size;
12403
12404            // Zero reserved fields.
12405            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12406
12407            // Safety:
12408            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12409            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12410            //   envelope_size bytes, there is always sufficient room.
12411            fidl::encoding::encode_in_envelope_optional::<i8, D>(
12412                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
12413                encoder,
12414                offset + cur_offset,
12415                depth,
12416            )?;
12417
12418            _prev_end_offset = cur_offset + envelope_size;
12419            if 4 > max_ordinal {
12420                return Ok(());
12421            }
12422
12423            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12424            // are envelope_size bytes.
12425            let cur_offset: usize = (4 - 1) * envelope_size;
12426
12427            // Zero reserved fields.
12428            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12429
12430            // Safety:
12431            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12432            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12433            //   envelope_size bytes, there is always sufficient room.
12434            fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
12435                self.advertising_data
12436                    .as_ref()
12437                    .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
12438                encoder,
12439                offset + cur_offset,
12440                depth,
12441            )?;
12442
12443            _prev_end_offset = cur_offset + envelope_size;
12444            if 5 > max_ordinal {
12445                return Ok(());
12446            }
12447
12448            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12449            // are envelope_size bytes.
12450            let cur_offset: usize = (5 - 1) * envelope_size;
12451
12452            // Zero reserved fields.
12453            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12454
12455            // Safety:
12456            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12457            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12458            //   envelope_size bytes, there is always sufficient room.
12459            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
12460                self.name.as_ref().map(
12461                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
12462                ),
12463                encoder,
12464                offset + cur_offset,
12465                depth,
12466            )?;
12467
12468            _prev_end_offset = cur_offset + envelope_size;
12469            if 6 > max_ordinal {
12470                return Ok(());
12471            }
12472
12473            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12474            // are envelope_size bytes.
12475            let cur_offset: usize = (6 - 1) * envelope_size;
12476
12477            // Zero reserved fields.
12478            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12479
12480            // Safety:
12481            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12482            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12483            //   envelope_size bytes, there is always sufficient room.
12484            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
12485                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
12486                encoder,
12487                offset + cur_offset,
12488                depth,
12489            )?;
12490
12491            _prev_end_offset = cur_offset + envelope_size;
12492            if 7 > max_ordinal {
12493                return Ok(());
12494            }
12495
12496            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12497            // are envelope_size bytes.
12498            let cur_offset: usize = (7 - 1) * envelope_size;
12499
12500            // Zero reserved fields.
12501            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12502
12503            // Safety:
12504            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12505            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12506            //   envelope_size bytes, there is always sufficient room.
12507            fidl::encoding::encode_in_envelope_optional::<bool, D>(
12508                self.bonded.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
12509                encoder,
12510                offset + cur_offset,
12511                depth,
12512            )?;
12513
12514            _prev_end_offset = cur_offset + envelope_size;
12515            if 8 > max_ordinal {
12516                return Ok(());
12517            }
12518
12519            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12520            // are envelope_size bytes.
12521            let cur_offset: usize = (8 - 1) * envelope_size;
12522
12523            // Zero reserved fields.
12524            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12525
12526            // Safety:
12527            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12528            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12529            //   envelope_size bytes, there is always sufficient room.
12530            fidl::encoding::encode_in_envelope_optional::<i64, D>(
12531                self.last_updated.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
12532                encoder,
12533                offset + cur_offset,
12534                depth,
12535            )?;
12536
12537            _prev_end_offset = cur_offset + envelope_size;
12538            if 9 > max_ordinal {
12539                return Ok(());
12540            }
12541
12542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12543            // are envelope_size bytes.
12544            let cur_offset: usize = (9 - 1) * envelope_size;
12545
12546            // Zero reserved fields.
12547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12548
12549            // Safety:
12550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12552            //   envelope_size bytes, there is always sufficient room.
12553            fidl::encoding::encode_in_envelope_optional::<u8, D>(
12554                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
12555                encoder,
12556                offset + cur_offset,
12557                depth,
12558            )?;
12559
12560            _prev_end_offset = cur_offset + envelope_size;
12561            if 10 > max_ordinal {
12562                return Ok(());
12563            }
12564
12565            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
12566            // are envelope_size bytes.
12567            let cur_offset: usize = (10 - 1) * envelope_size;
12568
12569            // Zero reserved fields.
12570            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
12571
12572            // Safety:
12573            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
12574            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
12575            //   envelope_size bytes, there is always sufficient room.
12576            fidl::encoding::encode_in_envelope_optional::<u16, D>(
12577                self.periodic_advertising_interval
12578                    .as_ref()
12579                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
12580                encoder,
12581                offset + cur_offset,
12582                depth,
12583            )?;
12584
12585            _prev_end_offset = cur_offset + envelope_size;
12586
12587            Ok(())
12588        }
12589    }
12590
12591    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
12592        #[inline(always)]
12593        fn new_empty() -> Self {
12594            Self::default()
12595        }
12596
12597        unsafe fn decode(
12598            &mut self,
12599            decoder: &mut fidl::encoding::Decoder<'_, D>,
12600            offset: usize,
12601            mut depth: fidl::encoding::Depth,
12602        ) -> fidl::Result<()> {
12603            decoder.debug_check_bounds::<Self>(offset);
12604            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
12605                None => return Err(fidl::Error::NotNullable),
12606                Some(len) => len,
12607            };
12608            // Calling decoder.out_of_line_offset(0) is not allowed.
12609            if len == 0 {
12610                return Ok(());
12611            };
12612            depth.increment()?;
12613            let envelope_size = 8;
12614            let bytes_len = len * envelope_size;
12615            let offset = decoder.out_of_line_offset(bytes_len)?;
12616            // Decode the envelope for each type.
12617            let mut _next_ordinal_to_read = 0;
12618            let mut next_offset = offset;
12619            let end_offset = offset + bytes_len;
12620            _next_ordinal_to_read += 1;
12621            if next_offset >= end_offset {
12622                return Ok(());
12623            }
12624
12625            // Decode unknown envelopes for gaps in ordinals.
12626            while _next_ordinal_to_read < 1 {
12627                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12628                _next_ordinal_to_read += 1;
12629                next_offset += envelope_size;
12630            }
12631
12632            let next_out_of_line = decoder.next_out_of_line();
12633            let handles_before = decoder.remaining_handles();
12634            if let Some((inlined, num_bytes, num_handles)) =
12635                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12636            {
12637                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12638                if inlined != (member_inline_size <= 4) {
12639                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12640                }
12641                let inner_offset;
12642                let mut inner_depth = depth.clone();
12643                if inlined {
12644                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12645                    inner_offset = next_offset;
12646                } else {
12647                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12648                    inner_depth.increment()?;
12649                }
12650                let val_ref = self.id.get_or_insert_with(|| {
12651                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
12652                });
12653                fidl::decode!(
12654                    fidl_fuchsia_bluetooth__common::PeerId,
12655                    D,
12656                    val_ref,
12657                    decoder,
12658                    inner_offset,
12659                    inner_depth
12660                )?;
12661                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12662                {
12663                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12664                }
12665                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12666                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12667                }
12668            }
12669
12670            next_offset += envelope_size;
12671            _next_ordinal_to_read += 1;
12672            if next_offset >= end_offset {
12673                return Ok(());
12674            }
12675
12676            // Decode unknown envelopes for gaps in ordinals.
12677            while _next_ordinal_to_read < 2 {
12678                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12679                _next_ordinal_to_read += 1;
12680                next_offset += envelope_size;
12681            }
12682
12683            let next_out_of_line = decoder.next_out_of_line();
12684            let handles_before = decoder.remaining_handles();
12685            if let Some((inlined, num_bytes, num_handles)) =
12686                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12687            {
12688                let member_inline_size =
12689                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12690                if inlined != (member_inline_size <= 4) {
12691                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12692                }
12693                let inner_offset;
12694                let mut inner_depth = depth.clone();
12695                if inlined {
12696                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12697                    inner_offset = next_offset;
12698                } else {
12699                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12700                    inner_depth.increment()?;
12701                }
12702                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
12703                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12704                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12705                {
12706                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12707                }
12708                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12709                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12710                }
12711            }
12712
12713            next_offset += envelope_size;
12714            _next_ordinal_to_read += 1;
12715            if next_offset >= end_offset {
12716                return Ok(());
12717            }
12718
12719            // Decode unknown envelopes for gaps in ordinals.
12720            while _next_ordinal_to_read < 3 {
12721                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12722                _next_ordinal_to_read += 1;
12723                next_offset += envelope_size;
12724            }
12725
12726            let next_out_of_line = decoder.next_out_of_line();
12727            let handles_before = decoder.remaining_handles();
12728            if let Some((inlined, num_bytes, num_handles)) =
12729                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12730            {
12731                let member_inline_size =
12732                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12733                if inlined != (member_inline_size <= 4) {
12734                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12735                }
12736                let inner_offset;
12737                let mut inner_depth = depth.clone();
12738                if inlined {
12739                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12740                    inner_offset = next_offset;
12741                } else {
12742                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12743                    inner_depth.increment()?;
12744                }
12745                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
12746                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
12747                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12748                {
12749                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12750                }
12751                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12752                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12753                }
12754            }
12755
12756            next_offset += envelope_size;
12757            _next_ordinal_to_read += 1;
12758            if next_offset >= end_offset {
12759                return Ok(());
12760            }
12761
12762            // Decode unknown envelopes for gaps in ordinals.
12763            while _next_ordinal_to_read < 4 {
12764                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12765                _next_ordinal_to_read += 1;
12766                next_offset += envelope_size;
12767            }
12768
12769            let next_out_of_line = decoder.next_out_of_line();
12770            let handles_before = decoder.remaining_handles();
12771            if let Some((inlined, num_bytes, num_handles)) =
12772                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12773            {
12774                let member_inline_size =
12775                    <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12776                if inlined != (member_inline_size <= 4) {
12777                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12778                }
12779                let inner_offset;
12780                let mut inner_depth = depth.clone();
12781                if inlined {
12782                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12783                    inner_offset = next_offset;
12784                } else {
12785                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12786                    inner_depth.increment()?;
12787                }
12788                let val_ref = self
12789                    .advertising_data
12790                    .get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
12791                fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
12792                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12793                {
12794                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12795                }
12796                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12797                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12798                }
12799            }
12800
12801            next_offset += envelope_size;
12802            _next_ordinal_to_read += 1;
12803            if next_offset >= end_offset {
12804                return Ok(());
12805            }
12806
12807            // Decode unknown envelopes for gaps in ordinals.
12808            while _next_ordinal_to_read < 5 {
12809                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12810                _next_ordinal_to_read += 1;
12811                next_offset += envelope_size;
12812            }
12813
12814            let next_out_of_line = decoder.next_out_of_line();
12815            let handles_before = decoder.remaining_handles();
12816            if let Some((inlined, num_bytes, num_handles)) =
12817                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12818            {
12819                let member_inline_size =
12820                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
12821                        decoder.context,
12822                    );
12823                if inlined != (member_inline_size <= 4) {
12824                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12825                }
12826                let inner_offset;
12827                let mut inner_depth = depth.clone();
12828                if inlined {
12829                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12830                    inner_offset = next_offset;
12831                } else {
12832                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12833                    inner_depth.increment()?;
12834                }
12835                let val_ref = self
12836                    .name
12837                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
12838                fidl::decode!(
12839                    fidl::encoding::BoundedString<248>,
12840                    D,
12841                    val_ref,
12842                    decoder,
12843                    inner_offset,
12844                    inner_depth
12845                )?;
12846                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12847                {
12848                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12849                }
12850                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12851                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12852                }
12853            }
12854
12855            next_offset += envelope_size;
12856            _next_ordinal_to_read += 1;
12857            if next_offset >= end_offset {
12858                return Ok(());
12859            }
12860
12861            // Decode unknown envelopes for gaps in ordinals.
12862            while _next_ordinal_to_read < 6 {
12863                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12864                _next_ordinal_to_read += 1;
12865                next_offset += envelope_size;
12866            }
12867
12868            let next_out_of_line = decoder.next_out_of_line();
12869            let handles_before = decoder.remaining_handles();
12870            if let Some((inlined, num_bytes, num_handles)) =
12871                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12872            {
12873                let member_inline_size =
12874                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12875                if inlined != (member_inline_size <= 4) {
12876                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12877                }
12878                let inner_offset;
12879                let mut inner_depth = depth.clone();
12880                if inlined {
12881                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12882                    inner_offset = next_offset;
12883                } else {
12884                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12885                    inner_depth.increment()?;
12886                }
12887                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
12888                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
12889                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12890                {
12891                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12892                }
12893                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12894                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12895                }
12896            }
12897
12898            next_offset += envelope_size;
12899            _next_ordinal_to_read += 1;
12900            if next_offset >= end_offset {
12901                return Ok(());
12902            }
12903
12904            // Decode unknown envelopes for gaps in ordinals.
12905            while _next_ordinal_to_read < 7 {
12906                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12907                _next_ordinal_to_read += 1;
12908                next_offset += envelope_size;
12909            }
12910
12911            let next_out_of_line = decoder.next_out_of_line();
12912            let handles_before = decoder.remaining_handles();
12913            if let Some((inlined, num_bytes, num_handles)) =
12914                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12915            {
12916                let member_inline_size =
12917                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12918                if inlined != (member_inline_size <= 4) {
12919                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12920                }
12921                let inner_offset;
12922                let mut inner_depth = depth.clone();
12923                if inlined {
12924                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12925                    inner_offset = next_offset;
12926                } else {
12927                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12928                    inner_depth.increment()?;
12929                }
12930                let val_ref = self.bonded.get_or_insert_with(|| fidl::new_empty!(bool, D));
12931                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
12932                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12933                {
12934                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12935                }
12936                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12937                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12938                }
12939            }
12940
12941            next_offset += envelope_size;
12942            _next_ordinal_to_read += 1;
12943            if next_offset >= end_offset {
12944                return Ok(());
12945            }
12946
12947            // Decode unknown envelopes for gaps in ordinals.
12948            while _next_ordinal_to_read < 8 {
12949                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12950                _next_ordinal_to_read += 1;
12951                next_offset += envelope_size;
12952            }
12953
12954            let next_out_of_line = decoder.next_out_of_line();
12955            let handles_before = decoder.remaining_handles();
12956            if let Some((inlined, num_bytes, num_handles)) =
12957                fidl::encoding::decode_envelope_header(decoder, next_offset)?
12958            {
12959                let member_inline_size =
12960                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
12961                if inlined != (member_inline_size <= 4) {
12962                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
12963                }
12964                let inner_offset;
12965                let mut inner_depth = depth.clone();
12966                if inlined {
12967                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
12968                    inner_offset = next_offset;
12969                } else {
12970                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
12971                    inner_depth.increment()?;
12972                }
12973                let val_ref = self.last_updated.get_or_insert_with(|| fidl::new_empty!(i64, D));
12974                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
12975                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
12976                {
12977                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
12978                }
12979                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
12980                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
12981                }
12982            }
12983
12984            next_offset += envelope_size;
12985            _next_ordinal_to_read += 1;
12986            if next_offset >= end_offset {
12987                return Ok(());
12988            }
12989
12990            // Decode unknown envelopes for gaps in ordinals.
12991            while _next_ordinal_to_read < 9 {
12992                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
12993                _next_ordinal_to_read += 1;
12994                next_offset += envelope_size;
12995            }
12996
12997            let next_out_of_line = decoder.next_out_of_line();
12998            let handles_before = decoder.remaining_handles();
12999            if let Some((inlined, num_bytes, num_handles)) =
13000                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13001            {
13002                let member_inline_size =
13003                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13004                if inlined != (member_inline_size <= 4) {
13005                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13006                }
13007                let inner_offset;
13008                let mut inner_depth = depth.clone();
13009                if inlined {
13010                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13011                    inner_offset = next_offset;
13012                } else {
13013                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13014                    inner_depth.increment()?;
13015                }
13016                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
13017                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13018                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13019                {
13020                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13021                }
13022                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13023                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13024                }
13025            }
13026
13027            next_offset += envelope_size;
13028            _next_ordinal_to_read += 1;
13029            if next_offset >= end_offset {
13030                return Ok(());
13031            }
13032
13033            // Decode unknown envelopes for gaps in ordinals.
13034            while _next_ordinal_to_read < 10 {
13035                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13036                _next_ordinal_to_read += 1;
13037                next_offset += envelope_size;
13038            }
13039
13040            let next_out_of_line = decoder.next_out_of_line();
13041            let handles_before = decoder.remaining_handles();
13042            if let Some((inlined, num_bytes, num_handles)) =
13043                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13044            {
13045                let member_inline_size =
13046                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13047                if inlined != (member_inline_size <= 4) {
13048                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13049                }
13050                let inner_offset;
13051                let mut inner_depth = depth.clone();
13052                if inlined {
13053                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13054                    inner_offset = next_offset;
13055                } else {
13056                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13057                    inner_depth.increment()?;
13058                }
13059                let val_ref = self
13060                    .periodic_advertising_interval
13061                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
13062                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13063                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13064                {
13065                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13066                }
13067                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13068                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13069                }
13070            }
13071
13072            next_offset += envelope_size;
13073
13074            // Decode the remaining unknown envelopes.
13075            while next_offset < end_offset {
13076                _next_ordinal_to_read += 1;
13077                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13078                next_offset += envelope_size;
13079            }
13080
13081            Ok(())
13082        }
13083    }
13084
13085    impl PeriodicAdvertisingReport {
13086        #[inline(always)]
13087        fn max_ordinal_present(&self) -> u64 {
13088            if let Some(_) = self.timestamp {
13089                return 5;
13090            }
13091            if let Some(_) = self.subevent {
13092                return 4;
13093            }
13094            if let Some(_) = self.event_counter {
13095                return 3;
13096            }
13097            if let Some(_) = self.data {
13098                return 2;
13099            }
13100            if let Some(_) = self.rssi {
13101                return 1;
13102            }
13103            0
13104        }
13105    }
13106
13107    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingReport {
13108        type Borrowed<'a> = &'a Self;
13109        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13110            value
13111        }
13112    }
13113
13114    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingReport {
13115        type Owned = Self;
13116
13117        #[inline(always)]
13118        fn inline_align(_context: fidl::encoding::Context) -> usize {
13119            8
13120        }
13121
13122        #[inline(always)]
13123        fn inline_size(_context: fidl::encoding::Context) -> usize {
13124            16
13125        }
13126    }
13127
13128    unsafe impl<D: fidl::encoding::ResourceDialect>
13129        fidl::encoding::Encode<PeriodicAdvertisingReport, D> for &PeriodicAdvertisingReport
13130    {
13131        unsafe fn encode(
13132            self,
13133            encoder: &mut fidl::encoding::Encoder<'_, D>,
13134            offset: usize,
13135            mut depth: fidl::encoding::Depth,
13136        ) -> fidl::Result<()> {
13137            encoder.debug_check_bounds::<PeriodicAdvertisingReport>(offset);
13138            // Vector header
13139            let max_ordinal: u64 = self.max_ordinal_present();
13140            encoder.write_num(max_ordinal, offset);
13141            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13142            // Calling encoder.out_of_line_offset(0) is not allowed.
13143            if max_ordinal == 0 {
13144                return Ok(());
13145            }
13146            depth.increment()?;
13147            let envelope_size = 8;
13148            let bytes_len = max_ordinal as usize * envelope_size;
13149            #[allow(unused_variables)]
13150            let offset = encoder.out_of_line_offset(bytes_len);
13151            let mut _prev_end_offset: usize = 0;
13152            if 1 > max_ordinal {
13153                return Ok(());
13154            }
13155
13156            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13157            // are envelope_size bytes.
13158            let cur_offset: usize = (1 - 1) * envelope_size;
13159
13160            // Zero reserved fields.
13161            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13162
13163            // Safety:
13164            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13165            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13166            //   envelope_size bytes, there is always sufficient room.
13167            fidl::encoding::encode_in_envelope_optional::<i8, D>(
13168                self.rssi.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
13169                encoder,
13170                offset + cur_offset,
13171                depth,
13172            )?;
13173
13174            _prev_end_offset = cur_offset + envelope_size;
13175            if 2 > max_ordinal {
13176                return Ok(());
13177            }
13178
13179            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13180            // are envelope_size bytes.
13181            let cur_offset: usize = (2 - 1) * envelope_size;
13182
13183            // Zero reserved fields.
13184            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13185
13186            // Safety:
13187            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13188            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13189            //   envelope_size bytes, there is always sufficient room.
13190            fidl::encoding::encode_in_envelope_optional::<ScanData, D>(
13191                self.data.as_ref().map(<ScanData as fidl::encoding::ValueTypeMarker>::borrow),
13192                encoder,
13193                offset + cur_offset,
13194                depth,
13195            )?;
13196
13197            _prev_end_offset = cur_offset + envelope_size;
13198            if 3 > max_ordinal {
13199                return Ok(());
13200            }
13201
13202            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13203            // are envelope_size bytes.
13204            let cur_offset: usize = (3 - 1) * envelope_size;
13205
13206            // Zero reserved fields.
13207            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13208
13209            // Safety:
13210            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13211            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13212            //   envelope_size bytes, there is always sufficient room.
13213            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13214                self.event_counter.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13215                encoder,
13216                offset + cur_offset,
13217                depth,
13218            )?;
13219
13220            _prev_end_offset = cur_offset + envelope_size;
13221            if 4 > max_ordinal {
13222                return Ok(());
13223            }
13224
13225            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13226            // are envelope_size bytes.
13227            let cur_offset: usize = (4 - 1) * envelope_size;
13228
13229            // Zero reserved fields.
13230            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13231
13232            // Safety:
13233            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13234            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13235            //   envelope_size bytes, there is always sufficient room.
13236            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13237                self.subevent.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13238                encoder,
13239                offset + cur_offset,
13240                depth,
13241            )?;
13242
13243            _prev_end_offset = cur_offset + envelope_size;
13244            if 5 > max_ordinal {
13245                return Ok(());
13246            }
13247
13248            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13249            // are envelope_size bytes.
13250            let cur_offset: usize = (5 - 1) * envelope_size;
13251
13252            // Zero reserved fields.
13253            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13254
13255            // Safety:
13256            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13257            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13258            //   envelope_size bytes, there is always sufficient room.
13259            fidl::encoding::encode_in_envelope_optional::<i64, D>(
13260                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
13261                encoder,
13262                offset + cur_offset,
13263                depth,
13264            )?;
13265
13266            _prev_end_offset = cur_offset + envelope_size;
13267
13268            Ok(())
13269        }
13270    }
13271
13272    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13273        for PeriodicAdvertisingReport
13274    {
13275        #[inline(always)]
13276        fn new_empty() -> Self {
13277            Self::default()
13278        }
13279
13280        unsafe fn decode(
13281            &mut self,
13282            decoder: &mut fidl::encoding::Decoder<'_, D>,
13283            offset: usize,
13284            mut depth: fidl::encoding::Depth,
13285        ) -> fidl::Result<()> {
13286            decoder.debug_check_bounds::<Self>(offset);
13287            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13288                None => return Err(fidl::Error::NotNullable),
13289                Some(len) => len,
13290            };
13291            // Calling decoder.out_of_line_offset(0) is not allowed.
13292            if len == 0 {
13293                return Ok(());
13294            };
13295            depth.increment()?;
13296            let envelope_size = 8;
13297            let bytes_len = len * envelope_size;
13298            let offset = decoder.out_of_line_offset(bytes_len)?;
13299            // Decode the envelope for each type.
13300            let mut _next_ordinal_to_read = 0;
13301            let mut next_offset = offset;
13302            let end_offset = offset + bytes_len;
13303            _next_ordinal_to_read += 1;
13304            if next_offset >= end_offset {
13305                return Ok(());
13306            }
13307
13308            // Decode unknown envelopes for gaps in ordinals.
13309            while _next_ordinal_to_read < 1 {
13310                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13311                _next_ordinal_to_read += 1;
13312                next_offset += envelope_size;
13313            }
13314
13315            let next_out_of_line = decoder.next_out_of_line();
13316            let handles_before = decoder.remaining_handles();
13317            if let Some((inlined, num_bytes, num_handles)) =
13318                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13319            {
13320                let member_inline_size =
13321                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13322                if inlined != (member_inline_size <= 4) {
13323                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13324                }
13325                let inner_offset;
13326                let mut inner_depth = depth.clone();
13327                if inlined {
13328                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13329                    inner_offset = next_offset;
13330                } else {
13331                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13332                    inner_depth.increment()?;
13333                }
13334                let val_ref = self.rssi.get_or_insert_with(|| fidl::new_empty!(i8, D));
13335                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
13336                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13337                {
13338                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13339                }
13340                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13341                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13342                }
13343            }
13344
13345            next_offset += envelope_size;
13346            _next_ordinal_to_read += 1;
13347            if next_offset >= end_offset {
13348                return Ok(());
13349            }
13350
13351            // Decode unknown envelopes for gaps in ordinals.
13352            while _next_ordinal_to_read < 2 {
13353                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13354                _next_ordinal_to_read += 1;
13355                next_offset += envelope_size;
13356            }
13357
13358            let next_out_of_line = decoder.next_out_of_line();
13359            let handles_before = decoder.remaining_handles();
13360            if let Some((inlined, num_bytes, num_handles)) =
13361                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13362            {
13363                let member_inline_size =
13364                    <ScanData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13365                if inlined != (member_inline_size <= 4) {
13366                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13367                }
13368                let inner_offset;
13369                let mut inner_depth = depth.clone();
13370                if inlined {
13371                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13372                    inner_offset = next_offset;
13373                } else {
13374                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13375                    inner_depth.increment()?;
13376                }
13377                let val_ref = self.data.get_or_insert_with(|| fidl::new_empty!(ScanData, D));
13378                fidl::decode!(ScanData, D, val_ref, decoder, inner_offset, inner_depth)?;
13379                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13380                {
13381                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13382                }
13383                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13384                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13385                }
13386            }
13387
13388            next_offset += envelope_size;
13389            _next_ordinal_to_read += 1;
13390            if next_offset >= end_offset {
13391                return Ok(());
13392            }
13393
13394            // Decode unknown envelopes for gaps in ordinals.
13395            while _next_ordinal_to_read < 3 {
13396                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13397                _next_ordinal_to_read += 1;
13398                next_offset += envelope_size;
13399            }
13400
13401            let next_out_of_line = decoder.next_out_of_line();
13402            let handles_before = decoder.remaining_handles();
13403            if let Some((inlined, num_bytes, num_handles)) =
13404                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13405            {
13406                let member_inline_size =
13407                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13408                if inlined != (member_inline_size <= 4) {
13409                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13410                }
13411                let inner_offset;
13412                let mut inner_depth = depth.clone();
13413                if inlined {
13414                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13415                    inner_offset = next_offset;
13416                } else {
13417                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13418                    inner_depth.increment()?;
13419                }
13420                let val_ref = self.event_counter.get_or_insert_with(|| fidl::new_empty!(u16, D));
13421                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
13422                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13423                {
13424                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13425                }
13426                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13427                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13428                }
13429            }
13430
13431            next_offset += envelope_size;
13432            _next_ordinal_to_read += 1;
13433            if next_offset >= end_offset {
13434                return Ok(());
13435            }
13436
13437            // Decode unknown envelopes for gaps in ordinals.
13438            while _next_ordinal_to_read < 4 {
13439                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13440                _next_ordinal_to_read += 1;
13441                next_offset += envelope_size;
13442            }
13443
13444            let next_out_of_line = decoder.next_out_of_line();
13445            let handles_before = decoder.remaining_handles();
13446            if let Some((inlined, num_bytes, num_handles)) =
13447                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13448            {
13449                let member_inline_size =
13450                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13451                if inlined != (member_inline_size <= 4) {
13452                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13453                }
13454                let inner_offset;
13455                let mut inner_depth = depth.clone();
13456                if inlined {
13457                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13458                    inner_offset = next_offset;
13459                } else {
13460                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13461                    inner_depth.increment()?;
13462                }
13463                let val_ref = self.subevent.get_or_insert_with(|| fidl::new_empty!(u8, D));
13464                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
13465                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13466                {
13467                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13468                }
13469                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13470                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13471                }
13472            }
13473
13474            next_offset += envelope_size;
13475            _next_ordinal_to_read += 1;
13476            if next_offset >= end_offset {
13477                return Ok(());
13478            }
13479
13480            // Decode unknown envelopes for gaps in ordinals.
13481            while _next_ordinal_to_read < 5 {
13482                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13483                _next_ordinal_to_read += 1;
13484                next_offset += envelope_size;
13485            }
13486
13487            let next_out_of_line = decoder.next_out_of_line();
13488            let handles_before = decoder.remaining_handles();
13489            if let Some((inlined, num_bytes, num_handles)) =
13490                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13491            {
13492                let member_inline_size =
13493                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13494                if inlined != (member_inline_size <= 4) {
13495                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13496                }
13497                let inner_offset;
13498                let mut inner_depth = depth.clone();
13499                if inlined {
13500                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13501                    inner_offset = next_offset;
13502                } else {
13503                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13504                    inner_depth.increment()?;
13505                }
13506                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
13507                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
13508                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13509                {
13510                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13511                }
13512                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13513                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13514                }
13515            }
13516
13517            next_offset += envelope_size;
13518
13519            // Decode the remaining unknown envelopes.
13520            while next_offset < end_offset {
13521                _next_ordinal_to_read += 1;
13522                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13523                next_offset += envelope_size;
13524            }
13525
13526            Ok(())
13527        }
13528    }
13529
13530    impl PeriodicAdvertisingSyncConfiguration {
13531        #[inline(always)]
13532        fn max_ordinal_present(&self) -> u64 {
13533            if let Some(_) = self.filter_duplicates {
13534                return 1;
13535            }
13536            0
13537        }
13538    }
13539
13540    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncConfiguration {
13541        type Borrowed<'a> = &'a Self;
13542        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13543            value
13544        }
13545    }
13546
13547    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncConfiguration {
13548        type Owned = Self;
13549
13550        #[inline(always)]
13551        fn inline_align(_context: fidl::encoding::Context) -> usize {
13552            8
13553        }
13554
13555        #[inline(always)]
13556        fn inline_size(_context: fidl::encoding::Context) -> usize {
13557            16
13558        }
13559    }
13560
13561    unsafe impl<D: fidl::encoding::ResourceDialect>
13562        fidl::encoding::Encode<PeriodicAdvertisingSyncConfiguration, D>
13563        for &PeriodicAdvertisingSyncConfiguration
13564    {
13565        unsafe fn encode(
13566            self,
13567            encoder: &mut fidl::encoding::Encoder<'_, D>,
13568            offset: usize,
13569            mut depth: fidl::encoding::Depth,
13570        ) -> fidl::Result<()> {
13571            encoder.debug_check_bounds::<PeriodicAdvertisingSyncConfiguration>(offset);
13572            // Vector header
13573            let max_ordinal: u64 = self.max_ordinal_present();
13574            encoder.write_num(max_ordinal, offset);
13575            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13576            // Calling encoder.out_of_line_offset(0) is not allowed.
13577            if max_ordinal == 0 {
13578                return Ok(());
13579            }
13580            depth.increment()?;
13581            let envelope_size = 8;
13582            let bytes_len = max_ordinal as usize * envelope_size;
13583            #[allow(unused_variables)]
13584            let offset = encoder.out_of_line_offset(bytes_len);
13585            let mut _prev_end_offset: usize = 0;
13586            if 1 > max_ordinal {
13587                return Ok(());
13588            }
13589
13590            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13591            // are envelope_size bytes.
13592            let cur_offset: usize = (1 - 1) * envelope_size;
13593
13594            // Zero reserved fields.
13595            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13596
13597            // Safety:
13598            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13599            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13600            //   envelope_size bytes, there is always sufficient room.
13601            fidl::encoding::encode_in_envelope_optional::<bool, D>(
13602                self.filter_duplicates
13603                    .as_ref()
13604                    .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
13605                encoder,
13606                offset + cur_offset,
13607                depth,
13608            )?;
13609
13610            _prev_end_offset = cur_offset + envelope_size;
13611
13612            Ok(())
13613        }
13614    }
13615
13616    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13617        for PeriodicAdvertisingSyncConfiguration
13618    {
13619        #[inline(always)]
13620        fn new_empty() -> Self {
13621            Self::default()
13622        }
13623
13624        unsafe fn decode(
13625            &mut self,
13626            decoder: &mut fidl::encoding::Decoder<'_, D>,
13627            offset: usize,
13628            mut depth: fidl::encoding::Depth,
13629        ) -> fidl::Result<()> {
13630            decoder.debug_check_bounds::<Self>(offset);
13631            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13632                None => return Err(fidl::Error::NotNullable),
13633                Some(len) => len,
13634            };
13635            // Calling decoder.out_of_line_offset(0) is not allowed.
13636            if len == 0 {
13637                return Ok(());
13638            };
13639            depth.increment()?;
13640            let envelope_size = 8;
13641            let bytes_len = len * envelope_size;
13642            let offset = decoder.out_of_line_offset(bytes_len)?;
13643            // Decode the envelope for each type.
13644            let mut _next_ordinal_to_read = 0;
13645            let mut next_offset = offset;
13646            let end_offset = offset + bytes_len;
13647            _next_ordinal_to_read += 1;
13648            if next_offset >= end_offset {
13649                return Ok(());
13650            }
13651
13652            // Decode unknown envelopes for gaps in ordinals.
13653            while _next_ordinal_to_read < 1 {
13654                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13655                _next_ordinal_to_read += 1;
13656                next_offset += envelope_size;
13657            }
13658
13659            let next_out_of_line = decoder.next_out_of_line();
13660            let handles_before = decoder.remaining_handles();
13661            if let Some((inlined, num_bytes, num_handles)) =
13662                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13663            {
13664                let member_inline_size =
13665                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
13666                if inlined != (member_inline_size <= 4) {
13667                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13668                }
13669                let inner_offset;
13670                let mut inner_depth = depth.clone();
13671                if inlined {
13672                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
13673                    inner_offset = next_offset;
13674                } else {
13675                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
13676                    inner_depth.increment()?;
13677                }
13678                let val_ref =
13679                    self.filter_duplicates.get_or_insert_with(|| fidl::new_empty!(bool, D));
13680                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
13681                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
13682                {
13683                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
13684                }
13685                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
13686                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
13687                }
13688            }
13689
13690            next_offset += envelope_size;
13691
13692            // Decode the remaining unknown envelopes.
13693            while next_offset < end_offset {
13694                _next_ordinal_to_read += 1;
13695                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13696                next_offset += envelope_size;
13697            }
13698
13699            Ok(())
13700        }
13701    }
13702
13703    impl PeriodicAdvertisingSyncOnEstablishedRequest {
13704        #[inline(always)]
13705        fn max_ordinal_present(&self) -> u64 {
13706            if let Some(_) = self.periodic_advertising_interval {
13707                return 7;
13708            }
13709            if let Some(_) = self.phy {
13710                return 6;
13711            }
13712            if let Some(_) = self.advertising_sid {
13713                return 5;
13714            }
13715            if let Some(_) = self.service_data {
13716                return 4;
13717            }
13718            if let Some(_) = self.peer_id {
13719                return 3;
13720            }
13721            if let Some(_) = self.subevents_count {
13722                return 2;
13723            }
13724            if let Some(_) = self.id {
13725                return 1;
13726            }
13727            0
13728        }
13729    }
13730
13731    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
13732        type Borrowed<'a> = &'a Self;
13733        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
13734            value
13735        }
13736    }
13737
13738    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncOnEstablishedRequest {
13739        type Owned = Self;
13740
13741        #[inline(always)]
13742        fn inline_align(_context: fidl::encoding::Context) -> usize {
13743            8
13744        }
13745
13746        #[inline(always)]
13747        fn inline_size(_context: fidl::encoding::Context) -> usize {
13748            16
13749        }
13750    }
13751
13752    unsafe impl<D: fidl::encoding::ResourceDialect>
13753        fidl::encoding::Encode<PeriodicAdvertisingSyncOnEstablishedRequest, D>
13754        for &PeriodicAdvertisingSyncOnEstablishedRequest
13755    {
13756        unsafe fn encode(
13757            self,
13758            encoder: &mut fidl::encoding::Encoder<'_, D>,
13759            offset: usize,
13760            mut depth: fidl::encoding::Depth,
13761        ) -> fidl::Result<()> {
13762            encoder.debug_check_bounds::<PeriodicAdvertisingSyncOnEstablishedRequest>(offset);
13763            // Vector header
13764            let max_ordinal: u64 = self.max_ordinal_present();
13765            encoder.write_num(max_ordinal, offset);
13766            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
13767            // Calling encoder.out_of_line_offset(0) is not allowed.
13768            if max_ordinal == 0 {
13769                return Ok(());
13770            }
13771            depth.increment()?;
13772            let envelope_size = 8;
13773            let bytes_len = max_ordinal as usize * envelope_size;
13774            #[allow(unused_variables)]
13775            let offset = encoder.out_of_line_offset(bytes_len);
13776            let mut _prev_end_offset: usize = 0;
13777            if 1 > max_ordinal {
13778                return Ok(());
13779            }
13780
13781            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13782            // are envelope_size bytes.
13783            let cur_offset: usize = (1 - 1) * envelope_size;
13784
13785            // Zero reserved fields.
13786            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13787
13788            // Safety:
13789            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13790            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13791            //   envelope_size bytes, there is always sufficient room.
13792            fidl::encoding::encode_in_envelope_optional::<PeriodicAdvertisingSyncId, D>(
13793                self.id
13794                    .as_ref()
13795                    .map(<PeriodicAdvertisingSyncId as fidl::encoding::ValueTypeMarker>::borrow),
13796                encoder,
13797                offset + cur_offset,
13798                depth,
13799            )?;
13800
13801            _prev_end_offset = cur_offset + envelope_size;
13802            if 2 > max_ordinal {
13803                return Ok(());
13804            }
13805
13806            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13807            // are envelope_size bytes.
13808            let cur_offset: usize = (2 - 1) * envelope_size;
13809
13810            // Zero reserved fields.
13811            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13812
13813            // Safety:
13814            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13815            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13816            //   envelope_size bytes, there is always sufficient room.
13817            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13818                self.subevents_count.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13819                encoder,
13820                offset + cur_offset,
13821                depth,
13822            )?;
13823
13824            _prev_end_offset = cur_offset + envelope_size;
13825            if 3 > max_ordinal {
13826                return Ok(());
13827            }
13828
13829            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13830            // are envelope_size bytes.
13831            let cur_offset: usize = (3 - 1) * envelope_size;
13832
13833            // Zero reserved fields.
13834            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13835
13836            // Safety:
13837            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13838            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13839            //   envelope_size bytes, there is always sufficient room.
13840            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::PeerId, D>(
13841            self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
13842            encoder, offset + cur_offset, depth
13843        )?;
13844
13845            _prev_end_offset = cur_offset + envelope_size;
13846            if 4 > max_ordinal {
13847                return Ok(());
13848            }
13849
13850            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13851            // are envelope_size bytes.
13852            let cur_offset: usize = (4 - 1) * envelope_size;
13853
13854            // Zero reserved fields.
13855            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13856
13857            // Safety:
13858            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13859            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13860            //   envelope_size bytes, there is always sufficient room.
13861            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13862                self.service_data.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13863                encoder,
13864                offset + cur_offset,
13865                depth,
13866            )?;
13867
13868            _prev_end_offset = cur_offset + envelope_size;
13869            if 5 > max_ordinal {
13870                return Ok(());
13871            }
13872
13873            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13874            // are envelope_size bytes.
13875            let cur_offset: usize = (5 - 1) * envelope_size;
13876
13877            // Zero reserved fields.
13878            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13879
13880            // Safety:
13881            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13882            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13883            //   envelope_size bytes, there is always sufficient room.
13884            fidl::encoding::encode_in_envelope_optional::<u8, D>(
13885                self.advertising_sid.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
13886                encoder,
13887                offset + cur_offset,
13888                depth,
13889            )?;
13890
13891            _prev_end_offset = cur_offset + envelope_size;
13892            if 6 > max_ordinal {
13893                return Ok(());
13894            }
13895
13896            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13897            // are envelope_size bytes.
13898            let cur_offset: usize = (6 - 1) * envelope_size;
13899
13900            // Zero reserved fields.
13901            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13902
13903            // Safety:
13904            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13905            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13906            //   envelope_size bytes, there is always sufficient room.
13907            fidl::encoding::encode_in_envelope_optional::<PhysicalLayer, D>(
13908                self.phy.as_ref().map(<PhysicalLayer as fidl::encoding::ValueTypeMarker>::borrow),
13909                encoder,
13910                offset + cur_offset,
13911                depth,
13912            )?;
13913
13914            _prev_end_offset = cur_offset + envelope_size;
13915            if 7 > max_ordinal {
13916                return Ok(());
13917            }
13918
13919            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
13920            // are envelope_size bytes.
13921            let cur_offset: usize = (7 - 1) * envelope_size;
13922
13923            // Zero reserved fields.
13924            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
13925
13926            // Safety:
13927            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
13928            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
13929            //   envelope_size bytes, there is always sufficient room.
13930            fidl::encoding::encode_in_envelope_optional::<u16, D>(
13931                self.periodic_advertising_interval
13932                    .as_ref()
13933                    .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
13934                encoder,
13935                offset + cur_offset,
13936                depth,
13937            )?;
13938
13939            _prev_end_offset = cur_offset + envelope_size;
13940
13941            Ok(())
13942        }
13943    }
13944
13945    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
13946        for PeriodicAdvertisingSyncOnEstablishedRequest
13947    {
13948        #[inline(always)]
13949        fn new_empty() -> Self {
13950            Self::default()
13951        }
13952
13953        unsafe fn decode(
13954            &mut self,
13955            decoder: &mut fidl::encoding::Decoder<'_, D>,
13956            offset: usize,
13957            mut depth: fidl::encoding::Depth,
13958        ) -> fidl::Result<()> {
13959            decoder.debug_check_bounds::<Self>(offset);
13960            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
13961                None => return Err(fidl::Error::NotNullable),
13962                Some(len) => len,
13963            };
13964            // Calling decoder.out_of_line_offset(0) is not allowed.
13965            if len == 0 {
13966                return Ok(());
13967            };
13968            depth.increment()?;
13969            let envelope_size = 8;
13970            let bytes_len = len * envelope_size;
13971            let offset = decoder.out_of_line_offset(bytes_len)?;
13972            // Decode the envelope for each type.
13973            let mut _next_ordinal_to_read = 0;
13974            let mut next_offset = offset;
13975            let end_offset = offset + bytes_len;
13976            _next_ordinal_to_read += 1;
13977            if next_offset >= end_offset {
13978                return Ok(());
13979            }
13980
13981            // Decode unknown envelopes for gaps in ordinals.
13982            while _next_ordinal_to_read < 1 {
13983                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
13984                _next_ordinal_to_read += 1;
13985                next_offset += envelope_size;
13986            }
13987
13988            let next_out_of_line = decoder.next_out_of_line();
13989            let handles_before = decoder.remaining_handles();
13990            if let Some((inlined, num_bytes, num_handles)) =
13991                fidl::encoding::decode_envelope_header(decoder, next_offset)?
13992            {
13993                let member_inline_size =
13994                    <PeriodicAdvertisingSyncId as fidl::encoding::TypeMarker>::inline_size(
13995                        decoder.context,
13996                    );
13997                if inlined != (member_inline_size <= 4) {
13998                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
13999                }
14000                let inner_offset;
14001                let mut inner_depth = depth.clone();
14002                if inlined {
14003                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14004                    inner_offset = next_offset;
14005                } else {
14006                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14007                    inner_depth.increment()?;
14008                }
14009                let val_ref =
14010                    self.id.get_or_insert_with(|| fidl::new_empty!(PeriodicAdvertisingSyncId, D));
14011                fidl::decode!(
14012                    PeriodicAdvertisingSyncId,
14013                    D,
14014                    val_ref,
14015                    decoder,
14016                    inner_offset,
14017                    inner_depth
14018                )?;
14019                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14020                {
14021                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14022                }
14023                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14024                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14025                }
14026            }
14027
14028            next_offset += envelope_size;
14029            _next_ordinal_to_read += 1;
14030            if next_offset >= end_offset {
14031                return Ok(());
14032            }
14033
14034            // Decode unknown envelopes for gaps in ordinals.
14035            while _next_ordinal_to_read < 2 {
14036                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14037                _next_ordinal_to_read += 1;
14038                next_offset += envelope_size;
14039            }
14040
14041            let next_out_of_line = decoder.next_out_of_line();
14042            let handles_before = decoder.remaining_handles();
14043            if let Some((inlined, num_bytes, num_handles)) =
14044                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14045            {
14046                let member_inline_size =
14047                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14048                if inlined != (member_inline_size <= 4) {
14049                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14050                }
14051                let inner_offset;
14052                let mut inner_depth = depth.clone();
14053                if inlined {
14054                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14055                    inner_offset = next_offset;
14056                } else {
14057                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14058                    inner_depth.increment()?;
14059                }
14060                let val_ref = self.subevents_count.get_or_insert_with(|| fidl::new_empty!(u8, D));
14061                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14062                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14063                {
14064                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14065                }
14066                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14067                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14068                }
14069            }
14070
14071            next_offset += envelope_size;
14072            _next_ordinal_to_read += 1;
14073            if next_offset >= end_offset {
14074                return Ok(());
14075            }
14076
14077            // Decode unknown envelopes for gaps in ordinals.
14078            while _next_ordinal_to_read < 3 {
14079                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14080                _next_ordinal_to_read += 1;
14081                next_offset += envelope_size;
14082            }
14083
14084            let next_out_of_line = decoder.next_out_of_line();
14085            let handles_before = decoder.remaining_handles();
14086            if let Some((inlined, num_bytes, num_handles)) =
14087                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14088            {
14089                let member_inline_size = <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14090                if inlined != (member_inline_size <= 4) {
14091                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14092                }
14093                let inner_offset;
14094                let mut inner_depth = depth.clone();
14095                if inlined {
14096                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14097                    inner_offset = next_offset;
14098                } else {
14099                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14100                    inner_depth.increment()?;
14101                }
14102                let val_ref = self.peer_id.get_or_insert_with(|| {
14103                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D)
14104                });
14105                fidl::decode!(
14106                    fidl_fuchsia_bluetooth__common::PeerId,
14107                    D,
14108                    val_ref,
14109                    decoder,
14110                    inner_offset,
14111                    inner_depth
14112                )?;
14113                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14114                {
14115                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14116                }
14117                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14118                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14119                }
14120            }
14121
14122            next_offset += envelope_size;
14123            _next_ordinal_to_read += 1;
14124            if next_offset >= end_offset {
14125                return Ok(());
14126            }
14127
14128            // Decode unknown envelopes for gaps in ordinals.
14129            while _next_ordinal_to_read < 4 {
14130                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14131                _next_ordinal_to_read += 1;
14132                next_offset += envelope_size;
14133            }
14134
14135            let next_out_of_line = decoder.next_out_of_line();
14136            let handles_before = decoder.remaining_handles();
14137            if let Some((inlined, num_bytes, num_handles)) =
14138                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14139            {
14140                let member_inline_size =
14141                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14142                if inlined != (member_inline_size <= 4) {
14143                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14144                }
14145                let inner_offset;
14146                let mut inner_depth = depth.clone();
14147                if inlined {
14148                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14149                    inner_offset = next_offset;
14150                } else {
14151                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14152                    inner_depth.increment()?;
14153                }
14154                let val_ref = self.service_data.get_or_insert_with(|| fidl::new_empty!(u16, D));
14155                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14156                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14157                {
14158                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14159                }
14160                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14161                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14162                }
14163            }
14164
14165            next_offset += envelope_size;
14166            _next_ordinal_to_read += 1;
14167            if next_offset >= end_offset {
14168                return Ok(());
14169            }
14170
14171            // Decode unknown envelopes for gaps in ordinals.
14172            while _next_ordinal_to_read < 5 {
14173                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14174                _next_ordinal_to_read += 1;
14175                next_offset += envelope_size;
14176            }
14177
14178            let next_out_of_line = decoder.next_out_of_line();
14179            let handles_before = decoder.remaining_handles();
14180            if let Some((inlined, num_bytes, num_handles)) =
14181                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14182            {
14183                let member_inline_size =
14184                    <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14185                if inlined != (member_inline_size <= 4) {
14186                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14187                }
14188                let inner_offset;
14189                let mut inner_depth = depth.clone();
14190                if inlined {
14191                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14192                    inner_offset = next_offset;
14193                } else {
14194                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14195                    inner_depth.increment()?;
14196                }
14197                let val_ref = self.advertising_sid.get_or_insert_with(|| fidl::new_empty!(u8, D));
14198                fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
14199                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14200                {
14201                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14202                }
14203                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14204                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14205                }
14206            }
14207
14208            next_offset += envelope_size;
14209            _next_ordinal_to_read += 1;
14210            if next_offset >= end_offset {
14211                return Ok(());
14212            }
14213
14214            // Decode unknown envelopes for gaps in ordinals.
14215            while _next_ordinal_to_read < 6 {
14216                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14217                _next_ordinal_to_read += 1;
14218                next_offset += envelope_size;
14219            }
14220
14221            let next_out_of_line = decoder.next_out_of_line();
14222            let handles_before = decoder.remaining_handles();
14223            if let Some((inlined, num_bytes, num_handles)) =
14224                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14225            {
14226                let member_inline_size =
14227                    <PhysicalLayer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14228                if inlined != (member_inline_size <= 4) {
14229                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14230                }
14231                let inner_offset;
14232                let mut inner_depth = depth.clone();
14233                if inlined {
14234                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14235                    inner_offset = next_offset;
14236                } else {
14237                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14238                    inner_depth.increment()?;
14239                }
14240                let val_ref = self.phy.get_or_insert_with(|| fidl::new_empty!(PhysicalLayer, D));
14241                fidl::decode!(PhysicalLayer, D, val_ref, decoder, inner_offset, inner_depth)?;
14242                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14243                {
14244                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14245                }
14246                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14247                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14248                }
14249            }
14250
14251            next_offset += envelope_size;
14252            _next_ordinal_to_read += 1;
14253            if next_offset >= end_offset {
14254                return Ok(());
14255            }
14256
14257            // Decode unknown envelopes for gaps in ordinals.
14258            while _next_ordinal_to_read < 7 {
14259                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14260                _next_ordinal_to_read += 1;
14261                next_offset += envelope_size;
14262            }
14263
14264            let next_out_of_line = decoder.next_out_of_line();
14265            let handles_before = decoder.remaining_handles();
14266            if let Some((inlined, num_bytes, num_handles)) =
14267                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14268            {
14269                let member_inline_size =
14270                    <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14271                if inlined != (member_inline_size <= 4) {
14272                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14273                }
14274                let inner_offset;
14275                let mut inner_depth = depth.clone();
14276                if inlined {
14277                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14278                    inner_offset = next_offset;
14279                } else {
14280                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14281                    inner_depth.increment()?;
14282                }
14283                let val_ref = self
14284                    .periodic_advertising_interval
14285                    .get_or_insert_with(|| fidl::new_empty!(u16, D));
14286                fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
14287                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14288                {
14289                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14290                }
14291                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14292                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14293                }
14294            }
14295
14296            next_offset += envelope_size;
14297
14298            // Decode the remaining unknown envelopes.
14299            while next_offset < end_offset {
14300                _next_ordinal_to_read += 1;
14301                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14302                next_offset += envelope_size;
14303            }
14304
14305            Ok(())
14306        }
14307    }
14308
14309    impl PeriodicAdvertisingSyncSyncToSubeventsRequest {
14310        #[inline(always)]
14311        fn max_ordinal_present(&self) -> u64 {
14312            if let Some(_) = self.subevents {
14313                return 1;
14314            }
14315            0
14316        }
14317    }
14318
14319    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14320        type Borrowed<'a> = &'a Self;
14321        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14322            value
14323        }
14324    }
14325
14326    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncSyncToSubeventsRequest {
14327        type Owned = Self;
14328
14329        #[inline(always)]
14330        fn inline_align(_context: fidl::encoding::Context) -> usize {
14331            8
14332        }
14333
14334        #[inline(always)]
14335        fn inline_size(_context: fidl::encoding::Context) -> usize {
14336            16
14337        }
14338    }
14339
14340    unsafe impl<D: fidl::encoding::ResourceDialect>
14341        fidl::encoding::Encode<PeriodicAdvertisingSyncSyncToSubeventsRequest, D>
14342        for &PeriodicAdvertisingSyncSyncToSubeventsRequest
14343    {
14344        unsafe fn encode(
14345            self,
14346            encoder: &mut fidl::encoding::Encoder<'_, D>,
14347            offset: usize,
14348            mut depth: fidl::encoding::Depth,
14349        ) -> fidl::Result<()> {
14350            encoder.debug_check_bounds::<PeriodicAdvertisingSyncSyncToSubeventsRequest>(offset);
14351            // Vector header
14352            let max_ordinal: u64 = self.max_ordinal_present();
14353            encoder.write_num(max_ordinal, offset);
14354            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14355            // Calling encoder.out_of_line_offset(0) is not allowed.
14356            if max_ordinal == 0 {
14357                return Ok(());
14358            }
14359            depth.increment()?;
14360            let envelope_size = 8;
14361            let bytes_len = max_ordinal as usize * envelope_size;
14362            #[allow(unused_variables)]
14363            let offset = encoder.out_of_line_offset(bytes_len);
14364            let mut _prev_end_offset: usize = 0;
14365            if 1 > max_ordinal {
14366                return Ok(());
14367            }
14368
14369            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14370            // are envelope_size bytes.
14371            let cur_offset: usize = (1 - 1) * envelope_size;
14372
14373            // Zero reserved fields.
14374            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14375
14376            // Safety:
14377            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14378            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14379            //   envelope_size bytes, there is always sufficient room.
14380            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 128>, D>(
14381                self.subevents.as_ref().map(
14382                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::ValueTypeMarker>::borrow,
14383                ),
14384                encoder,
14385                offset + cur_offset,
14386                depth,
14387            )?;
14388
14389            _prev_end_offset = cur_offset + envelope_size;
14390
14391            Ok(())
14392        }
14393    }
14394
14395    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14396        for PeriodicAdvertisingSyncSyncToSubeventsRequest
14397    {
14398        #[inline(always)]
14399        fn new_empty() -> Self {
14400            Self::default()
14401        }
14402
14403        unsafe fn decode(
14404            &mut self,
14405            decoder: &mut fidl::encoding::Decoder<'_, D>,
14406            offset: usize,
14407            mut depth: fidl::encoding::Depth,
14408        ) -> fidl::Result<()> {
14409            decoder.debug_check_bounds::<Self>(offset);
14410            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14411                None => return Err(fidl::Error::NotNullable),
14412                Some(len) => len,
14413            };
14414            // Calling decoder.out_of_line_offset(0) is not allowed.
14415            if len == 0 {
14416                return Ok(());
14417            };
14418            depth.increment()?;
14419            let envelope_size = 8;
14420            let bytes_len = len * envelope_size;
14421            let offset = decoder.out_of_line_offset(bytes_len)?;
14422            // Decode the envelope for each type.
14423            let mut _next_ordinal_to_read = 0;
14424            let mut next_offset = offset;
14425            let end_offset = offset + bytes_len;
14426            _next_ordinal_to_read += 1;
14427            if next_offset >= end_offset {
14428                return Ok(());
14429            }
14430
14431            // Decode unknown envelopes for gaps in ordinals.
14432            while _next_ordinal_to_read < 1 {
14433                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14434                _next_ordinal_to_read += 1;
14435                next_offset += envelope_size;
14436            }
14437
14438            let next_out_of_line = decoder.next_out_of_line();
14439            let handles_before = decoder.remaining_handles();
14440            if let Some((inlined, num_bytes, num_handles)) =
14441                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14442            {
14443                let member_inline_size =
14444                    <fidl::encoding::Vector<u8, 128> as fidl::encoding::TypeMarker>::inline_size(
14445                        decoder.context,
14446                    );
14447                if inlined != (member_inline_size <= 4) {
14448                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14449                }
14450                let inner_offset;
14451                let mut inner_depth = depth.clone();
14452                if inlined {
14453                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14454                    inner_offset = next_offset;
14455                } else {
14456                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14457                    inner_depth.increment()?;
14458                }
14459                let val_ref = self
14460                    .subevents
14461                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 128>, D));
14462                fidl::decode!(fidl::encoding::Vector<u8, 128>, D, val_ref, decoder, inner_offset, inner_depth)?;
14463                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14464                {
14465                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14466                }
14467                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14468                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14469                }
14470            }
14471
14472            next_offset += envelope_size;
14473
14474            // Decode the remaining unknown envelopes.
14475            while next_offset < end_offset {
14476                _next_ordinal_to_read += 1;
14477                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14478                next_offset += envelope_size;
14479            }
14480
14481            Ok(())
14482        }
14483    }
14484
14485    impl PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14486        #[inline(always)]
14487        fn max_ordinal_present(&self) -> u64 {
14488            if let Some(_) = self.reports {
14489                return 1;
14490            }
14491            0
14492        }
14493    }
14494
14495    impl fidl::encoding::ValueTypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14496        type Borrowed<'a> = &'a Self;
14497        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14498            value
14499        }
14500    }
14501
14502    unsafe impl fidl::encoding::TypeMarker for PeriodicAdvertisingSyncWatchAdvertisingReportResponse {
14503        type Owned = Self;
14504
14505        #[inline(always)]
14506        fn inline_align(_context: fidl::encoding::Context) -> usize {
14507            8
14508        }
14509
14510        #[inline(always)]
14511        fn inline_size(_context: fidl::encoding::Context) -> usize {
14512            16
14513        }
14514    }
14515
14516    unsafe impl<D: fidl::encoding::ResourceDialect>
14517        fidl::encoding::Encode<PeriodicAdvertisingSyncWatchAdvertisingReportResponse, D>
14518        for &PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14519    {
14520        unsafe fn encode(
14521            self,
14522            encoder: &mut fidl::encoding::Encoder<'_, D>,
14523            offset: usize,
14524            mut depth: fidl::encoding::Depth,
14525        ) -> fidl::Result<()> {
14526            encoder.debug_check_bounds::<PeriodicAdvertisingSyncWatchAdvertisingReportResponse>(
14527                offset,
14528            );
14529            // Vector header
14530            let max_ordinal: u64 = self.max_ordinal_present();
14531            encoder.write_num(max_ordinal, offset);
14532            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14533            // Calling encoder.out_of_line_offset(0) is not allowed.
14534            if max_ordinal == 0 {
14535                return Ok(());
14536            }
14537            depth.increment()?;
14538            let envelope_size = 8;
14539            let bytes_len = max_ordinal as usize * envelope_size;
14540            #[allow(unused_variables)]
14541            let offset = encoder.out_of_line_offset(bytes_len);
14542            let mut _prev_end_offset: usize = 0;
14543            if 1 > max_ordinal {
14544                return Ok(());
14545            }
14546
14547            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14548            // are envelope_size bytes.
14549            let cur_offset: usize = (1 - 1) * envelope_size;
14550
14551            // Zero reserved fields.
14552            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14553
14554            // Safety:
14555            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14556            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14557            //   envelope_size bytes, there is always sufficient room.
14558            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<SyncReport>, D>(
14559            self.reports.as_ref().map(<fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::ValueTypeMarker>::borrow),
14560            encoder, offset + cur_offset, depth
14561        )?;
14562
14563            _prev_end_offset = cur_offset + envelope_size;
14564
14565            Ok(())
14566        }
14567    }
14568
14569    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
14570        for PeriodicAdvertisingSyncWatchAdvertisingReportResponse
14571    {
14572        #[inline(always)]
14573        fn new_empty() -> Self {
14574            Self::default()
14575        }
14576
14577        unsafe fn decode(
14578            &mut self,
14579            decoder: &mut fidl::encoding::Decoder<'_, D>,
14580            offset: usize,
14581            mut depth: fidl::encoding::Depth,
14582        ) -> fidl::Result<()> {
14583            decoder.debug_check_bounds::<Self>(offset);
14584            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14585                None => return Err(fidl::Error::NotNullable),
14586                Some(len) => len,
14587            };
14588            // Calling decoder.out_of_line_offset(0) is not allowed.
14589            if len == 0 {
14590                return Ok(());
14591            };
14592            depth.increment()?;
14593            let envelope_size = 8;
14594            let bytes_len = len * envelope_size;
14595            let offset = decoder.out_of_line_offset(bytes_len)?;
14596            // Decode the envelope for each type.
14597            let mut _next_ordinal_to_read = 0;
14598            let mut next_offset = offset;
14599            let end_offset = offset + bytes_len;
14600            _next_ordinal_to_read += 1;
14601            if next_offset >= end_offset {
14602                return Ok(());
14603            }
14604
14605            // Decode unknown envelopes for gaps in ordinals.
14606            while _next_ordinal_to_read < 1 {
14607                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14608                _next_ordinal_to_read += 1;
14609                next_offset += envelope_size;
14610            }
14611
14612            let next_out_of_line = decoder.next_out_of_line();
14613            let handles_before = decoder.remaining_handles();
14614            if let Some((inlined, num_bytes, num_handles)) =
14615                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14616            {
14617                let member_inline_size = <fidl::encoding::UnboundedVector<SyncReport> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14618                if inlined != (member_inline_size <= 4) {
14619                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14620                }
14621                let inner_offset;
14622                let mut inner_depth = depth.clone();
14623                if inlined {
14624                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14625                    inner_offset = next_offset;
14626                } else {
14627                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14628                    inner_depth.increment()?;
14629                }
14630                let val_ref = self.reports.get_or_insert_with(|| {
14631                    fidl::new_empty!(fidl::encoding::UnboundedVector<SyncReport>, D)
14632                });
14633                fidl::decode!(
14634                    fidl::encoding::UnboundedVector<SyncReport>,
14635                    D,
14636                    val_ref,
14637                    decoder,
14638                    inner_offset,
14639                    inner_depth
14640                )?;
14641                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14642                {
14643                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14644                }
14645                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14646                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14647                }
14648            }
14649
14650            next_offset += envelope_size;
14651
14652            // Decode the remaining unknown envelopes.
14653            while next_offset < end_offset {
14654                _next_ordinal_to_read += 1;
14655                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14656                next_offset += envelope_size;
14657            }
14658
14659            Ok(())
14660        }
14661    }
14662
14663    impl ScanData {
14664        #[inline(always)]
14665        fn max_ordinal_present(&self) -> u64 {
14666            if let Some(_) = self.timestamp {
14667                return 7;
14668            }
14669            if let Some(_) = self.uris {
14670                return 6;
14671            }
14672            if let Some(_) = self.manufacturer_data {
14673                return 5;
14674            }
14675            if let Some(_) = self.service_data {
14676                return 4;
14677            }
14678            if let Some(_) = self.service_uuids {
14679                return 3;
14680            }
14681            if let Some(_) = self.appearance {
14682                return 2;
14683            }
14684            if let Some(_) = self.tx_power {
14685                return 1;
14686            }
14687            0
14688        }
14689    }
14690
14691    impl fidl::encoding::ValueTypeMarker for ScanData {
14692        type Borrowed<'a> = &'a Self;
14693        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
14694            value
14695        }
14696    }
14697
14698    unsafe impl fidl::encoding::TypeMarker for ScanData {
14699        type Owned = Self;
14700
14701        #[inline(always)]
14702        fn inline_align(_context: fidl::encoding::Context) -> usize {
14703            8
14704        }
14705
14706        #[inline(always)]
14707        fn inline_size(_context: fidl::encoding::Context) -> usize {
14708            16
14709        }
14710    }
14711
14712    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanData, D> for &ScanData {
14713        unsafe fn encode(
14714            self,
14715            encoder: &mut fidl::encoding::Encoder<'_, D>,
14716            offset: usize,
14717            mut depth: fidl::encoding::Depth,
14718        ) -> fidl::Result<()> {
14719            encoder.debug_check_bounds::<ScanData>(offset);
14720            // Vector header
14721            let max_ordinal: u64 = self.max_ordinal_present();
14722            encoder.write_num(max_ordinal, offset);
14723            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
14724            // Calling encoder.out_of_line_offset(0) is not allowed.
14725            if max_ordinal == 0 {
14726                return Ok(());
14727            }
14728            depth.increment()?;
14729            let envelope_size = 8;
14730            let bytes_len = max_ordinal as usize * envelope_size;
14731            #[allow(unused_variables)]
14732            let offset = encoder.out_of_line_offset(bytes_len);
14733            let mut _prev_end_offset: usize = 0;
14734            if 1 > max_ordinal {
14735                return Ok(());
14736            }
14737
14738            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14739            // are envelope_size bytes.
14740            let cur_offset: usize = (1 - 1) * envelope_size;
14741
14742            // Zero reserved fields.
14743            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14744
14745            // Safety:
14746            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14747            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14748            //   envelope_size bytes, there is always sufficient room.
14749            fidl::encoding::encode_in_envelope_optional::<i8, D>(
14750                self.tx_power.as_ref().map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
14751                encoder,
14752                offset + cur_offset,
14753                depth,
14754            )?;
14755
14756            _prev_end_offset = cur_offset + envelope_size;
14757            if 2 > max_ordinal {
14758                return Ok(());
14759            }
14760
14761            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14762            // are envelope_size bytes.
14763            let cur_offset: usize = (2 - 1) * envelope_size;
14764
14765            // Zero reserved fields.
14766            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14767
14768            // Safety:
14769            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14770            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14771            //   envelope_size bytes, there is always sufficient room.
14772            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Appearance, D>(
14773            self.appearance.as_ref().map(<fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::ValueTypeMarker>::borrow),
14774            encoder, offset + cur_offset, depth
14775        )?;
14776
14777            _prev_end_offset = cur_offset + envelope_size;
14778            if 3 > max_ordinal {
14779                return Ok(());
14780            }
14781
14782            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14783            // are envelope_size bytes.
14784            let cur_offset: usize = (3 - 1) * envelope_size;
14785
14786            // Zero reserved fields.
14787            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14788
14789            // Safety:
14790            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14791            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14792            //   envelope_size bytes, there is always sufficient room.
14793            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>, D>(
14794            self.service_uuids.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid> as fidl::encoding::ValueTypeMarker>::borrow),
14795            encoder, offset + cur_offset, depth
14796        )?;
14797
14798            _prev_end_offset = cur_offset + envelope_size;
14799            if 4 > max_ordinal {
14800                return Ok(());
14801            }
14802
14803            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14804            // are envelope_size bytes.
14805            let cur_offset: usize = (4 - 1) * envelope_size;
14806
14807            // Zero reserved fields.
14808            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14809
14810            // Safety:
14811            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14812            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14813            //   envelope_size bytes, there is always sufficient room.
14814            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ServiceData>, D>(
14815            self.service_data.as_ref().map(<fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::ValueTypeMarker>::borrow),
14816            encoder, offset + cur_offset, depth
14817        )?;
14818
14819            _prev_end_offset = cur_offset + envelope_size;
14820            if 5 > max_ordinal {
14821                return Ok(());
14822            }
14823
14824            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14825            // are envelope_size bytes.
14826            let cur_offset: usize = (5 - 1) * envelope_size;
14827
14828            // Zero reserved fields.
14829            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14830
14831            // Safety:
14832            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14833            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14834            //   envelope_size bytes, there is always sufficient room.
14835            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ManufacturerData>, D>(
14836            self.manufacturer_data.as_ref().map(<fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::ValueTypeMarker>::borrow),
14837            encoder, offset + cur_offset, depth
14838        )?;
14839
14840            _prev_end_offset = cur_offset + envelope_size;
14841            if 6 > max_ordinal {
14842                return Ok(());
14843            }
14844
14845            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14846            // are envelope_size bytes.
14847            let cur_offset: usize = (6 - 1) * envelope_size;
14848
14849            // Zero reserved fields.
14850            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14851
14852            // Safety:
14853            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14854            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14855            //   envelope_size bytes, there is always sufficient room.
14856            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>, D>(
14857            self.uris.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>> as fidl::encoding::ValueTypeMarker>::borrow),
14858            encoder, offset + cur_offset, depth
14859        )?;
14860
14861            _prev_end_offset = cur_offset + envelope_size;
14862            if 7 > max_ordinal {
14863                return Ok(());
14864            }
14865
14866            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
14867            // are envelope_size bytes.
14868            let cur_offset: usize = (7 - 1) * envelope_size;
14869
14870            // Zero reserved fields.
14871            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
14872
14873            // Safety:
14874            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
14875            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
14876            //   envelope_size bytes, there is always sufficient room.
14877            fidl::encoding::encode_in_envelope_optional::<i64, D>(
14878                self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
14879                encoder,
14880                offset + cur_offset,
14881                depth,
14882            )?;
14883
14884            _prev_end_offset = cur_offset + envelope_size;
14885
14886            Ok(())
14887        }
14888    }
14889
14890    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanData {
14891        #[inline(always)]
14892        fn new_empty() -> Self {
14893            Self::default()
14894        }
14895
14896        unsafe fn decode(
14897            &mut self,
14898            decoder: &mut fidl::encoding::Decoder<'_, D>,
14899            offset: usize,
14900            mut depth: fidl::encoding::Depth,
14901        ) -> fidl::Result<()> {
14902            decoder.debug_check_bounds::<Self>(offset);
14903            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
14904                None => return Err(fidl::Error::NotNullable),
14905                Some(len) => len,
14906            };
14907            // Calling decoder.out_of_line_offset(0) is not allowed.
14908            if len == 0 {
14909                return Ok(());
14910            };
14911            depth.increment()?;
14912            let envelope_size = 8;
14913            let bytes_len = len * envelope_size;
14914            let offset = decoder.out_of_line_offset(bytes_len)?;
14915            // Decode the envelope for each type.
14916            let mut _next_ordinal_to_read = 0;
14917            let mut next_offset = offset;
14918            let end_offset = offset + bytes_len;
14919            _next_ordinal_to_read += 1;
14920            if next_offset >= end_offset {
14921                return Ok(());
14922            }
14923
14924            // Decode unknown envelopes for gaps in ordinals.
14925            while _next_ordinal_to_read < 1 {
14926                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14927                _next_ordinal_to_read += 1;
14928                next_offset += envelope_size;
14929            }
14930
14931            let next_out_of_line = decoder.next_out_of_line();
14932            let handles_before = decoder.remaining_handles();
14933            if let Some((inlined, num_bytes, num_handles)) =
14934                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14935            {
14936                let member_inline_size =
14937                    <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14938                if inlined != (member_inline_size <= 4) {
14939                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14940                }
14941                let inner_offset;
14942                let mut inner_depth = depth.clone();
14943                if inlined {
14944                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14945                    inner_offset = next_offset;
14946                } else {
14947                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14948                    inner_depth.increment()?;
14949                }
14950                let val_ref = self.tx_power.get_or_insert_with(|| fidl::new_empty!(i8, D));
14951                fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
14952                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
14953                {
14954                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
14955                }
14956                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
14957                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
14958                }
14959            }
14960
14961            next_offset += envelope_size;
14962            _next_ordinal_to_read += 1;
14963            if next_offset >= end_offset {
14964                return Ok(());
14965            }
14966
14967            // Decode unknown envelopes for gaps in ordinals.
14968            while _next_ordinal_to_read < 2 {
14969                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
14970                _next_ordinal_to_read += 1;
14971                next_offset += envelope_size;
14972            }
14973
14974            let next_out_of_line = decoder.next_out_of_line();
14975            let handles_before = decoder.remaining_handles();
14976            if let Some((inlined, num_bytes, num_handles)) =
14977                fidl::encoding::decode_envelope_header(decoder, next_offset)?
14978            {
14979                let member_inline_size = <fidl_fuchsia_bluetooth__common::Appearance as fidl::encoding::TypeMarker>::inline_size(decoder.context);
14980                if inlined != (member_inline_size <= 4) {
14981                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
14982                }
14983                let inner_offset;
14984                let mut inner_depth = depth.clone();
14985                if inlined {
14986                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
14987                    inner_offset = next_offset;
14988                } else {
14989                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
14990                    inner_depth.increment()?;
14991                }
14992                let val_ref = self.appearance.get_or_insert_with(|| {
14993                    fidl::new_empty!(fidl_fuchsia_bluetooth__common::Appearance, D)
14994                });
14995                fidl::decode!(
14996                    fidl_fuchsia_bluetooth__common::Appearance,
14997                    D,
14998                    val_ref,
14999                    decoder,
15000                    inner_offset,
15001                    inner_depth
15002                )?;
15003                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15004                {
15005                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15006                }
15007                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15008                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15009                }
15010            }
15011
15012            next_offset += envelope_size;
15013            _next_ordinal_to_read += 1;
15014            if next_offset >= end_offset {
15015                return Ok(());
15016            }
15017
15018            // Decode unknown envelopes for gaps in ordinals.
15019            while _next_ordinal_to_read < 3 {
15020                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15021                _next_ordinal_to_read += 1;
15022                next_offset += envelope_size;
15023            }
15024
15025            let next_out_of_line = decoder.next_out_of_line();
15026            let handles_before = decoder.remaining_handles();
15027            if let Some((inlined, num_bytes, num_handles)) =
15028                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15029            {
15030                let member_inline_size = <fidl::encoding::UnboundedVector<
15031                    fidl_fuchsia_bluetooth__common::Uuid,
15032                > as fidl::encoding::TypeMarker>::inline_size(
15033                    decoder.context
15034                );
15035                if inlined != (member_inline_size <= 4) {
15036                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15037                }
15038                let inner_offset;
15039                let mut inner_depth = depth.clone();
15040                if inlined {
15041                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15042                    inner_offset = next_offset;
15043                } else {
15044                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15045                    inner_depth.increment()?;
15046                }
15047                let val_ref = self.service_uuids.get_or_insert_with(|| {
15048                    fidl::new_empty!(
15049                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15050                        D
15051                    )
15052                });
15053                fidl::decode!(
15054                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth__common::Uuid>,
15055                    D,
15056                    val_ref,
15057                    decoder,
15058                    inner_offset,
15059                    inner_depth
15060                )?;
15061                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15062                {
15063                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15064                }
15065                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15066                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15067                }
15068            }
15069
15070            next_offset += envelope_size;
15071            _next_ordinal_to_read += 1;
15072            if next_offset >= end_offset {
15073                return Ok(());
15074            }
15075
15076            // Decode unknown envelopes for gaps in ordinals.
15077            while _next_ordinal_to_read < 4 {
15078                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15079                _next_ordinal_to_read += 1;
15080                next_offset += envelope_size;
15081            }
15082
15083            let next_out_of_line = decoder.next_out_of_line();
15084            let handles_before = decoder.remaining_handles();
15085            if let Some((inlined, num_bytes, num_handles)) =
15086                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15087            {
15088                let member_inline_size = <fidl::encoding::UnboundedVector<ServiceData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15089                if inlined != (member_inline_size <= 4) {
15090                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15091                }
15092                let inner_offset;
15093                let mut inner_depth = depth.clone();
15094                if inlined {
15095                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15096                    inner_offset = next_offset;
15097                } else {
15098                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15099                    inner_depth.increment()?;
15100                }
15101                let val_ref = self.service_data.get_or_insert_with(|| {
15102                    fidl::new_empty!(fidl::encoding::UnboundedVector<ServiceData>, D)
15103                });
15104                fidl::decode!(
15105                    fidl::encoding::UnboundedVector<ServiceData>,
15106                    D,
15107                    val_ref,
15108                    decoder,
15109                    inner_offset,
15110                    inner_depth
15111                )?;
15112                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15113                {
15114                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15115                }
15116                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15117                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15118                }
15119            }
15120
15121            next_offset += envelope_size;
15122            _next_ordinal_to_read += 1;
15123            if next_offset >= end_offset {
15124                return Ok(());
15125            }
15126
15127            // Decode unknown envelopes for gaps in ordinals.
15128            while _next_ordinal_to_read < 5 {
15129                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15130                _next_ordinal_to_read += 1;
15131                next_offset += envelope_size;
15132            }
15133
15134            let next_out_of_line = decoder.next_out_of_line();
15135            let handles_before = decoder.remaining_handles();
15136            if let Some((inlined, num_bytes, num_handles)) =
15137                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15138            {
15139                let member_inline_size = <fidl::encoding::UnboundedVector<ManufacturerData> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15140                if inlined != (member_inline_size <= 4) {
15141                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15142                }
15143                let inner_offset;
15144                let mut inner_depth = depth.clone();
15145                if inlined {
15146                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15147                    inner_offset = next_offset;
15148                } else {
15149                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15150                    inner_depth.increment()?;
15151                }
15152                let val_ref = self.manufacturer_data.get_or_insert_with(|| {
15153                    fidl::new_empty!(fidl::encoding::UnboundedVector<ManufacturerData>, D)
15154                });
15155                fidl::decode!(
15156                    fidl::encoding::UnboundedVector<ManufacturerData>,
15157                    D,
15158                    val_ref,
15159                    decoder,
15160                    inner_offset,
15161                    inner_depth
15162                )?;
15163                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15164                {
15165                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15166                }
15167                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15168                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15169                }
15170            }
15171
15172            next_offset += envelope_size;
15173            _next_ordinal_to_read += 1;
15174            if next_offset >= end_offset {
15175                return Ok(());
15176            }
15177
15178            // Decode unknown envelopes for gaps in ordinals.
15179            while _next_ordinal_to_read < 6 {
15180                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15181                _next_ordinal_to_read += 1;
15182                next_offset += envelope_size;
15183            }
15184
15185            let next_out_of_line = decoder.next_out_of_line();
15186            let handles_before = decoder.remaining_handles();
15187            if let Some((inlined, num_bytes, num_handles)) =
15188                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15189            {
15190                let member_inline_size = <fidl::encoding::UnboundedVector<
15191                    fidl::encoding::BoundedString<278>,
15192                > as fidl::encoding::TypeMarker>::inline_size(
15193                    decoder.context
15194                );
15195                if inlined != (member_inline_size <= 4) {
15196                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15197                }
15198                let inner_offset;
15199                let mut inner_depth = depth.clone();
15200                if inlined {
15201                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15202                    inner_offset = next_offset;
15203                } else {
15204                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15205                    inner_depth.increment()?;
15206                }
15207                let val_ref = self.uris.get_or_insert_with(|| {
15208                    fidl::new_empty!(
15209                        fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15210                        D
15211                    )
15212                });
15213                fidl::decode!(
15214                    fidl::encoding::UnboundedVector<fidl::encoding::BoundedString<278>>,
15215                    D,
15216                    val_ref,
15217                    decoder,
15218                    inner_offset,
15219                    inner_depth
15220                )?;
15221                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15222                {
15223                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15224                }
15225                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15226                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15227                }
15228            }
15229
15230            next_offset += envelope_size;
15231            _next_ordinal_to_read += 1;
15232            if next_offset >= end_offset {
15233                return Ok(());
15234            }
15235
15236            // Decode unknown envelopes for gaps in ordinals.
15237            while _next_ordinal_to_read < 7 {
15238                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15239                _next_ordinal_to_read += 1;
15240                next_offset += envelope_size;
15241            }
15242
15243            let next_out_of_line = decoder.next_out_of_line();
15244            let handles_before = decoder.remaining_handles();
15245            if let Some((inlined, num_bytes, num_handles)) =
15246                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15247            {
15248                let member_inline_size =
15249                    <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15250                if inlined != (member_inline_size <= 4) {
15251                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15252                }
15253                let inner_offset;
15254                let mut inner_depth = depth.clone();
15255                if inlined {
15256                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15257                    inner_offset = next_offset;
15258                } else {
15259                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15260                    inner_depth.increment()?;
15261                }
15262                let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
15263                fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
15264                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15265                {
15266                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15267                }
15268                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15269                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15270                }
15271            }
15272
15273            next_offset += envelope_size;
15274
15275            // Decode the remaining unknown envelopes.
15276            while next_offset < end_offset {
15277                _next_ordinal_to_read += 1;
15278                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15279                next_offset += envelope_size;
15280            }
15281
15282            Ok(())
15283        }
15284    }
15285
15286    impl ScanOptions {
15287        #[inline(always)]
15288        fn max_ordinal_present(&self) -> u64 {
15289            if let Some(_) = self.filters {
15290                return 1;
15291            }
15292            0
15293        }
15294    }
15295
15296    impl fidl::encoding::ValueTypeMarker for ScanOptions {
15297        type Borrowed<'a> = &'a Self;
15298        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15299            value
15300        }
15301    }
15302
15303    unsafe impl fidl::encoding::TypeMarker for ScanOptions {
15304        type Owned = Self;
15305
15306        #[inline(always)]
15307        fn inline_align(_context: fidl::encoding::Context) -> usize {
15308            8
15309        }
15310
15311        #[inline(always)]
15312        fn inline_size(_context: fidl::encoding::Context) -> usize {
15313            16
15314        }
15315    }
15316
15317    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOptions, D>
15318        for &ScanOptions
15319    {
15320        unsafe fn encode(
15321            self,
15322            encoder: &mut fidl::encoding::Encoder<'_, D>,
15323            offset: usize,
15324            mut depth: fidl::encoding::Depth,
15325        ) -> fidl::Result<()> {
15326            encoder.debug_check_bounds::<ScanOptions>(offset);
15327            // Vector header
15328            let max_ordinal: u64 = self.max_ordinal_present();
15329            encoder.write_num(max_ordinal, offset);
15330            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
15331            // Calling encoder.out_of_line_offset(0) is not allowed.
15332            if max_ordinal == 0 {
15333                return Ok(());
15334            }
15335            depth.increment()?;
15336            let envelope_size = 8;
15337            let bytes_len = max_ordinal as usize * envelope_size;
15338            #[allow(unused_variables)]
15339            let offset = encoder.out_of_line_offset(bytes_len);
15340            let mut _prev_end_offset: usize = 0;
15341            if 1 > max_ordinal {
15342                return Ok(());
15343            }
15344
15345            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
15346            // are envelope_size bytes.
15347            let cur_offset: usize = (1 - 1) * envelope_size;
15348
15349            // Zero reserved fields.
15350            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
15351
15352            // Safety:
15353            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
15354            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
15355            //   envelope_size bytes, there is always sufficient room.
15356            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<Filter>, D>(
15357            self.filters.as_ref().map(<fidl::encoding::UnboundedVector<Filter> as fidl::encoding::ValueTypeMarker>::borrow),
15358            encoder, offset + cur_offset, depth
15359        )?;
15360
15361            _prev_end_offset = cur_offset + envelope_size;
15362
15363            Ok(())
15364        }
15365    }
15366
15367    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOptions {
15368        #[inline(always)]
15369        fn new_empty() -> Self {
15370            Self::default()
15371        }
15372
15373        unsafe fn decode(
15374            &mut self,
15375            decoder: &mut fidl::encoding::Decoder<'_, D>,
15376            offset: usize,
15377            mut depth: fidl::encoding::Depth,
15378        ) -> fidl::Result<()> {
15379            decoder.debug_check_bounds::<Self>(offset);
15380            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
15381                None => return Err(fidl::Error::NotNullable),
15382                Some(len) => len,
15383            };
15384            // Calling decoder.out_of_line_offset(0) is not allowed.
15385            if len == 0 {
15386                return Ok(());
15387            };
15388            depth.increment()?;
15389            let envelope_size = 8;
15390            let bytes_len = len * envelope_size;
15391            let offset = decoder.out_of_line_offset(bytes_len)?;
15392            // Decode the envelope for each type.
15393            let mut _next_ordinal_to_read = 0;
15394            let mut next_offset = offset;
15395            let end_offset = offset + bytes_len;
15396            _next_ordinal_to_read += 1;
15397            if next_offset >= end_offset {
15398                return Ok(());
15399            }
15400
15401            // Decode unknown envelopes for gaps in ordinals.
15402            while _next_ordinal_to_read < 1 {
15403                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15404                _next_ordinal_to_read += 1;
15405                next_offset += envelope_size;
15406            }
15407
15408            let next_out_of_line = decoder.next_out_of_line();
15409            let handles_before = decoder.remaining_handles();
15410            if let Some((inlined, num_bytes, num_handles)) =
15411                fidl::encoding::decode_envelope_header(decoder, next_offset)?
15412            {
15413                let member_inline_size = <fidl::encoding::UnboundedVector<Filter> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
15414                if inlined != (member_inline_size <= 4) {
15415                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
15416                }
15417                let inner_offset;
15418                let mut inner_depth = depth.clone();
15419                if inlined {
15420                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
15421                    inner_offset = next_offset;
15422                } else {
15423                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15424                    inner_depth.increment()?;
15425                }
15426                let val_ref = self.filters.get_or_insert_with(|| {
15427                    fidl::new_empty!(fidl::encoding::UnboundedVector<Filter>, D)
15428                });
15429                fidl::decode!(
15430                    fidl::encoding::UnboundedVector<Filter>,
15431                    D,
15432                    val_ref,
15433                    decoder,
15434                    inner_offset,
15435                    inner_depth
15436                )?;
15437                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
15438                {
15439                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
15440                }
15441                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15442                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15443                }
15444            }
15445
15446            next_offset += envelope_size;
15447
15448            // Decode the remaining unknown envelopes.
15449            while next_offset < end_offset {
15450                _next_ordinal_to_read += 1;
15451                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
15452                next_offset += envelope_size;
15453            }
15454
15455            Ok(())
15456        }
15457    }
15458
15459    impl fidl::encoding::ValueTypeMarker for AdvertisingProcedure {
15460        type Borrowed<'a> = &'a Self;
15461        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15462            value
15463        }
15464    }
15465
15466    unsafe impl fidl::encoding::TypeMarker for AdvertisingProcedure {
15467        type Owned = Self;
15468
15469        #[inline(always)]
15470        fn inline_align(_context: fidl::encoding::Context) -> usize {
15471            8
15472        }
15473
15474        #[inline(always)]
15475        fn inline_size(_context: fidl::encoding::Context) -> usize {
15476            16
15477        }
15478    }
15479
15480    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingProcedure, D>
15481        for &AdvertisingProcedure
15482    {
15483        #[inline]
15484        unsafe fn encode(
15485            self,
15486            encoder: &mut fidl::encoding::Encoder<'_, D>,
15487            offset: usize,
15488            _depth: fidl::encoding::Depth,
15489        ) -> fidl::Result<()> {
15490            encoder.debug_check_bounds::<AdvertisingProcedure>(offset);
15491            encoder.write_num::<u64>(self.ordinal(), offset);
15492            match self {
15493                AdvertisingProcedure::Legacy(ref val) => {
15494                    fidl::encoding::encode_in_envelope::<Legacy, D>(
15495                        <Legacy as fidl::encoding::ValueTypeMarker>::borrow(val),
15496                        encoder,
15497                        offset + 8,
15498                        _depth,
15499                    )
15500                }
15501                AdvertisingProcedure::Extended(ref val) => {
15502                    fidl::encoding::encode_in_envelope::<Extended, D>(
15503                        <Extended as fidl::encoding::ValueTypeMarker>::borrow(val),
15504                        encoder,
15505                        offset + 8,
15506                        _depth,
15507                    )
15508                }
15509                AdvertisingProcedure::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
15510            }
15511        }
15512    }
15513
15514    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingProcedure {
15515        #[inline(always)]
15516        fn new_empty() -> Self {
15517            Self::__SourceBreaking { unknown_ordinal: 0 }
15518        }
15519
15520        #[inline]
15521        unsafe fn decode(
15522            &mut self,
15523            decoder: &mut fidl::encoding::Decoder<'_, D>,
15524            offset: usize,
15525            mut depth: fidl::encoding::Depth,
15526        ) -> fidl::Result<()> {
15527            decoder.debug_check_bounds::<Self>(offset);
15528            #[allow(unused_variables)]
15529            let next_out_of_line = decoder.next_out_of_line();
15530            let handles_before = decoder.remaining_handles();
15531            let (ordinal, inlined, num_bytes, num_handles) =
15532                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
15533
15534            let member_inline_size = match ordinal {
15535                1 => <Legacy as fidl::encoding::TypeMarker>::inline_size(decoder.context),
15536                2 => <Extended as fidl::encoding::TypeMarker>::inline_size(decoder.context),
15537                0 => return Err(fidl::Error::UnknownUnionTag),
15538                _ => num_bytes as usize,
15539            };
15540
15541            if inlined != (member_inline_size <= 4) {
15542                return Err(fidl::Error::InvalidInlineBitInEnvelope);
15543            }
15544            let _inner_offset;
15545            if inlined {
15546                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
15547                _inner_offset = offset + 8;
15548            } else {
15549                depth.increment()?;
15550                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15551            }
15552            match ordinal {
15553                1 => {
15554                    #[allow(irrefutable_let_patterns)]
15555                    if let AdvertisingProcedure::Legacy(_) = self {
15556                        // Do nothing, read the value into the object
15557                    } else {
15558                        // Initialize `self` to the right variant
15559                        *self = AdvertisingProcedure::Legacy(fidl::new_empty!(Legacy, D));
15560                    }
15561                    #[allow(irrefutable_let_patterns)]
15562                    if let AdvertisingProcedure::Legacy(ref mut val) = self {
15563                        fidl::decode!(Legacy, D, val, decoder, _inner_offset, depth)?;
15564                    } else {
15565                        unreachable!()
15566                    }
15567                }
15568                2 => {
15569                    #[allow(irrefutable_let_patterns)]
15570                    if let AdvertisingProcedure::Extended(_) = self {
15571                        // Do nothing, read the value into the object
15572                    } else {
15573                        // Initialize `self` to the right variant
15574                        *self = AdvertisingProcedure::Extended(fidl::new_empty!(Extended, D));
15575                    }
15576                    #[allow(irrefutable_let_patterns)]
15577                    if let AdvertisingProcedure::Extended(ref mut val) = self {
15578                        fidl::decode!(Extended, D, val, decoder, _inner_offset, depth)?;
15579                    } else {
15580                        unreachable!()
15581                    }
15582                }
15583                #[allow(deprecated)]
15584                ordinal => {
15585                    for _ in 0..num_handles {
15586                        decoder.drop_next_handle()?;
15587                    }
15588                    *self = AdvertisingProcedure::__SourceBreaking { unknown_ordinal: ordinal };
15589                }
15590            }
15591            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
15592                return Err(fidl::Error::InvalidNumBytesInEnvelope);
15593            }
15594            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15595                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15596            }
15597            Ok(())
15598        }
15599    }
15600
15601    impl fidl::encoding::ValueTypeMarker for SyncReport {
15602        type Borrowed<'a> = &'a Self;
15603        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
15604            value
15605        }
15606    }
15607
15608    unsafe impl fidl::encoding::TypeMarker for SyncReport {
15609        type Owned = Self;
15610
15611        #[inline(always)]
15612        fn inline_align(_context: fidl::encoding::Context) -> usize {
15613            8
15614        }
15615
15616        #[inline(always)]
15617        fn inline_size(_context: fidl::encoding::Context) -> usize {
15618            16
15619        }
15620    }
15621
15622    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SyncReport, D>
15623        for &SyncReport
15624    {
15625        #[inline]
15626        unsafe fn encode(
15627            self,
15628            encoder: &mut fidl::encoding::Encoder<'_, D>,
15629            offset: usize,
15630            _depth: fidl::encoding::Depth,
15631        ) -> fidl::Result<()> {
15632            encoder.debug_check_bounds::<SyncReport>(offset);
15633            encoder.write_num::<u64>(self.ordinal(), offset);
15634            match self {
15635            SyncReport::PeriodicAdvertisingReport(ref val) => {
15636                fidl::encoding::encode_in_envelope::<PeriodicAdvertisingReport, D>(
15637                    <PeriodicAdvertisingReport as fidl::encoding::ValueTypeMarker>::borrow(val),
15638                    encoder, offset + 8, _depth
15639                )
15640            }
15641            SyncReport::BroadcastIsochronousGroupInfoReport(ref val) => {
15642                fidl::encoding::encode_in_envelope::<BroadcastIsochronousGroupInfoReport, D>(
15643                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::ValueTypeMarker>::borrow(val),
15644                    encoder, offset + 8, _depth
15645                )
15646            }
15647            SyncReport::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
15648        }
15649        }
15650    }
15651
15652    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SyncReport {
15653        #[inline(always)]
15654        fn new_empty() -> Self {
15655            Self::__SourceBreaking { unknown_ordinal: 0 }
15656        }
15657
15658        #[inline]
15659        unsafe fn decode(
15660            &mut self,
15661            decoder: &mut fidl::encoding::Decoder<'_, D>,
15662            offset: usize,
15663            mut depth: fidl::encoding::Depth,
15664        ) -> fidl::Result<()> {
15665            decoder.debug_check_bounds::<Self>(offset);
15666            #[allow(unused_variables)]
15667            let next_out_of_line = decoder.next_out_of_line();
15668            let handles_before = decoder.remaining_handles();
15669            let (ordinal, inlined, num_bytes, num_handles) =
15670                fidl::encoding::decode_union_inline_portion(decoder, offset)?;
15671
15672            let member_inline_size = match ordinal {
15673                1 => <PeriodicAdvertisingReport as fidl::encoding::TypeMarker>::inline_size(
15674                    decoder.context,
15675                ),
15676                2 => {
15677                    <BroadcastIsochronousGroupInfoReport as fidl::encoding::TypeMarker>::inline_size(
15678                        decoder.context,
15679                    )
15680                }
15681                0 => return Err(fidl::Error::UnknownUnionTag),
15682                _ => num_bytes as usize,
15683            };
15684
15685            if inlined != (member_inline_size <= 4) {
15686                return Err(fidl::Error::InvalidInlineBitInEnvelope);
15687            }
15688            let _inner_offset;
15689            if inlined {
15690                decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
15691                _inner_offset = offset + 8;
15692            } else {
15693                depth.increment()?;
15694                _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
15695            }
15696            match ordinal {
15697                1 => {
15698                    #[allow(irrefutable_let_patterns)]
15699                    if let SyncReport::PeriodicAdvertisingReport(_) = self {
15700                        // Do nothing, read the value into the object
15701                    } else {
15702                        // Initialize `self` to the right variant
15703                        *self = SyncReport::PeriodicAdvertisingReport(fidl::new_empty!(
15704                            PeriodicAdvertisingReport,
15705                            D
15706                        ));
15707                    }
15708                    #[allow(irrefutable_let_patterns)]
15709                    if let SyncReport::PeriodicAdvertisingReport(ref mut val) = self {
15710                        fidl::decode!(
15711                            PeriodicAdvertisingReport,
15712                            D,
15713                            val,
15714                            decoder,
15715                            _inner_offset,
15716                            depth
15717                        )?;
15718                    } else {
15719                        unreachable!()
15720                    }
15721                }
15722                2 => {
15723                    #[allow(irrefutable_let_patterns)]
15724                    if let SyncReport::BroadcastIsochronousGroupInfoReport(_) = self {
15725                        // Do nothing, read the value into the object
15726                    } else {
15727                        // Initialize `self` to the right variant
15728                        *self = SyncReport::BroadcastIsochronousGroupInfoReport(fidl::new_empty!(
15729                            BroadcastIsochronousGroupInfoReport,
15730                            D
15731                        ));
15732                    }
15733                    #[allow(irrefutable_let_patterns)]
15734                    if let SyncReport::BroadcastIsochronousGroupInfoReport(ref mut val) = self {
15735                        fidl::decode!(
15736                            BroadcastIsochronousGroupInfoReport,
15737                            D,
15738                            val,
15739                            decoder,
15740                            _inner_offset,
15741                            depth
15742                        )?;
15743                    } else {
15744                        unreachable!()
15745                    }
15746                }
15747                #[allow(deprecated)]
15748                ordinal => {
15749                    for _ in 0..num_handles {
15750                        decoder.drop_next_handle()?;
15751                    }
15752                    *self = SyncReport::__SourceBreaking { unknown_ordinal: ordinal };
15753                }
15754            }
15755            if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
15756                return Err(fidl::Error::InvalidNumBytesInEnvelope);
15757            }
15758            if handles_before != decoder.remaining_handles() + (num_handles as usize) {
15759                return Err(fidl::Error::InvalidNumHandlesInEnvelope);
15760            }
15761            Ok(())
15762        }
15763    }
15764}