Skip to main content

fidl_fuchsia_bluetooth_affordances_common/
fidl_fuchsia_bluetooth_affordances_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#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12#[repr(u32)]
13pub enum Error {
14    /// Operation failed (check logs).
15    Internal = 1,
16    /// Operation timed out.
17    Timeout = 2,
18    /// One or more required parameters are not set.
19    MissingParameters = 3,
20}
21
22impl Error {
23    #[inline]
24    pub fn from_primitive(prim: u32) -> Option<Self> {
25        match prim {
26            1 => Some(Self::Internal),
27            2 => Some(Self::Timeout),
28            3 => Some(Self::MissingParameters),
29            _ => None,
30        }
31    }
32
33    #[inline]
34    pub const fn into_primitive(self) -> u32 {
35        self as u32
36    }
37}
38
39#[derive(Clone, Debug, Default, PartialEq)]
40pub struct GattClientControllerDiscoverServicesResponse {
41    pub services: Option<Vec<fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo>>,
42    #[doc(hidden)]
43    pub __source_breaking: fidl::marker::SourceBreaking,
44}
45
46impl fidl::Persistable for GattClientControllerDiscoverServicesResponse {}
47
48#[derive(Clone, Debug, Default, PartialEq)]
49pub struct HostControllerSetConnectabilityRequest {
50    /// Required. Set to true if making connectable or false if revoking connectability.
51    pub connectable: Option<bool>,
52    #[doc(hidden)]
53    pub __source_breaking: fidl::marker::SourceBreaking,
54}
55
56impl fidl::Persistable for HostControllerSetConnectabilityRequest {}
57
58#[derive(Clone, Debug, Default, PartialEq)]
59pub struct HostControllerSetDeviceClassRequest {
60    /// Required. The device class to assign to the host. See [`fuchsia.bluetooth.DeviceClass`].
61    pub device_class: Option<fidl_fuchsia_bluetooth_common::DeviceClass>,
62    #[doc(hidden)]
63    pub __source_breaking: fidl::marker::SourceBreaking,
64}
65
66impl fidl::Persistable for HostControllerSetDeviceClassRequest {}
67
68#[derive(Clone, Debug, Default, PartialEq)]
69pub struct HostControllerSetDiscoverabilityRequest {
70    /// Required. Set to true if making discoverable or false if revoking discoverability.
71    pub discoverable: Option<bool>,
72    #[doc(hidden)]
73    pub __source_breaking: fidl::marker::SourceBreaking,
74}
75
76impl fidl::Persistable for HostControllerSetDiscoverabilityRequest {}
77
78#[derive(Clone, Debug, Default, PartialEq)]
79pub struct HostControllerSetLocalNameRequest {
80    /// Required. Name to assign to the host.
81    pub name: Option<String>,
82    #[doc(hidden)]
83    pub __source_breaking: fidl::marker::SourceBreaking,
84}
85
86impl fidl::Persistable for HostControllerSetLocalNameRequest {}
87
88#[derive(Clone, Debug, Default, PartialEq)]
89pub struct HostControllerStartPairingDelegateRequest {
90    /// Required. Set based on the ability of the host to enter responses to pairing requests.
91    /// See [`fuchsia.bluetooth.sys/InputCapability`].
92    pub input_capability: Option<fidl_fuchsia_bluetooth_sys_common::InputCapability>,
93    /// Required. Set based on the ability of the host to display information to the user
94    /// initiating or accepting a pairing. See [`fuchsia.bluetooth.sys/OutputCapability`].
95    pub output_capability: Option<fidl_fuchsia_bluetooth_sys_common::OutputCapability>,
96    #[doc(hidden)]
97    pub __source_breaking: fidl::marker::SourceBreaking,
98}
99
100impl fidl::Persistable for HostControllerStartPairingDelegateRequest {}
101
102#[derive(Clone, Debug, Default, PartialEq)]
103pub struct HostControllerGetHostsResponse {
104    pub hosts: Option<Vec<fidl_fuchsia_bluetooth_sys_common::HostInfo>>,
105    #[doc(hidden)]
106    pub __source_breaking: fidl::marker::SourceBreaking,
107}
108
109impl fidl::Persistable for HostControllerGetHostsResponse {}
110
111/// Defines how to find a host to perform an operation on. At least one field must be present.
112#[derive(Clone, Debug, Default, PartialEq)]
113pub struct HostSelector {
114    /// The ID of the host to act on.
115    pub id: Option<fidl_fuchsia_bluetooth_common::HostId>,
116    #[doc(hidden)]
117    pub __source_breaking: fidl::marker::SourceBreaking,
118}
119
120impl fidl::Persistable for HostSelector {}
121
122#[derive(Clone, Debug, Default, PartialEq)]
123pub struct PeerControllerGetPeerIdRequest {
124    /// Required. The address of the peer to get the ID of (in little-endian order).
125    pub address: Option<fidl_fuchsia_bluetooth_common::Address>,
126    #[doc(hidden)]
127    pub __source_breaking: fidl::marker::SourceBreaking,
128}
129
130impl fidl::Persistable for PeerControllerGetPeerIdRequest {}
131
132#[derive(Clone, Debug, Default, PartialEq)]
133pub struct PeerControllerPairRequest {
134    /// Required. Defines which peer to initiate pairing with.
135    pub selector: Option<PeerSelector>,
136    /// Required. The configuration options to use for this pairing request.
137    pub options: Option<fidl_fuchsia_bluetooth_sys_common::PairingOptions>,
138    #[doc(hidden)]
139    pub __source_breaking: fidl::marker::SourceBreaking,
140}
141
142impl fidl::Persistable for PeerControllerPairRequest {}
143
144#[derive(Clone, Debug, Default, PartialEq)]
145pub struct PeerControllerSetDiscoveryRequest {
146    /// Required. Set to true if starting discovery or false if stopping discovery.
147    pub discovery: Option<bool>,
148    #[doc(hidden)]
149    pub __source_breaking: fidl::marker::SourceBreaking,
150}
151
152impl fidl::Persistable for PeerControllerSetDiscoveryRequest {}
153
154#[derive(Clone, Debug, Default, PartialEq)]
155pub struct PeerControllerGetKnownPeersResponse {
156    pub peers: Option<Vec<fidl_fuchsia_bluetooth_sys_common::Peer>>,
157    #[doc(hidden)]
158    pub __source_breaking: fidl::marker::SourceBreaking,
159}
160
161impl fidl::Persistable for PeerControllerGetKnownPeersResponse {}
162
163#[derive(Clone, Debug, Default, PartialEq)]
164pub struct PeerControllerGetPeerIdResponse {
165    /// The ID of the peer.
166    pub id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
167    #[doc(hidden)]
168    pub __source_breaking: fidl::marker::SourceBreaking,
169}
170
171impl fidl::Persistable for PeerControllerGetPeerIdResponse {}
172
173/// Defines how to find a peer to perform an operation on. At least one field must be present.
174#[derive(Clone, Debug, Default, PartialEq)]
175pub struct PeerSelector {
176    /// The ID of the peer to act on.
177    pub id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
178    #[doc(hidden)]
179    pub __source_breaking: fidl::marker::SourceBreaking,
180}
181
182impl fidl::Persistable for PeerSelector {}
183
184#[derive(Clone, Debug, Default, PartialEq)]
185pub struct PeripheralControllerAdvertiseRequest {
186    /// Required. Advertising parameters.
187    pub parameters: Option<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters>,
188    /// Required. Timeout for advertising in seconds.
189    pub timeout: Option<u64>,
190    #[doc(hidden)]
191    pub __source_breaking: fidl::marker::SourceBreaking,
192}
193
194impl fidl::Persistable for PeripheralControllerAdvertiseRequest {}
195
196#[derive(Clone, Debug, Default, PartialEq)]
197pub struct PeripheralControllerAdvertiseResponse {
198    /// The ID of the peer that connected.
199    pub peer_id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
200    #[doc(hidden)]
201    pub __source_breaking: fidl::marker::SourceBreaking,
202}
203
204impl fidl::Persistable for PeripheralControllerAdvertiseResponse {}
205
206#[derive(Clone, Debug, Default, PartialEq)]
207pub struct ScanResultListenerOnPeersDiscoveredRequest {
208    pub peers: Option<Vec<ScannedPeer>>,
209    #[doc(hidden)]
210    pub __source_breaking: fidl::marker::SourceBreaking,
211}
212
213impl fidl::Persistable for ScanResultListenerOnPeersDiscoveredRequest {}
214
215/// Represents a peer discovered during an LE scan. LE scan responses do not include peer addresses,
216/// so the address is queried in `bt-affordances` and included here.
217#[derive(Clone, Debug, Default, PartialEq)]
218pub struct ScannedPeer {
219    /// The peer information from the scan result.
220    pub peer: Option<fidl_fuchsia_bluetooth_le_common::Peer>,
221    /// The address of the peer.
222    pub address: Option<fidl_fuchsia_bluetooth_common::Address>,
223    #[doc(hidden)]
224    pub __source_breaking: fidl::marker::SourceBreaking,
225}
226
227impl fidl::Persistable for ScannedPeer {}
228
229pub mod central_controller_ordinals {
230    pub const START_SCAN: u64 = 0x7f8e8fdaa5b359ea;
231    pub const CONNECT_PERIPHERAL: u64 = 0x4cf45727cca182cd;
232}
233
234pub mod gatt_client_controller_ordinals {
235    pub const DISCOVER_SERVICES: u64 = 0x2451643d00753f94;
236}
237
238pub mod host_controller_ordinals {
239    pub const GET_HOSTS: u64 = 0x167d2522684d453d;
240    pub const SET_DISCOVERABILITY: u64 = 0x1e977b538b94b08b;
241    pub const SET_CONNECTABILITY: u64 = 0x93572b659adf7d;
242    pub const SET_ACTIVE_HOST: u64 = 0x1d3f8ba8b30347de;
243    pub const SET_LOCAL_NAME: u64 = 0x357714c7aa252336;
244    pub const START_PAIRING_DELEGATE: u64 = 0x155c20cb1b9c1ed2;
245    pub const STOP_PAIRING_DELEGATE: u64 = 0x5caaee1192a8172c;
246    pub const SET_DEVICE_CLASS: u64 = 0x34dcc9ed479692dc;
247}
248
249pub mod peer_controller_ordinals {
250    pub const GET_KNOWN_PEERS: u64 = 0x482cf3745bab65f6;
251    pub const GET_PEER_ID: u64 = 0x5f6f76185d19eb18;
252    pub const CONNECT_PEER: u64 = 0x13fbb990835acf66;
253    pub const DISCONNECT_PEER: u64 = 0x5f9992f066c664ad;
254    pub const PAIR: u64 = 0x1991671d4d7eff26;
255    pub const FORGET_PEER: u64 = 0x26011dbbd834f8c6;
256    pub const SET_DISCOVERY: u64 = 0x3269624c9e1d6ab3;
257}
258
259pub mod peripheral_controller_ordinals {
260    pub const ADVERTISE: u64 = 0x59079a81362a66f3;
261}
262
263pub mod scan_result_listener_ordinals {
264    pub const ON_PEERS_DISCOVERED: u64 = 0x111ea99f3f0c8009;
265}
266
267mod internal {
268    use super::*;
269    unsafe impl fidl::encoding::TypeMarker for Error {
270        type Owned = Self;
271
272        #[inline(always)]
273        fn inline_align(_context: fidl::encoding::Context) -> usize {
274            std::mem::align_of::<u32>()
275        }
276
277        #[inline(always)]
278        fn inline_size(_context: fidl::encoding::Context) -> usize {
279            std::mem::size_of::<u32>()
280        }
281
282        #[inline(always)]
283        fn encode_is_copy() -> bool {
284            true
285        }
286
287        #[inline(always)]
288        fn decode_is_copy() -> bool {
289            false
290        }
291    }
292
293    impl fidl::encoding::ValueTypeMarker for Error {
294        type Borrowed<'a> = Self;
295        #[inline(always)]
296        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
297            *value
298        }
299    }
300
301    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
302        #[inline]
303        unsafe fn encode(
304            self,
305            encoder: &mut fidl::encoding::Encoder<'_, D>,
306            offset: usize,
307            _depth: fidl::encoding::Depth,
308        ) -> fidl::Result<()> {
309            encoder.debug_check_bounds::<Self>(offset);
310            encoder.write_num(self.into_primitive(), offset);
311            Ok(())
312        }
313    }
314
315    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
316        #[inline(always)]
317        fn new_empty() -> Self {
318            Self::Internal
319        }
320
321        #[inline]
322        unsafe fn decode(
323            &mut self,
324            decoder: &mut fidl::encoding::Decoder<'_, D>,
325            offset: usize,
326            _depth: fidl::encoding::Depth,
327        ) -> fidl::Result<()> {
328            decoder.debug_check_bounds::<Self>(offset);
329            let prim = decoder.read_num::<u32>(offset);
330
331            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
332            Ok(())
333        }
334    }
335
336    impl GattClientControllerDiscoverServicesResponse {
337        #[inline(always)]
338        fn max_ordinal_present(&self) -> u64 {
339            if let Some(_) = self.services {
340                return 1;
341            }
342            0
343        }
344    }
345
346    impl fidl::encoding::ValueTypeMarker for GattClientControllerDiscoverServicesResponse {
347        type Borrowed<'a> = &'a Self;
348        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
349            value
350        }
351    }
352
353    unsafe impl fidl::encoding::TypeMarker for GattClientControllerDiscoverServicesResponse {
354        type Owned = Self;
355
356        #[inline(always)]
357        fn inline_align(_context: fidl::encoding::Context) -> usize {
358            8
359        }
360
361        #[inline(always)]
362        fn inline_size(_context: fidl::encoding::Context) -> usize {
363            16
364        }
365    }
366
367    unsafe impl<D: fidl::encoding::ResourceDialect>
368        fidl::encoding::Encode<GattClientControllerDiscoverServicesResponse, D>
369        for &GattClientControllerDiscoverServicesResponse
370    {
371        unsafe fn encode(
372            self,
373            encoder: &mut fidl::encoding::Encoder<'_, D>,
374            offset: usize,
375            mut depth: fidl::encoding::Depth,
376        ) -> fidl::Result<()> {
377            encoder.debug_check_bounds::<GattClientControllerDiscoverServicesResponse>(offset);
378            // Vector header
379            let max_ordinal: u64 = self.max_ordinal_present();
380            encoder.write_num(max_ordinal, offset);
381            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
382            // Calling encoder.out_of_line_offset(0) is not allowed.
383            if max_ordinal == 0 {
384                return Ok(());
385            }
386            depth.increment()?;
387            let envelope_size = 8;
388            let bytes_len = max_ordinal as usize * envelope_size;
389            #[allow(unused_variables)]
390            let offset = encoder.out_of_line_offset(bytes_len);
391            let mut _prev_end_offset: usize = 0;
392            if 1 > max_ordinal {
393                return Ok(());
394            }
395
396            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
397            // are envelope_size bytes.
398            let cur_offset: usize = (1 - 1) * envelope_size;
399
400            // Zero reserved fields.
401            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
402
403            // Safety:
404            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
405            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
406            //   envelope_size bytes, there is always sufficient room.
407            fidl::encoding::encode_in_envelope_optional::<
408                fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo>,
409                D,
410            >(
411                self.services.as_ref().map(
412                    <fidl::encoding::UnboundedVector<
413                        fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
414                    > as fidl::encoding::ValueTypeMarker>::borrow,
415                ),
416                encoder,
417                offset + cur_offset,
418                depth,
419            )?;
420
421            _prev_end_offset = cur_offset + envelope_size;
422
423            Ok(())
424        }
425    }
426
427    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
428        for GattClientControllerDiscoverServicesResponse
429    {
430        #[inline(always)]
431        fn new_empty() -> Self {
432            Self::default()
433        }
434
435        unsafe fn decode(
436            &mut self,
437            decoder: &mut fidl::encoding::Decoder<'_, D>,
438            offset: usize,
439            mut depth: fidl::encoding::Depth,
440        ) -> fidl::Result<()> {
441            decoder.debug_check_bounds::<Self>(offset);
442            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
443                None => return Err(fidl::Error::NotNullable),
444                Some(len) => len,
445            };
446            // Calling decoder.out_of_line_offset(0) is not allowed.
447            if len == 0 {
448                return Ok(());
449            };
450            depth.increment()?;
451            let envelope_size = 8;
452            let bytes_len = len * envelope_size;
453            let offset = decoder.out_of_line_offset(bytes_len)?;
454            // Decode the envelope for each type.
455            let mut _next_ordinal_to_read = 0;
456            let mut next_offset = offset;
457            let end_offset = offset + bytes_len;
458            _next_ordinal_to_read += 1;
459            if next_offset >= end_offset {
460                return Ok(());
461            }
462
463            // Decode unknown envelopes for gaps in ordinals.
464            while _next_ordinal_to_read < 1 {
465                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
466                _next_ordinal_to_read += 1;
467                next_offset += envelope_size;
468            }
469
470            let next_out_of_line = decoder.next_out_of_line();
471            let handles_before = decoder.remaining_handles();
472            if let Some((inlined, num_bytes, num_handles)) =
473                fidl::encoding::decode_envelope_header(decoder, next_offset)?
474            {
475                let member_inline_size = <fidl::encoding::UnboundedVector<
476                    fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
477                > as fidl::encoding::TypeMarker>::inline_size(
478                    decoder.context
479                );
480                if inlined != (member_inline_size <= 4) {
481                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
482                }
483                let inner_offset;
484                let mut inner_depth = depth.clone();
485                if inlined {
486                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
487                    inner_offset = next_offset;
488                } else {
489                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
490                    inner_depth.increment()?;
491                }
492                let val_ref = self.services.get_or_insert_with(|| {
493                    fidl::new_empty!(
494                        fidl::encoding::UnboundedVector<
495                            fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
496                        >,
497                        D
498                    )
499                });
500                fidl::decode!(
501                    fidl::encoding::UnboundedVector<
502                        fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
503                    >,
504                    D,
505                    val_ref,
506                    decoder,
507                    inner_offset,
508                    inner_depth
509                )?;
510                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
511                {
512                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
513                }
514                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
515                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
516                }
517            }
518
519            next_offset += envelope_size;
520
521            // Decode the remaining unknown envelopes.
522            while next_offset < end_offset {
523                _next_ordinal_to_read += 1;
524                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
525                next_offset += envelope_size;
526            }
527
528            Ok(())
529        }
530    }
531
532    impl HostControllerSetConnectabilityRequest {
533        #[inline(always)]
534        fn max_ordinal_present(&self) -> u64 {
535            if let Some(_) = self.connectable {
536                return 1;
537            }
538            0
539        }
540    }
541
542    impl fidl::encoding::ValueTypeMarker for HostControllerSetConnectabilityRequest {
543        type Borrowed<'a> = &'a Self;
544        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
545            value
546        }
547    }
548
549    unsafe impl fidl::encoding::TypeMarker for HostControllerSetConnectabilityRequest {
550        type Owned = Self;
551
552        #[inline(always)]
553        fn inline_align(_context: fidl::encoding::Context) -> usize {
554            8
555        }
556
557        #[inline(always)]
558        fn inline_size(_context: fidl::encoding::Context) -> usize {
559            16
560        }
561    }
562
563    unsafe impl<D: fidl::encoding::ResourceDialect>
564        fidl::encoding::Encode<HostControllerSetConnectabilityRequest, D>
565        for &HostControllerSetConnectabilityRequest
566    {
567        unsafe fn encode(
568            self,
569            encoder: &mut fidl::encoding::Encoder<'_, D>,
570            offset: usize,
571            mut depth: fidl::encoding::Depth,
572        ) -> fidl::Result<()> {
573            encoder.debug_check_bounds::<HostControllerSetConnectabilityRequest>(offset);
574            // Vector header
575            let max_ordinal: u64 = self.max_ordinal_present();
576            encoder.write_num(max_ordinal, offset);
577            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
578            // Calling encoder.out_of_line_offset(0) is not allowed.
579            if max_ordinal == 0 {
580                return Ok(());
581            }
582            depth.increment()?;
583            let envelope_size = 8;
584            let bytes_len = max_ordinal as usize * envelope_size;
585            #[allow(unused_variables)]
586            let offset = encoder.out_of_line_offset(bytes_len);
587            let mut _prev_end_offset: usize = 0;
588            if 1 > max_ordinal {
589                return Ok(());
590            }
591
592            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
593            // are envelope_size bytes.
594            let cur_offset: usize = (1 - 1) * envelope_size;
595
596            // Zero reserved fields.
597            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
598
599            // Safety:
600            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
601            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
602            //   envelope_size bytes, there is always sufficient room.
603            fidl::encoding::encode_in_envelope_optional::<bool, D>(
604                self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
605                encoder,
606                offset + cur_offset,
607                depth,
608            )?;
609
610            _prev_end_offset = cur_offset + envelope_size;
611
612            Ok(())
613        }
614    }
615
616    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
617        for HostControllerSetConnectabilityRequest
618    {
619        #[inline(always)]
620        fn new_empty() -> Self {
621            Self::default()
622        }
623
624        unsafe fn decode(
625            &mut self,
626            decoder: &mut fidl::encoding::Decoder<'_, D>,
627            offset: usize,
628            mut depth: fidl::encoding::Depth,
629        ) -> fidl::Result<()> {
630            decoder.debug_check_bounds::<Self>(offset);
631            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
632                None => return Err(fidl::Error::NotNullable),
633                Some(len) => len,
634            };
635            // Calling decoder.out_of_line_offset(0) is not allowed.
636            if len == 0 {
637                return Ok(());
638            };
639            depth.increment()?;
640            let envelope_size = 8;
641            let bytes_len = len * envelope_size;
642            let offset = decoder.out_of_line_offset(bytes_len)?;
643            // Decode the envelope for each type.
644            let mut _next_ordinal_to_read = 0;
645            let mut next_offset = offset;
646            let end_offset = offset + bytes_len;
647            _next_ordinal_to_read += 1;
648            if next_offset >= end_offset {
649                return Ok(());
650            }
651
652            // Decode unknown envelopes for gaps in ordinals.
653            while _next_ordinal_to_read < 1 {
654                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
655                _next_ordinal_to_read += 1;
656                next_offset += envelope_size;
657            }
658
659            let next_out_of_line = decoder.next_out_of_line();
660            let handles_before = decoder.remaining_handles();
661            if let Some((inlined, num_bytes, num_handles)) =
662                fidl::encoding::decode_envelope_header(decoder, next_offset)?
663            {
664                let member_inline_size =
665                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
666                if inlined != (member_inline_size <= 4) {
667                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
668                }
669                let inner_offset;
670                let mut inner_depth = depth.clone();
671                if inlined {
672                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
673                    inner_offset = next_offset;
674                } else {
675                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
676                    inner_depth.increment()?;
677                }
678                let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
679                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
680                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
681                {
682                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
683                }
684                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
685                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
686                }
687            }
688
689            next_offset += envelope_size;
690
691            // Decode the remaining unknown envelopes.
692            while next_offset < end_offset {
693                _next_ordinal_to_read += 1;
694                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
695                next_offset += envelope_size;
696            }
697
698            Ok(())
699        }
700    }
701
702    impl HostControllerSetDeviceClassRequest {
703        #[inline(always)]
704        fn max_ordinal_present(&self) -> u64 {
705            if let Some(_) = self.device_class {
706                return 1;
707            }
708            0
709        }
710    }
711
712    impl fidl::encoding::ValueTypeMarker for HostControllerSetDeviceClassRequest {
713        type Borrowed<'a> = &'a Self;
714        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
715            value
716        }
717    }
718
719    unsafe impl fidl::encoding::TypeMarker for HostControllerSetDeviceClassRequest {
720        type Owned = Self;
721
722        #[inline(always)]
723        fn inline_align(_context: fidl::encoding::Context) -> usize {
724            8
725        }
726
727        #[inline(always)]
728        fn inline_size(_context: fidl::encoding::Context) -> usize {
729            16
730        }
731    }
732
733    unsafe impl<D: fidl::encoding::ResourceDialect>
734        fidl::encoding::Encode<HostControllerSetDeviceClassRequest, D>
735        for &HostControllerSetDeviceClassRequest
736    {
737        unsafe fn encode(
738            self,
739            encoder: &mut fidl::encoding::Encoder<'_, D>,
740            offset: usize,
741            mut depth: fidl::encoding::Depth,
742        ) -> fidl::Result<()> {
743            encoder.debug_check_bounds::<HostControllerSetDeviceClassRequest>(offset);
744            // Vector header
745            let max_ordinal: u64 = self.max_ordinal_present();
746            encoder.write_num(max_ordinal, offset);
747            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
748            // Calling encoder.out_of_line_offset(0) is not allowed.
749            if max_ordinal == 0 {
750                return Ok(());
751            }
752            depth.increment()?;
753            let envelope_size = 8;
754            let bytes_len = max_ordinal as usize * envelope_size;
755            #[allow(unused_variables)]
756            let offset = encoder.out_of_line_offset(bytes_len);
757            let mut _prev_end_offset: usize = 0;
758            if 1 > max_ordinal {
759                return Ok(());
760            }
761
762            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
763            // are envelope_size bytes.
764            let cur_offset: usize = (1 - 1) * envelope_size;
765
766            // Zero reserved fields.
767            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
768
769            // Safety:
770            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
771            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
772            //   envelope_size bytes, there is always sufficient room.
773            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::DeviceClass, D>(
774            self.device_class.as_ref().map(<fidl_fuchsia_bluetooth_common::DeviceClass as fidl::encoding::ValueTypeMarker>::borrow),
775            encoder, offset + cur_offset, depth
776        )?;
777
778            _prev_end_offset = cur_offset + envelope_size;
779
780            Ok(())
781        }
782    }
783
784    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
785        for HostControllerSetDeviceClassRequest
786    {
787        #[inline(always)]
788        fn new_empty() -> Self {
789            Self::default()
790        }
791
792        unsafe fn decode(
793            &mut self,
794            decoder: &mut fidl::encoding::Decoder<'_, D>,
795            offset: usize,
796            mut depth: fidl::encoding::Depth,
797        ) -> fidl::Result<()> {
798            decoder.debug_check_bounds::<Self>(offset);
799            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
800                None => return Err(fidl::Error::NotNullable),
801                Some(len) => len,
802            };
803            // Calling decoder.out_of_line_offset(0) is not allowed.
804            if len == 0 {
805                return Ok(());
806            };
807            depth.increment()?;
808            let envelope_size = 8;
809            let bytes_len = len * envelope_size;
810            let offset = decoder.out_of_line_offset(bytes_len)?;
811            // Decode the envelope for each type.
812            let mut _next_ordinal_to_read = 0;
813            let mut next_offset = offset;
814            let end_offset = offset + bytes_len;
815            _next_ordinal_to_read += 1;
816            if next_offset >= end_offset {
817                return Ok(());
818            }
819
820            // Decode unknown envelopes for gaps in ordinals.
821            while _next_ordinal_to_read < 1 {
822                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
823                _next_ordinal_to_read += 1;
824                next_offset += envelope_size;
825            }
826
827            let next_out_of_line = decoder.next_out_of_line();
828            let handles_before = decoder.remaining_handles();
829            if let Some((inlined, num_bytes, num_handles)) =
830                fidl::encoding::decode_envelope_header(decoder, next_offset)?
831            {
832                let member_inline_size = <fidl_fuchsia_bluetooth_common::DeviceClass as fidl::encoding::TypeMarker>::inline_size(decoder.context);
833                if inlined != (member_inline_size <= 4) {
834                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
835                }
836                let inner_offset;
837                let mut inner_depth = depth.clone();
838                if inlined {
839                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
840                    inner_offset = next_offset;
841                } else {
842                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
843                    inner_depth.increment()?;
844                }
845                let val_ref = self.device_class.get_or_insert_with(|| {
846                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::DeviceClass, D)
847                });
848                fidl::decode!(
849                    fidl_fuchsia_bluetooth_common::DeviceClass,
850                    D,
851                    val_ref,
852                    decoder,
853                    inner_offset,
854                    inner_depth
855                )?;
856                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
857                {
858                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
859                }
860                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
861                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
862                }
863            }
864
865            next_offset += envelope_size;
866
867            // Decode the remaining unknown envelopes.
868            while next_offset < end_offset {
869                _next_ordinal_to_read += 1;
870                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
871                next_offset += envelope_size;
872            }
873
874            Ok(())
875        }
876    }
877
878    impl HostControllerSetDiscoverabilityRequest {
879        #[inline(always)]
880        fn max_ordinal_present(&self) -> u64 {
881            if let Some(_) = self.discoverable {
882                return 1;
883            }
884            0
885        }
886    }
887
888    impl fidl::encoding::ValueTypeMarker for HostControllerSetDiscoverabilityRequest {
889        type Borrowed<'a> = &'a Self;
890        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
891            value
892        }
893    }
894
895    unsafe impl fidl::encoding::TypeMarker for HostControllerSetDiscoverabilityRequest {
896        type Owned = Self;
897
898        #[inline(always)]
899        fn inline_align(_context: fidl::encoding::Context) -> usize {
900            8
901        }
902
903        #[inline(always)]
904        fn inline_size(_context: fidl::encoding::Context) -> usize {
905            16
906        }
907    }
908
909    unsafe impl<D: fidl::encoding::ResourceDialect>
910        fidl::encoding::Encode<HostControllerSetDiscoverabilityRequest, D>
911        for &HostControllerSetDiscoverabilityRequest
912    {
913        unsafe fn encode(
914            self,
915            encoder: &mut fidl::encoding::Encoder<'_, D>,
916            offset: usize,
917            mut depth: fidl::encoding::Depth,
918        ) -> fidl::Result<()> {
919            encoder.debug_check_bounds::<HostControllerSetDiscoverabilityRequest>(offset);
920            // Vector header
921            let max_ordinal: u64 = self.max_ordinal_present();
922            encoder.write_num(max_ordinal, offset);
923            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
924            // Calling encoder.out_of_line_offset(0) is not allowed.
925            if max_ordinal == 0 {
926                return Ok(());
927            }
928            depth.increment()?;
929            let envelope_size = 8;
930            let bytes_len = max_ordinal as usize * envelope_size;
931            #[allow(unused_variables)]
932            let offset = encoder.out_of_line_offset(bytes_len);
933            let mut _prev_end_offset: usize = 0;
934            if 1 > max_ordinal {
935                return Ok(());
936            }
937
938            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
939            // are envelope_size bytes.
940            let cur_offset: usize = (1 - 1) * envelope_size;
941
942            // Zero reserved fields.
943            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
944
945            // Safety:
946            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
947            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
948            //   envelope_size bytes, there is always sufficient room.
949            fidl::encoding::encode_in_envelope_optional::<bool, D>(
950                self.discoverable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
951                encoder,
952                offset + cur_offset,
953                depth,
954            )?;
955
956            _prev_end_offset = cur_offset + envelope_size;
957
958            Ok(())
959        }
960    }
961
962    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
963        for HostControllerSetDiscoverabilityRequest
964    {
965        #[inline(always)]
966        fn new_empty() -> Self {
967            Self::default()
968        }
969
970        unsafe fn decode(
971            &mut self,
972            decoder: &mut fidl::encoding::Decoder<'_, D>,
973            offset: usize,
974            mut depth: fidl::encoding::Depth,
975        ) -> fidl::Result<()> {
976            decoder.debug_check_bounds::<Self>(offset);
977            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
978                None => return Err(fidl::Error::NotNullable),
979                Some(len) => len,
980            };
981            // Calling decoder.out_of_line_offset(0) is not allowed.
982            if len == 0 {
983                return Ok(());
984            };
985            depth.increment()?;
986            let envelope_size = 8;
987            let bytes_len = len * envelope_size;
988            let offset = decoder.out_of_line_offset(bytes_len)?;
989            // Decode the envelope for each type.
990            let mut _next_ordinal_to_read = 0;
991            let mut next_offset = offset;
992            let end_offset = offset + bytes_len;
993            _next_ordinal_to_read += 1;
994            if next_offset >= end_offset {
995                return Ok(());
996            }
997
998            // Decode unknown envelopes for gaps in ordinals.
999            while _next_ordinal_to_read < 1 {
1000                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1001                _next_ordinal_to_read += 1;
1002                next_offset += envelope_size;
1003            }
1004
1005            let next_out_of_line = decoder.next_out_of_line();
1006            let handles_before = decoder.remaining_handles();
1007            if let Some((inlined, num_bytes, num_handles)) =
1008                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1009            {
1010                let member_inline_size =
1011                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1012                if inlined != (member_inline_size <= 4) {
1013                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1014                }
1015                let inner_offset;
1016                let mut inner_depth = depth.clone();
1017                if inlined {
1018                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1019                    inner_offset = next_offset;
1020                } else {
1021                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1022                    inner_depth.increment()?;
1023                }
1024                let val_ref = self.discoverable.get_or_insert_with(|| fidl::new_empty!(bool, D));
1025                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1026                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1027                {
1028                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1029                }
1030                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1031                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1032                }
1033            }
1034
1035            next_offset += envelope_size;
1036
1037            // Decode the remaining unknown envelopes.
1038            while next_offset < end_offset {
1039                _next_ordinal_to_read += 1;
1040                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1041                next_offset += envelope_size;
1042            }
1043
1044            Ok(())
1045        }
1046    }
1047
1048    impl HostControllerSetLocalNameRequest {
1049        #[inline(always)]
1050        fn max_ordinal_present(&self) -> u64 {
1051            if let Some(_) = self.name {
1052                return 1;
1053            }
1054            0
1055        }
1056    }
1057
1058    impl fidl::encoding::ValueTypeMarker for HostControllerSetLocalNameRequest {
1059        type Borrowed<'a> = &'a Self;
1060        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1061            value
1062        }
1063    }
1064
1065    unsafe impl fidl::encoding::TypeMarker for HostControllerSetLocalNameRequest {
1066        type Owned = Self;
1067
1068        #[inline(always)]
1069        fn inline_align(_context: fidl::encoding::Context) -> usize {
1070            8
1071        }
1072
1073        #[inline(always)]
1074        fn inline_size(_context: fidl::encoding::Context) -> usize {
1075            16
1076        }
1077    }
1078
1079    unsafe impl<D: fidl::encoding::ResourceDialect>
1080        fidl::encoding::Encode<HostControllerSetLocalNameRequest, D>
1081        for &HostControllerSetLocalNameRequest
1082    {
1083        unsafe fn encode(
1084            self,
1085            encoder: &mut fidl::encoding::Encoder<'_, D>,
1086            offset: usize,
1087            mut depth: fidl::encoding::Depth,
1088        ) -> fidl::Result<()> {
1089            encoder.debug_check_bounds::<HostControllerSetLocalNameRequest>(offset);
1090            // Vector header
1091            let max_ordinal: u64 = self.max_ordinal_present();
1092            encoder.write_num(max_ordinal, offset);
1093            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1094            // Calling encoder.out_of_line_offset(0) is not allowed.
1095            if max_ordinal == 0 {
1096                return Ok(());
1097            }
1098            depth.increment()?;
1099            let envelope_size = 8;
1100            let bytes_len = max_ordinal as usize * envelope_size;
1101            #[allow(unused_variables)]
1102            let offset = encoder.out_of_line_offset(bytes_len);
1103            let mut _prev_end_offset: usize = 0;
1104            if 1 > max_ordinal {
1105                return Ok(());
1106            }
1107
1108            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1109            // are envelope_size bytes.
1110            let cur_offset: usize = (1 - 1) * envelope_size;
1111
1112            // Zero reserved fields.
1113            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1114
1115            // Safety:
1116            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1117            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1118            //   envelope_size bytes, there is always sufficient room.
1119            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
1120                self.name.as_ref().map(
1121                    <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
1122                ),
1123                encoder,
1124                offset + cur_offset,
1125                depth,
1126            )?;
1127
1128            _prev_end_offset = cur_offset + envelope_size;
1129
1130            Ok(())
1131        }
1132    }
1133
1134    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1135        for HostControllerSetLocalNameRequest
1136    {
1137        #[inline(always)]
1138        fn new_empty() -> Self {
1139            Self::default()
1140        }
1141
1142        unsafe fn decode(
1143            &mut self,
1144            decoder: &mut fidl::encoding::Decoder<'_, D>,
1145            offset: usize,
1146            mut depth: fidl::encoding::Depth,
1147        ) -> fidl::Result<()> {
1148            decoder.debug_check_bounds::<Self>(offset);
1149            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1150                None => return Err(fidl::Error::NotNullable),
1151                Some(len) => len,
1152            };
1153            // Calling decoder.out_of_line_offset(0) is not allowed.
1154            if len == 0 {
1155                return Ok(());
1156            };
1157            depth.increment()?;
1158            let envelope_size = 8;
1159            let bytes_len = len * envelope_size;
1160            let offset = decoder.out_of_line_offset(bytes_len)?;
1161            // Decode the envelope for each type.
1162            let mut _next_ordinal_to_read = 0;
1163            let mut next_offset = offset;
1164            let end_offset = offset + bytes_len;
1165            _next_ordinal_to_read += 1;
1166            if next_offset >= end_offset {
1167                return Ok(());
1168            }
1169
1170            // Decode unknown envelopes for gaps in ordinals.
1171            while _next_ordinal_to_read < 1 {
1172                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1173                _next_ordinal_to_read += 1;
1174                next_offset += envelope_size;
1175            }
1176
1177            let next_out_of_line = decoder.next_out_of_line();
1178            let handles_before = decoder.remaining_handles();
1179            if let Some((inlined, num_bytes, num_handles)) =
1180                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1181            {
1182                let member_inline_size =
1183                    <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
1184                        decoder.context,
1185                    );
1186                if inlined != (member_inline_size <= 4) {
1187                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1188                }
1189                let inner_offset;
1190                let mut inner_depth = depth.clone();
1191                if inlined {
1192                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1193                    inner_offset = next_offset;
1194                } else {
1195                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1196                    inner_depth.increment()?;
1197                }
1198                let val_ref = self
1199                    .name
1200                    .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
1201                fidl::decode!(
1202                    fidl::encoding::BoundedString<248>,
1203                    D,
1204                    val_ref,
1205                    decoder,
1206                    inner_offset,
1207                    inner_depth
1208                )?;
1209                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1210                {
1211                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1212                }
1213                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1214                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1215                }
1216            }
1217
1218            next_offset += envelope_size;
1219
1220            // Decode the remaining unknown envelopes.
1221            while next_offset < end_offset {
1222                _next_ordinal_to_read += 1;
1223                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1224                next_offset += envelope_size;
1225            }
1226
1227            Ok(())
1228        }
1229    }
1230
1231    impl HostControllerStartPairingDelegateRequest {
1232        #[inline(always)]
1233        fn max_ordinal_present(&self) -> u64 {
1234            if let Some(_) = self.output_capability {
1235                return 2;
1236            }
1237            if let Some(_) = self.input_capability {
1238                return 1;
1239            }
1240            0
1241        }
1242    }
1243
1244    impl fidl::encoding::ValueTypeMarker for HostControllerStartPairingDelegateRequest {
1245        type Borrowed<'a> = &'a Self;
1246        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1247            value
1248        }
1249    }
1250
1251    unsafe impl fidl::encoding::TypeMarker for HostControllerStartPairingDelegateRequest {
1252        type Owned = Self;
1253
1254        #[inline(always)]
1255        fn inline_align(_context: fidl::encoding::Context) -> usize {
1256            8
1257        }
1258
1259        #[inline(always)]
1260        fn inline_size(_context: fidl::encoding::Context) -> usize {
1261            16
1262        }
1263    }
1264
1265    unsafe impl<D: fidl::encoding::ResourceDialect>
1266        fidl::encoding::Encode<HostControllerStartPairingDelegateRequest, D>
1267        for &HostControllerStartPairingDelegateRequest
1268    {
1269        unsafe fn encode(
1270            self,
1271            encoder: &mut fidl::encoding::Encoder<'_, D>,
1272            offset: usize,
1273            mut depth: fidl::encoding::Depth,
1274        ) -> fidl::Result<()> {
1275            encoder.debug_check_bounds::<HostControllerStartPairingDelegateRequest>(offset);
1276            // Vector header
1277            let max_ordinal: u64 = self.max_ordinal_present();
1278            encoder.write_num(max_ordinal, offset);
1279            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1280            // Calling encoder.out_of_line_offset(0) is not allowed.
1281            if max_ordinal == 0 {
1282                return Ok(());
1283            }
1284            depth.increment()?;
1285            let envelope_size = 8;
1286            let bytes_len = max_ordinal as usize * envelope_size;
1287            #[allow(unused_variables)]
1288            let offset = encoder.out_of_line_offset(bytes_len);
1289            let mut _prev_end_offset: usize = 0;
1290            if 1 > max_ordinal {
1291                return Ok(());
1292            }
1293
1294            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1295            // are envelope_size bytes.
1296            let cur_offset: usize = (1 - 1) * envelope_size;
1297
1298            // Zero reserved fields.
1299            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1300
1301            // Safety:
1302            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1303            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1304            //   envelope_size bytes, there is always sufficient room.
1305            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::InputCapability, D>(
1306            self.input_capability.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::InputCapability as fidl::encoding::ValueTypeMarker>::borrow),
1307            encoder, offset + cur_offset, depth
1308        )?;
1309
1310            _prev_end_offset = cur_offset + envelope_size;
1311            if 2 > max_ordinal {
1312                return Ok(());
1313            }
1314
1315            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1316            // are envelope_size bytes.
1317            let cur_offset: usize = (2 - 1) * envelope_size;
1318
1319            // Zero reserved fields.
1320            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1321
1322            // Safety:
1323            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1324            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1325            //   envelope_size bytes, there is always sufficient room.
1326            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::OutputCapability, D>(
1327            self.output_capability.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::OutputCapability as fidl::encoding::ValueTypeMarker>::borrow),
1328            encoder, offset + cur_offset, depth
1329        )?;
1330
1331            _prev_end_offset = cur_offset + envelope_size;
1332
1333            Ok(())
1334        }
1335    }
1336
1337    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1338        for HostControllerStartPairingDelegateRequest
1339    {
1340        #[inline(always)]
1341        fn new_empty() -> Self {
1342            Self::default()
1343        }
1344
1345        unsafe fn decode(
1346            &mut self,
1347            decoder: &mut fidl::encoding::Decoder<'_, D>,
1348            offset: usize,
1349            mut depth: fidl::encoding::Depth,
1350        ) -> fidl::Result<()> {
1351            decoder.debug_check_bounds::<Self>(offset);
1352            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1353                None => return Err(fidl::Error::NotNullable),
1354                Some(len) => len,
1355            };
1356            // Calling decoder.out_of_line_offset(0) is not allowed.
1357            if len == 0 {
1358                return Ok(());
1359            };
1360            depth.increment()?;
1361            let envelope_size = 8;
1362            let bytes_len = len * envelope_size;
1363            let offset = decoder.out_of_line_offset(bytes_len)?;
1364            // Decode the envelope for each type.
1365            let mut _next_ordinal_to_read = 0;
1366            let mut next_offset = offset;
1367            let end_offset = offset + bytes_len;
1368            _next_ordinal_to_read += 1;
1369            if next_offset >= end_offset {
1370                return Ok(());
1371            }
1372
1373            // Decode unknown envelopes for gaps in ordinals.
1374            while _next_ordinal_to_read < 1 {
1375                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1376                _next_ordinal_to_read += 1;
1377                next_offset += envelope_size;
1378            }
1379
1380            let next_out_of_line = decoder.next_out_of_line();
1381            let handles_before = decoder.remaining_handles();
1382            if let Some((inlined, num_bytes, num_handles)) =
1383                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1384            {
1385                let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::InputCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1386                if inlined != (member_inline_size <= 4) {
1387                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1388                }
1389                let inner_offset;
1390                let mut inner_depth = depth.clone();
1391                if inlined {
1392                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1393                    inner_offset = next_offset;
1394                } else {
1395                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1396                    inner_depth.increment()?;
1397                }
1398                let val_ref = self.input_capability.get_or_insert_with(|| {
1399                    fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::InputCapability, D)
1400                });
1401                fidl::decode!(
1402                    fidl_fuchsia_bluetooth_sys_common::InputCapability,
1403                    D,
1404                    val_ref,
1405                    decoder,
1406                    inner_offset,
1407                    inner_depth
1408                )?;
1409                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1410                {
1411                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1412                }
1413                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1414                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1415                }
1416            }
1417
1418            next_offset += envelope_size;
1419            _next_ordinal_to_read += 1;
1420            if next_offset >= end_offset {
1421                return Ok(());
1422            }
1423
1424            // Decode unknown envelopes for gaps in ordinals.
1425            while _next_ordinal_to_read < 2 {
1426                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1427                _next_ordinal_to_read += 1;
1428                next_offset += envelope_size;
1429            }
1430
1431            let next_out_of_line = decoder.next_out_of_line();
1432            let handles_before = decoder.remaining_handles();
1433            if let Some((inlined, num_bytes, num_handles)) =
1434                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1435            {
1436                let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::OutputCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1437                if inlined != (member_inline_size <= 4) {
1438                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1439                }
1440                let inner_offset;
1441                let mut inner_depth = depth.clone();
1442                if inlined {
1443                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1444                    inner_offset = next_offset;
1445                } else {
1446                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1447                    inner_depth.increment()?;
1448                }
1449                let val_ref = self.output_capability.get_or_insert_with(|| {
1450                    fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::OutputCapability, D)
1451                });
1452                fidl::decode!(
1453                    fidl_fuchsia_bluetooth_sys_common::OutputCapability,
1454                    D,
1455                    val_ref,
1456                    decoder,
1457                    inner_offset,
1458                    inner_depth
1459                )?;
1460                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1461                {
1462                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1463                }
1464                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1465                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1466                }
1467            }
1468
1469            next_offset += envelope_size;
1470
1471            // Decode the remaining unknown envelopes.
1472            while next_offset < end_offset {
1473                _next_ordinal_to_read += 1;
1474                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1475                next_offset += envelope_size;
1476            }
1477
1478            Ok(())
1479        }
1480    }
1481
1482    impl HostControllerGetHostsResponse {
1483        #[inline(always)]
1484        fn max_ordinal_present(&self) -> u64 {
1485            if let Some(_) = self.hosts {
1486                return 1;
1487            }
1488            0
1489        }
1490    }
1491
1492    impl fidl::encoding::ValueTypeMarker for HostControllerGetHostsResponse {
1493        type Borrowed<'a> = &'a Self;
1494        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1495            value
1496        }
1497    }
1498
1499    unsafe impl fidl::encoding::TypeMarker for HostControllerGetHostsResponse {
1500        type Owned = Self;
1501
1502        #[inline(always)]
1503        fn inline_align(_context: fidl::encoding::Context) -> usize {
1504            8
1505        }
1506
1507        #[inline(always)]
1508        fn inline_size(_context: fidl::encoding::Context) -> usize {
1509            16
1510        }
1511    }
1512
1513    unsafe impl<D: fidl::encoding::ResourceDialect>
1514        fidl::encoding::Encode<HostControllerGetHostsResponse, D>
1515        for &HostControllerGetHostsResponse
1516    {
1517        unsafe fn encode(
1518            self,
1519            encoder: &mut fidl::encoding::Encoder<'_, D>,
1520            offset: usize,
1521            mut depth: fidl::encoding::Depth,
1522        ) -> fidl::Result<()> {
1523            encoder.debug_check_bounds::<HostControllerGetHostsResponse>(offset);
1524            // Vector header
1525            let max_ordinal: u64 = self.max_ordinal_present();
1526            encoder.write_num(max_ordinal, offset);
1527            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1528            // Calling encoder.out_of_line_offset(0) is not allowed.
1529            if max_ordinal == 0 {
1530                return Ok(());
1531            }
1532            depth.increment()?;
1533            let envelope_size = 8;
1534            let bytes_len = max_ordinal as usize * envelope_size;
1535            #[allow(unused_variables)]
1536            let offset = encoder.out_of_line_offset(bytes_len);
1537            let mut _prev_end_offset: usize = 0;
1538            if 1 > max_ordinal {
1539                return Ok(());
1540            }
1541
1542            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1543            // are envelope_size bytes.
1544            let cur_offset: usize = (1 - 1) * envelope_size;
1545
1546            // Zero reserved fields.
1547            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1548
1549            // Safety:
1550            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1551            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1552            //   envelope_size bytes, there is always sufficient room.
1553            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>, D>(
1554            self.hosts.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo> as fidl::encoding::ValueTypeMarker>::borrow),
1555            encoder, offset + cur_offset, depth
1556        )?;
1557
1558            _prev_end_offset = cur_offset + envelope_size;
1559
1560            Ok(())
1561        }
1562    }
1563
1564    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1565        for HostControllerGetHostsResponse
1566    {
1567        #[inline(always)]
1568        fn new_empty() -> Self {
1569            Self::default()
1570        }
1571
1572        unsafe fn decode(
1573            &mut self,
1574            decoder: &mut fidl::encoding::Decoder<'_, D>,
1575            offset: usize,
1576            mut depth: fidl::encoding::Depth,
1577        ) -> fidl::Result<()> {
1578            decoder.debug_check_bounds::<Self>(offset);
1579            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1580                None => return Err(fidl::Error::NotNullable),
1581                Some(len) => len,
1582            };
1583            // Calling decoder.out_of_line_offset(0) is not allowed.
1584            if len == 0 {
1585                return Ok(());
1586            };
1587            depth.increment()?;
1588            let envelope_size = 8;
1589            let bytes_len = len * envelope_size;
1590            let offset = decoder.out_of_line_offset(bytes_len)?;
1591            // Decode the envelope for each type.
1592            let mut _next_ordinal_to_read = 0;
1593            let mut next_offset = offset;
1594            let end_offset = offset + bytes_len;
1595            _next_ordinal_to_read += 1;
1596            if next_offset >= end_offset {
1597                return Ok(());
1598            }
1599
1600            // Decode unknown envelopes for gaps in ordinals.
1601            while _next_ordinal_to_read < 1 {
1602                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1603                _next_ordinal_to_read += 1;
1604                next_offset += envelope_size;
1605            }
1606
1607            let next_out_of_line = decoder.next_out_of_line();
1608            let handles_before = decoder.remaining_handles();
1609            if let Some((inlined, num_bytes, num_handles)) =
1610                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1611            {
1612                let member_inline_size = <fidl::encoding::UnboundedVector<
1613                    fidl_fuchsia_bluetooth_sys_common::HostInfo,
1614                > as fidl::encoding::TypeMarker>::inline_size(
1615                    decoder.context
1616                );
1617                if inlined != (member_inline_size <= 4) {
1618                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1619                }
1620                let inner_offset;
1621                let mut inner_depth = depth.clone();
1622                if inlined {
1623                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1624                    inner_offset = next_offset;
1625                } else {
1626                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1627                    inner_depth.increment()?;
1628                }
1629                let val_ref = self.hosts.get_or_insert_with(|| {
1630                    fidl::new_empty!(
1631                        fidl::encoding::UnboundedVector<
1632                            fidl_fuchsia_bluetooth_sys_common::HostInfo,
1633                        >,
1634                        D
1635                    )
1636                });
1637                fidl::decode!(
1638                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>,
1639                    D,
1640                    val_ref,
1641                    decoder,
1642                    inner_offset,
1643                    inner_depth
1644                )?;
1645                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1646                {
1647                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1648                }
1649                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1650                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1651                }
1652            }
1653
1654            next_offset += envelope_size;
1655
1656            // Decode the remaining unknown envelopes.
1657            while next_offset < end_offset {
1658                _next_ordinal_to_read += 1;
1659                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1660                next_offset += envelope_size;
1661            }
1662
1663            Ok(())
1664        }
1665    }
1666
1667    impl HostSelector {
1668        #[inline(always)]
1669        fn max_ordinal_present(&self) -> u64 {
1670            if let Some(_) = self.id {
1671                return 1;
1672            }
1673            0
1674        }
1675    }
1676
1677    impl fidl::encoding::ValueTypeMarker for HostSelector {
1678        type Borrowed<'a> = &'a Self;
1679        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1680            value
1681        }
1682    }
1683
1684    unsafe impl fidl::encoding::TypeMarker for HostSelector {
1685        type Owned = Self;
1686
1687        #[inline(always)]
1688        fn inline_align(_context: fidl::encoding::Context) -> usize {
1689            8
1690        }
1691
1692        #[inline(always)]
1693        fn inline_size(_context: fidl::encoding::Context) -> usize {
1694            16
1695        }
1696    }
1697
1698    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HostSelector, D>
1699        for &HostSelector
1700    {
1701        unsafe fn encode(
1702            self,
1703            encoder: &mut fidl::encoding::Encoder<'_, D>,
1704            offset: usize,
1705            mut depth: fidl::encoding::Depth,
1706        ) -> fidl::Result<()> {
1707            encoder.debug_check_bounds::<HostSelector>(offset);
1708            // Vector header
1709            let max_ordinal: u64 = self.max_ordinal_present();
1710            encoder.write_num(max_ordinal, offset);
1711            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1712            // Calling encoder.out_of_line_offset(0) is not allowed.
1713            if max_ordinal == 0 {
1714                return Ok(());
1715            }
1716            depth.increment()?;
1717            let envelope_size = 8;
1718            let bytes_len = max_ordinal as usize * envelope_size;
1719            #[allow(unused_variables)]
1720            let offset = encoder.out_of_line_offset(bytes_len);
1721            let mut _prev_end_offset: usize = 0;
1722            if 1 > max_ordinal {
1723                return Ok(());
1724            }
1725
1726            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1727            // are envelope_size bytes.
1728            let cur_offset: usize = (1 - 1) * envelope_size;
1729
1730            // Zero reserved fields.
1731            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1732
1733            // Safety:
1734            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1735            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1736            //   envelope_size bytes, there is always sufficient room.
1737            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::HostId, D>(
1738            self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::ValueTypeMarker>::borrow),
1739            encoder, offset + cur_offset, depth
1740        )?;
1741
1742            _prev_end_offset = cur_offset + envelope_size;
1743
1744            Ok(())
1745        }
1746    }
1747
1748    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HostSelector {
1749        #[inline(always)]
1750        fn new_empty() -> Self {
1751            Self::default()
1752        }
1753
1754        unsafe fn decode(
1755            &mut self,
1756            decoder: &mut fidl::encoding::Decoder<'_, D>,
1757            offset: usize,
1758            mut depth: fidl::encoding::Depth,
1759        ) -> fidl::Result<()> {
1760            decoder.debug_check_bounds::<Self>(offset);
1761            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1762                None => return Err(fidl::Error::NotNullable),
1763                Some(len) => len,
1764            };
1765            // Calling decoder.out_of_line_offset(0) is not allowed.
1766            if len == 0 {
1767                return Ok(());
1768            };
1769            depth.increment()?;
1770            let envelope_size = 8;
1771            let bytes_len = len * envelope_size;
1772            let offset = decoder.out_of_line_offset(bytes_len)?;
1773            // Decode the envelope for each type.
1774            let mut _next_ordinal_to_read = 0;
1775            let mut next_offset = offset;
1776            let end_offset = offset + bytes_len;
1777            _next_ordinal_to_read += 1;
1778            if next_offset >= end_offset {
1779                return Ok(());
1780            }
1781
1782            // Decode unknown envelopes for gaps in ordinals.
1783            while _next_ordinal_to_read < 1 {
1784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1785                _next_ordinal_to_read += 1;
1786                next_offset += envelope_size;
1787            }
1788
1789            let next_out_of_line = decoder.next_out_of_line();
1790            let handles_before = decoder.remaining_handles();
1791            if let Some((inlined, num_bytes, num_handles)) =
1792                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1793            {
1794                let member_inline_size = <fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1795                if inlined != (member_inline_size <= 4) {
1796                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1797                }
1798                let inner_offset;
1799                let mut inner_depth = depth.clone();
1800                if inlined {
1801                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1802                    inner_offset = next_offset;
1803                } else {
1804                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1805                    inner_depth.increment()?;
1806                }
1807                let val_ref = self.id.get_or_insert_with(|| {
1808                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::HostId, D)
1809                });
1810                fidl::decode!(
1811                    fidl_fuchsia_bluetooth_common::HostId,
1812                    D,
1813                    val_ref,
1814                    decoder,
1815                    inner_offset,
1816                    inner_depth
1817                )?;
1818                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1819                {
1820                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1821                }
1822                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1823                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1824                }
1825            }
1826
1827            next_offset += envelope_size;
1828
1829            // Decode the remaining unknown envelopes.
1830            while next_offset < end_offset {
1831                _next_ordinal_to_read += 1;
1832                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1833                next_offset += envelope_size;
1834            }
1835
1836            Ok(())
1837        }
1838    }
1839
1840    impl PeerControllerGetPeerIdRequest {
1841        #[inline(always)]
1842        fn max_ordinal_present(&self) -> u64 {
1843            if let Some(_) = self.address {
1844                return 1;
1845            }
1846            0
1847        }
1848    }
1849
1850    impl fidl::encoding::ValueTypeMarker for PeerControllerGetPeerIdRequest {
1851        type Borrowed<'a> = &'a Self;
1852        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1853            value
1854        }
1855    }
1856
1857    unsafe impl fidl::encoding::TypeMarker for PeerControllerGetPeerIdRequest {
1858        type Owned = Self;
1859
1860        #[inline(always)]
1861        fn inline_align(_context: fidl::encoding::Context) -> usize {
1862            8
1863        }
1864
1865        #[inline(always)]
1866        fn inline_size(_context: fidl::encoding::Context) -> usize {
1867            16
1868        }
1869    }
1870
1871    unsafe impl<D: fidl::encoding::ResourceDialect>
1872        fidl::encoding::Encode<PeerControllerGetPeerIdRequest, D>
1873        for &PeerControllerGetPeerIdRequest
1874    {
1875        unsafe fn encode(
1876            self,
1877            encoder: &mut fidl::encoding::Encoder<'_, D>,
1878            offset: usize,
1879            mut depth: fidl::encoding::Depth,
1880        ) -> fidl::Result<()> {
1881            encoder.debug_check_bounds::<PeerControllerGetPeerIdRequest>(offset);
1882            // Vector header
1883            let max_ordinal: u64 = self.max_ordinal_present();
1884            encoder.write_num(max_ordinal, offset);
1885            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1886            // Calling encoder.out_of_line_offset(0) is not allowed.
1887            if max_ordinal == 0 {
1888                return Ok(());
1889            }
1890            depth.increment()?;
1891            let envelope_size = 8;
1892            let bytes_len = max_ordinal as usize * envelope_size;
1893            #[allow(unused_variables)]
1894            let offset = encoder.out_of_line_offset(bytes_len);
1895            let mut _prev_end_offset: usize = 0;
1896            if 1 > max_ordinal {
1897                return Ok(());
1898            }
1899
1900            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
1901            // are envelope_size bytes.
1902            let cur_offset: usize = (1 - 1) * envelope_size;
1903
1904            // Zero reserved fields.
1905            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1906
1907            // Safety:
1908            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
1909            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
1910            //   envelope_size bytes, there is always sufficient room.
1911            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Address, D>(
1912            self.address.as_ref().map(<fidl_fuchsia_bluetooth_common::Address as fidl::encoding::ValueTypeMarker>::borrow),
1913            encoder, offset + cur_offset, depth
1914        )?;
1915
1916            _prev_end_offset = cur_offset + envelope_size;
1917
1918            Ok(())
1919        }
1920    }
1921
1922    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1923        for PeerControllerGetPeerIdRequest
1924    {
1925        #[inline(always)]
1926        fn new_empty() -> Self {
1927            Self::default()
1928        }
1929
1930        unsafe fn decode(
1931            &mut self,
1932            decoder: &mut fidl::encoding::Decoder<'_, D>,
1933            offset: usize,
1934            mut depth: fidl::encoding::Depth,
1935        ) -> fidl::Result<()> {
1936            decoder.debug_check_bounds::<Self>(offset);
1937            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1938                None => return Err(fidl::Error::NotNullable),
1939                Some(len) => len,
1940            };
1941            // Calling decoder.out_of_line_offset(0) is not allowed.
1942            if len == 0 {
1943                return Ok(());
1944            };
1945            depth.increment()?;
1946            let envelope_size = 8;
1947            let bytes_len = len * envelope_size;
1948            let offset = decoder.out_of_line_offset(bytes_len)?;
1949            // Decode the envelope for each type.
1950            let mut _next_ordinal_to_read = 0;
1951            let mut next_offset = offset;
1952            let end_offset = offset + bytes_len;
1953            _next_ordinal_to_read += 1;
1954            if next_offset >= end_offset {
1955                return Ok(());
1956            }
1957
1958            // Decode unknown envelopes for gaps in ordinals.
1959            while _next_ordinal_to_read < 1 {
1960                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1961                _next_ordinal_to_read += 1;
1962                next_offset += envelope_size;
1963            }
1964
1965            let next_out_of_line = decoder.next_out_of_line();
1966            let handles_before = decoder.remaining_handles();
1967            if let Some((inlined, num_bytes, num_handles)) =
1968                fidl::encoding::decode_envelope_header(decoder, next_offset)?
1969            {
1970                let member_inline_size = <fidl_fuchsia_bluetooth_common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1971                if inlined != (member_inline_size <= 4) {
1972                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
1973                }
1974                let inner_offset;
1975                let mut inner_depth = depth.clone();
1976                if inlined {
1977                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1978                    inner_offset = next_offset;
1979                } else {
1980                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1981                    inner_depth.increment()?;
1982                }
1983                let val_ref = self.address.get_or_insert_with(|| {
1984                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Address, D)
1985                });
1986                fidl::decode!(
1987                    fidl_fuchsia_bluetooth_common::Address,
1988                    D,
1989                    val_ref,
1990                    decoder,
1991                    inner_offset,
1992                    inner_depth
1993                )?;
1994                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1995                {
1996                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
1997                }
1998                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1999                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2000                }
2001            }
2002
2003            next_offset += envelope_size;
2004
2005            // Decode the remaining unknown envelopes.
2006            while next_offset < end_offset {
2007                _next_ordinal_to_read += 1;
2008                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2009                next_offset += envelope_size;
2010            }
2011
2012            Ok(())
2013        }
2014    }
2015
2016    impl PeerControllerPairRequest {
2017        #[inline(always)]
2018        fn max_ordinal_present(&self) -> u64 {
2019            if let Some(_) = self.options {
2020                return 2;
2021            }
2022            if let Some(_) = self.selector {
2023                return 1;
2024            }
2025            0
2026        }
2027    }
2028
2029    impl fidl::encoding::ValueTypeMarker for PeerControllerPairRequest {
2030        type Borrowed<'a> = &'a Self;
2031        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2032            value
2033        }
2034    }
2035
2036    unsafe impl fidl::encoding::TypeMarker for PeerControllerPairRequest {
2037        type Owned = Self;
2038
2039        #[inline(always)]
2040        fn inline_align(_context: fidl::encoding::Context) -> usize {
2041            8
2042        }
2043
2044        #[inline(always)]
2045        fn inline_size(_context: fidl::encoding::Context) -> usize {
2046            16
2047        }
2048    }
2049
2050    unsafe impl<D: fidl::encoding::ResourceDialect>
2051        fidl::encoding::Encode<PeerControllerPairRequest, D> for &PeerControllerPairRequest
2052    {
2053        unsafe fn encode(
2054            self,
2055            encoder: &mut fidl::encoding::Encoder<'_, D>,
2056            offset: usize,
2057            mut depth: fidl::encoding::Depth,
2058        ) -> fidl::Result<()> {
2059            encoder.debug_check_bounds::<PeerControllerPairRequest>(offset);
2060            // Vector header
2061            let max_ordinal: u64 = self.max_ordinal_present();
2062            encoder.write_num(max_ordinal, offset);
2063            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2064            // Calling encoder.out_of_line_offset(0) is not allowed.
2065            if max_ordinal == 0 {
2066                return Ok(());
2067            }
2068            depth.increment()?;
2069            let envelope_size = 8;
2070            let bytes_len = max_ordinal as usize * envelope_size;
2071            #[allow(unused_variables)]
2072            let offset = encoder.out_of_line_offset(bytes_len);
2073            let mut _prev_end_offset: usize = 0;
2074            if 1 > max_ordinal {
2075                return Ok(());
2076            }
2077
2078            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2079            // are envelope_size bytes.
2080            let cur_offset: usize = (1 - 1) * envelope_size;
2081
2082            // Zero reserved fields.
2083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2084
2085            // Safety:
2086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2088            //   envelope_size bytes, there is always sufficient room.
2089            fidl::encoding::encode_in_envelope_optional::<PeerSelector, D>(
2090                self.selector
2091                    .as_ref()
2092                    .map(<PeerSelector as fidl::encoding::ValueTypeMarker>::borrow),
2093                encoder,
2094                offset + cur_offset,
2095                depth,
2096            )?;
2097
2098            _prev_end_offset = cur_offset + envelope_size;
2099            if 2 > max_ordinal {
2100                return Ok(());
2101            }
2102
2103            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2104            // are envelope_size bytes.
2105            let cur_offset: usize = (2 - 1) * envelope_size;
2106
2107            // Zero reserved fields.
2108            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2109
2110            // Safety:
2111            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2112            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2113            //   envelope_size bytes, there is always sufficient room.
2114            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::PairingOptions, D>(
2115            self.options.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::PairingOptions as fidl::encoding::ValueTypeMarker>::borrow),
2116            encoder, offset + cur_offset, depth
2117        )?;
2118
2119            _prev_end_offset = cur_offset + envelope_size;
2120
2121            Ok(())
2122        }
2123    }
2124
2125    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2126        for PeerControllerPairRequest
2127    {
2128        #[inline(always)]
2129        fn new_empty() -> Self {
2130            Self::default()
2131        }
2132
2133        unsafe fn decode(
2134            &mut self,
2135            decoder: &mut fidl::encoding::Decoder<'_, D>,
2136            offset: usize,
2137            mut depth: fidl::encoding::Depth,
2138        ) -> fidl::Result<()> {
2139            decoder.debug_check_bounds::<Self>(offset);
2140            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2141                None => return Err(fidl::Error::NotNullable),
2142                Some(len) => len,
2143            };
2144            // Calling decoder.out_of_line_offset(0) is not allowed.
2145            if len == 0 {
2146                return Ok(());
2147            };
2148            depth.increment()?;
2149            let envelope_size = 8;
2150            let bytes_len = len * envelope_size;
2151            let offset = decoder.out_of_line_offset(bytes_len)?;
2152            // Decode the envelope for each type.
2153            let mut _next_ordinal_to_read = 0;
2154            let mut next_offset = offset;
2155            let end_offset = offset + bytes_len;
2156            _next_ordinal_to_read += 1;
2157            if next_offset >= end_offset {
2158                return Ok(());
2159            }
2160
2161            // Decode unknown envelopes for gaps in ordinals.
2162            while _next_ordinal_to_read < 1 {
2163                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2164                _next_ordinal_to_read += 1;
2165                next_offset += envelope_size;
2166            }
2167
2168            let next_out_of_line = decoder.next_out_of_line();
2169            let handles_before = decoder.remaining_handles();
2170            if let Some((inlined, num_bytes, num_handles)) =
2171                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2172            {
2173                let member_inline_size =
2174                    <PeerSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2175                if inlined != (member_inline_size <= 4) {
2176                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2177                }
2178                let inner_offset;
2179                let mut inner_depth = depth.clone();
2180                if inlined {
2181                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2182                    inner_offset = next_offset;
2183                } else {
2184                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2185                    inner_depth.increment()?;
2186                }
2187                let val_ref =
2188                    self.selector.get_or_insert_with(|| fidl::new_empty!(PeerSelector, D));
2189                fidl::decode!(PeerSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
2190                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2191                {
2192                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2193                }
2194                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2195                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2196                }
2197            }
2198
2199            next_offset += envelope_size;
2200            _next_ordinal_to_read += 1;
2201            if next_offset >= end_offset {
2202                return Ok(());
2203            }
2204
2205            // Decode unknown envelopes for gaps in ordinals.
2206            while _next_ordinal_to_read < 2 {
2207                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2208                _next_ordinal_to_read += 1;
2209                next_offset += envelope_size;
2210            }
2211
2212            let next_out_of_line = decoder.next_out_of_line();
2213            let handles_before = decoder.remaining_handles();
2214            if let Some((inlined, num_bytes, num_handles)) =
2215                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2216            {
2217                let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::PairingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2218                if inlined != (member_inline_size <= 4) {
2219                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2220                }
2221                let inner_offset;
2222                let mut inner_depth = depth.clone();
2223                if inlined {
2224                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2225                    inner_offset = next_offset;
2226                } else {
2227                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2228                    inner_depth.increment()?;
2229                }
2230                let val_ref = self.options.get_or_insert_with(|| {
2231                    fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::PairingOptions, D)
2232                });
2233                fidl::decode!(
2234                    fidl_fuchsia_bluetooth_sys_common::PairingOptions,
2235                    D,
2236                    val_ref,
2237                    decoder,
2238                    inner_offset,
2239                    inner_depth
2240                )?;
2241                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2242                {
2243                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2244                }
2245                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2246                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2247                }
2248            }
2249
2250            next_offset += envelope_size;
2251
2252            // Decode the remaining unknown envelopes.
2253            while next_offset < end_offset {
2254                _next_ordinal_to_read += 1;
2255                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2256                next_offset += envelope_size;
2257            }
2258
2259            Ok(())
2260        }
2261    }
2262
2263    impl PeerControllerSetDiscoveryRequest {
2264        #[inline(always)]
2265        fn max_ordinal_present(&self) -> u64 {
2266            if let Some(_) = self.discovery {
2267                return 1;
2268            }
2269            0
2270        }
2271    }
2272
2273    impl fidl::encoding::ValueTypeMarker for PeerControllerSetDiscoveryRequest {
2274        type Borrowed<'a> = &'a Self;
2275        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2276            value
2277        }
2278    }
2279
2280    unsafe impl fidl::encoding::TypeMarker for PeerControllerSetDiscoveryRequest {
2281        type Owned = Self;
2282
2283        #[inline(always)]
2284        fn inline_align(_context: fidl::encoding::Context) -> usize {
2285            8
2286        }
2287
2288        #[inline(always)]
2289        fn inline_size(_context: fidl::encoding::Context) -> usize {
2290            16
2291        }
2292    }
2293
2294    unsafe impl<D: fidl::encoding::ResourceDialect>
2295        fidl::encoding::Encode<PeerControllerSetDiscoveryRequest, D>
2296        for &PeerControllerSetDiscoveryRequest
2297    {
2298        unsafe fn encode(
2299            self,
2300            encoder: &mut fidl::encoding::Encoder<'_, D>,
2301            offset: usize,
2302            mut depth: fidl::encoding::Depth,
2303        ) -> fidl::Result<()> {
2304            encoder.debug_check_bounds::<PeerControllerSetDiscoveryRequest>(offset);
2305            // Vector header
2306            let max_ordinal: u64 = self.max_ordinal_present();
2307            encoder.write_num(max_ordinal, offset);
2308            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2309            // Calling encoder.out_of_line_offset(0) is not allowed.
2310            if max_ordinal == 0 {
2311                return Ok(());
2312            }
2313            depth.increment()?;
2314            let envelope_size = 8;
2315            let bytes_len = max_ordinal as usize * envelope_size;
2316            #[allow(unused_variables)]
2317            let offset = encoder.out_of_line_offset(bytes_len);
2318            let mut _prev_end_offset: usize = 0;
2319            if 1 > max_ordinal {
2320                return Ok(());
2321            }
2322
2323            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2324            // are envelope_size bytes.
2325            let cur_offset: usize = (1 - 1) * envelope_size;
2326
2327            // Zero reserved fields.
2328            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2329
2330            // Safety:
2331            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2332            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2333            //   envelope_size bytes, there is always sufficient room.
2334            fidl::encoding::encode_in_envelope_optional::<bool, D>(
2335                self.discovery.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2336                encoder,
2337                offset + cur_offset,
2338                depth,
2339            )?;
2340
2341            _prev_end_offset = cur_offset + envelope_size;
2342
2343            Ok(())
2344        }
2345    }
2346
2347    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2348        for PeerControllerSetDiscoveryRequest
2349    {
2350        #[inline(always)]
2351        fn new_empty() -> Self {
2352            Self::default()
2353        }
2354
2355        unsafe fn decode(
2356            &mut self,
2357            decoder: &mut fidl::encoding::Decoder<'_, D>,
2358            offset: usize,
2359            mut depth: fidl::encoding::Depth,
2360        ) -> fidl::Result<()> {
2361            decoder.debug_check_bounds::<Self>(offset);
2362            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2363                None => return Err(fidl::Error::NotNullable),
2364                Some(len) => len,
2365            };
2366            // Calling decoder.out_of_line_offset(0) is not allowed.
2367            if len == 0 {
2368                return Ok(());
2369            };
2370            depth.increment()?;
2371            let envelope_size = 8;
2372            let bytes_len = len * envelope_size;
2373            let offset = decoder.out_of_line_offset(bytes_len)?;
2374            // Decode the envelope for each type.
2375            let mut _next_ordinal_to_read = 0;
2376            let mut next_offset = offset;
2377            let end_offset = offset + bytes_len;
2378            _next_ordinal_to_read += 1;
2379            if next_offset >= end_offset {
2380                return Ok(());
2381            }
2382
2383            // Decode unknown envelopes for gaps in ordinals.
2384            while _next_ordinal_to_read < 1 {
2385                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2386                _next_ordinal_to_read += 1;
2387                next_offset += envelope_size;
2388            }
2389
2390            let next_out_of_line = decoder.next_out_of_line();
2391            let handles_before = decoder.remaining_handles();
2392            if let Some((inlined, num_bytes, num_handles)) =
2393                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2394            {
2395                let member_inline_size =
2396                    <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2397                if inlined != (member_inline_size <= 4) {
2398                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2399                }
2400                let inner_offset;
2401                let mut inner_depth = depth.clone();
2402                if inlined {
2403                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2404                    inner_offset = next_offset;
2405                } else {
2406                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2407                    inner_depth.increment()?;
2408                }
2409                let val_ref = self.discovery.get_or_insert_with(|| fidl::new_empty!(bool, D));
2410                fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2411                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2412                {
2413                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2414                }
2415                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2416                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2417                }
2418            }
2419
2420            next_offset += envelope_size;
2421
2422            // Decode the remaining unknown envelopes.
2423            while next_offset < end_offset {
2424                _next_ordinal_to_read += 1;
2425                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2426                next_offset += envelope_size;
2427            }
2428
2429            Ok(())
2430        }
2431    }
2432
2433    impl PeerControllerGetKnownPeersResponse {
2434        #[inline(always)]
2435        fn max_ordinal_present(&self) -> u64 {
2436            if let Some(_) = self.peers {
2437                return 1;
2438            }
2439            0
2440        }
2441    }
2442
2443    impl fidl::encoding::ValueTypeMarker for PeerControllerGetKnownPeersResponse {
2444        type Borrowed<'a> = &'a Self;
2445        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2446            value
2447        }
2448    }
2449
2450    unsafe impl fidl::encoding::TypeMarker for PeerControllerGetKnownPeersResponse {
2451        type Owned = Self;
2452
2453        #[inline(always)]
2454        fn inline_align(_context: fidl::encoding::Context) -> usize {
2455            8
2456        }
2457
2458        #[inline(always)]
2459        fn inline_size(_context: fidl::encoding::Context) -> usize {
2460            16
2461        }
2462    }
2463
2464    unsafe impl<D: fidl::encoding::ResourceDialect>
2465        fidl::encoding::Encode<PeerControllerGetKnownPeersResponse, D>
2466        for &PeerControllerGetKnownPeersResponse
2467    {
2468        unsafe fn encode(
2469            self,
2470            encoder: &mut fidl::encoding::Encoder<'_, D>,
2471            offset: usize,
2472            mut depth: fidl::encoding::Depth,
2473        ) -> fidl::Result<()> {
2474            encoder.debug_check_bounds::<PeerControllerGetKnownPeersResponse>(offset);
2475            // Vector header
2476            let max_ordinal: u64 = self.max_ordinal_present();
2477            encoder.write_num(max_ordinal, offset);
2478            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2479            // Calling encoder.out_of_line_offset(0) is not allowed.
2480            if max_ordinal == 0 {
2481                return Ok(());
2482            }
2483            depth.increment()?;
2484            let envelope_size = 8;
2485            let bytes_len = max_ordinal as usize * envelope_size;
2486            #[allow(unused_variables)]
2487            let offset = encoder.out_of_line_offset(bytes_len);
2488            let mut _prev_end_offset: usize = 0;
2489            if 1 > max_ordinal {
2490                return Ok(());
2491            }
2492
2493            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2494            // are envelope_size bytes.
2495            let cur_offset: usize = (1 - 1) * envelope_size;
2496
2497            // Zero reserved fields.
2498            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2499
2500            // Safety:
2501            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2502            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2503            //   envelope_size bytes, there is always sufficient room.
2504            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>, D>(
2505            self.peers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow),
2506            encoder, offset + cur_offset, depth
2507        )?;
2508
2509            _prev_end_offset = cur_offset + envelope_size;
2510
2511            Ok(())
2512        }
2513    }
2514
2515    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2516        for PeerControllerGetKnownPeersResponse
2517    {
2518        #[inline(always)]
2519        fn new_empty() -> Self {
2520            Self::default()
2521        }
2522
2523        unsafe fn decode(
2524            &mut self,
2525            decoder: &mut fidl::encoding::Decoder<'_, D>,
2526            offset: usize,
2527            mut depth: fidl::encoding::Depth,
2528        ) -> fidl::Result<()> {
2529            decoder.debug_check_bounds::<Self>(offset);
2530            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2531                None => return Err(fidl::Error::NotNullable),
2532                Some(len) => len,
2533            };
2534            // Calling decoder.out_of_line_offset(0) is not allowed.
2535            if len == 0 {
2536                return Ok(());
2537            };
2538            depth.increment()?;
2539            let envelope_size = 8;
2540            let bytes_len = len * envelope_size;
2541            let offset = decoder.out_of_line_offset(bytes_len)?;
2542            // Decode the envelope for each type.
2543            let mut _next_ordinal_to_read = 0;
2544            let mut next_offset = offset;
2545            let end_offset = offset + bytes_len;
2546            _next_ordinal_to_read += 1;
2547            if next_offset >= end_offset {
2548                return Ok(());
2549            }
2550
2551            // Decode unknown envelopes for gaps in ordinals.
2552            while _next_ordinal_to_read < 1 {
2553                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2554                _next_ordinal_to_read += 1;
2555                next_offset += envelope_size;
2556            }
2557
2558            let next_out_of_line = decoder.next_out_of_line();
2559            let handles_before = decoder.remaining_handles();
2560            if let Some((inlined, num_bytes, num_handles)) =
2561                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2562            {
2563                let member_inline_size = <fidl::encoding::UnboundedVector<
2564                    fidl_fuchsia_bluetooth_sys_common::Peer,
2565                > as fidl::encoding::TypeMarker>::inline_size(
2566                    decoder.context
2567                );
2568                if inlined != (member_inline_size <= 4) {
2569                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2570                }
2571                let inner_offset;
2572                let mut inner_depth = depth.clone();
2573                if inlined {
2574                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2575                    inner_offset = next_offset;
2576                } else {
2577                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2578                    inner_depth.increment()?;
2579                }
2580                let val_ref = self.peers.get_or_insert_with(|| {
2581                    fidl::new_empty!(
2582                        fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
2583                        D
2584                    )
2585                });
2586                fidl::decode!(
2587                    fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
2588                    D,
2589                    val_ref,
2590                    decoder,
2591                    inner_offset,
2592                    inner_depth
2593                )?;
2594                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2595                {
2596                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2597                }
2598                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2599                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2600                }
2601            }
2602
2603            next_offset += envelope_size;
2604
2605            // Decode the remaining unknown envelopes.
2606            while next_offset < end_offset {
2607                _next_ordinal_to_read += 1;
2608                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2609                next_offset += envelope_size;
2610            }
2611
2612            Ok(())
2613        }
2614    }
2615
2616    impl PeerControllerGetPeerIdResponse {
2617        #[inline(always)]
2618        fn max_ordinal_present(&self) -> u64 {
2619            if let Some(_) = self.id {
2620                return 1;
2621            }
2622            0
2623        }
2624    }
2625
2626    impl fidl::encoding::ValueTypeMarker for PeerControllerGetPeerIdResponse {
2627        type Borrowed<'a> = &'a Self;
2628        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2629            value
2630        }
2631    }
2632
2633    unsafe impl fidl::encoding::TypeMarker for PeerControllerGetPeerIdResponse {
2634        type Owned = Self;
2635
2636        #[inline(always)]
2637        fn inline_align(_context: fidl::encoding::Context) -> usize {
2638            8
2639        }
2640
2641        #[inline(always)]
2642        fn inline_size(_context: fidl::encoding::Context) -> usize {
2643            16
2644        }
2645    }
2646
2647    unsafe impl<D: fidl::encoding::ResourceDialect>
2648        fidl::encoding::Encode<PeerControllerGetPeerIdResponse, D>
2649        for &PeerControllerGetPeerIdResponse
2650    {
2651        unsafe fn encode(
2652            self,
2653            encoder: &mut fidl::encoding::Encoder<'_, D>,
2654            offset: usize,
2655            mut depth: fidl::encoding::Depth,
2656        ) -> fidl::Result<()> {
2657            encoder.debug_check_bounds::<PeerControllerGetPeerIdResponse>(offset);
2658            // Vector header
2659            let max_ordinal: u64 = self.max_ordinal_present();
2660            encoder.write_num(max_ordinal, offset);
2661            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2662            // Calling encoder.out_of_line_offset(0) is not allowed.
2663            if max_ordinal == 0 {
2664                return Ok(());
2665            }
2666            depth.increment()?;
2667            let envelope_size = 8;
2668            let bytes_len = max_ordinal as usize * envelope_size;
2669            #[allow(unused_variables)]
2670            let offset = encoder.out_of_line_offset(bytes_len);
2671            let mut _prev_end_offset: usize = 0;
2672            if 1 > max_ordinal {
2673                return Ok(());
2674            }
2675
2676            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2677            // are envelope_size bytes.
2678            let cur_offset: usize = (1 - 1) * envelope_size;
2679
2680            // Zero reserved fields.
2681            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2682
2683            // Safety:
2684            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2685            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2686            //   envelope_size bytes, there is always sufficient room.
2687            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2688            self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2689            encoder, offset + cur_offset, depth
2690        )?;
2691
2692            _prev_end_offset = cur_offset + envelope_size;
2693
2694            Ok(())
2695        }
2696    }
2697
2698    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2699        for PeerControllerGetPeerIdResponse
2700    {
2701        #[inline(always)]
2702        fn new_empty() -> Self {
2703            Self::default()
2704        }
2705
2706        unsafe fn decode(
2707            &mut self,
2708            decoder: &mut fidl::encoding::Decoder<'_, D>,
2709            offset: usize,
2710            mut depth: fidl::encoding::Depth,
2711        ) -> fidl::Result<()> {
2712            decoder.debug_check_bounds::<Self>(offset);
2713            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2714                None => return Err(fidl::Error::NotNullable),
2715                Some(len) => len,
2716            };
2717            // Calling decoder.out_of_line_offset(0) is not allowed.
2718            if len == 0 {
2719                return Ok(());
2720            };
2721            depth.increment()?;
2722            let envelope_size = 8;
2723            let bytes_len = len * envelope_size;
2724            let offset = decoder.out_of_line_offset(bytes_len)?;
2725            // Decode the envelope for each type.
2726            let mut _next_ordinal_to_read = 0;
2727            let mut next_offset = offset;
2728            let end_offset = offset + bytes_len;
2729            _next_ordinal_to_read += 1;
2730            if next_offset >= end_offset {
2731                return Ok(());
2732            }
2733
2734            // Decode unknown envelopes for gaps in ordinals.
2735            while _next_ordinal_to_read < 1 {
2736                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2737                _next_ordinal_to_read += 1;
2738                next_offset += envelope_size;
2739            }
2740
2741            let next_out_of_line = decoder.next_out_of_line();
2742            let handles_before = decoder.remaining_handles();
2743            if let Some((inlined, num_bytes, num_handles)) =
2744                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2745            {
2746                let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2747                if inlined != (member_inline_size <= 4) {
2748                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2749                }
2750                let inner_offset;
2751                let mut inner_depth = depth.clone();
2752                if inlined {
2753                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2754                    inner_offset = next_offset;
2755                } else {
2756                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2757                    inner_depth.increment()?;
2758                }
2759                let val_ref = self.id.get_or_insert_with(|| {
2760                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2761                });
2762                fidl::decode!(
2763                    fidl_fuchsia_bluetooth_common::PeerId,
2764                    D,
2765                    val_ref,
2766                    decoder,
2767                    inner_offset,
2768                    inner_depth
2769                )?;
2770                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2771                {
2772                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2773                }
2774                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2775                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2776                }
2777            }
2778
2779            next_offset += envelope_size;
2780
2781            // Decode the remaining unknown envelopes.
2782            while next_offset < end_offset {
2783                _next_ordinal_to_read += 1;
2784                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2785                next_offset += envelope_size;
2786            }
2787
2788            Ok(())
2789        }
2790    }
2791
2792    impl PeerSelector {
2793        #[inline(always)]
2794        fn max_ordinal_present(&self) -> u64 {
2795            if let Some(_) = self.id {
2796                return 1;
2797            }
2798            0
2799        }
2800    }
2801
2802    impl fidl::encoding::ValueTypeMarker for PeerSelector {
2803        type Borrowed<'a> = &'a Self;
2804        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2805            value
2806        }
2807    }
2808
2809    unsafe impl fidl::encoding::TypeMarker for PeerSelector {
2810        type Owned = Self;
2811
2812        #[inline(always)]
2813        fn inline_align(_context: fidl::encoding::Context) -> usize {
2814            8
2815        }
2816
2817        #[inline(always)]
2818        fn inline_size(_context: fidl::encoding::Context) -> usize {
2819            16
2820        }
2821    }
2822
2823    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PeerSelector, D>
2824        for &PeerSelector
2825    {
2826        unsafe fn encode(
2827            self,
2828            encoder: &mut fidl::encoding::Encoder<'_, D>,
2829            offset: usize,
2830            mut depth: fidl::encoding::Depth,
2831        ) -> fidl::Result<()> {
2832            encoder.debug_check_bounds::<PeerSelector>(offset);
2833            // Vector header
2834            let max_ordinal: u64 = self.max_ordinal_present();
2835            encoder.write_num(max_ordinal, offset);
2836            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2837            // Calling encoder.out_of_line_offset(0) is not allowed.
2838            if max_ordinal == 0 {
2839                return Ok(());
2840            }
2841            depth.increment()?;
2842            let envelope_size = 8;
2843            let bytes_len = max_ordinal as usize * envelope_size;
2844            #[allow(unused_variables)]
2845            let offset = encoder.out_of_line_offset(bytes_len);
2846            let mut _prev_end_offset: usize = 0;
2847            if 1 > max_ordinal {
2848                return Ok(());
2849            }
2850
2851            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
2852            // are envelope_size bytes.
2853            let cur_offset: usize = (1 - 1) * envelope_size;
2854
2855            // Zero reserved fields.
2856            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2857
2858            // Safety:
2859            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
2860            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
2861            //   envelope_size bytes, there is always sufficient room.
2862            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2863            self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2864            encoder, offset + cur_offset, depth
2865        )?;
2866
2867            _prev_end_offset = cur_offset + envelope_size;
2868
2869            Ok(())
2870        }
2871    }
2872
2873    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeerSelector {
2874        #[inline(always)]
2875        fn new_empty() -> Self {
2876            Self::default()
2877        }
2878
2879        unsafe fn decode(
2880            &mut self,
2881            decoder: &mut fidl::encoding::Decoder<'_, D>,
2882            offset: usize,
2883            mut depth: fidl::encoding::Depth,
2884        ) -> fidl::Result<()> {
2885            decoder.debug_check_bounds::<Self>(offset);
2886            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2887                None => return Err(fidl::Error::NotNullable),
2888                Some(len) => len,
2889            };
2890            // Calling decoder.out_of_line_offset(0) is not allowed.
2891            if len == 0 {
2892                return Ok(());
2893            };
2894            depth.increment()?;
2895            let envelope_size = 8;
2896            let bytes_len = len * envelope_size;
2897            let offset = decoder.out_of_line_offset(bytes_len)?;
2898            // Decode the envelope for each type.
2899            let mut _next_ordinal_to_read = 0;
2900            let mut next_offset = offset;
2901            let end_offset = offset + bytes_len;
2902            _next_ordinal_to_read += 1;
2903            if next_offset >= end_offset {
2904                return Ok(());
2905            }
2906
2907            // Decode unknown envelopes for gaps in ordinals.
2908            while _next_ordinal_to_read < 1 {
2909                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2910                _next_ordinal_to_read += 1;
2911                next_offset += envelope_size;
2912            }
2913
2914            let next_out_of_line = decoder.next_out_of_line();
2915            let handles_before = decoder.remaining_handles();
2916            if let Some((inlined, num_bytes, num_handles)) =
2917                fidl::encoding::decode_envelope_header(decoder, next_offset)?
2918            {
2919                let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2920                if inlined != (member_inline_size <= 4) {
2921                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
2922                }
2923                let inner_offset;
2924                let mut inner_depth = depth.clone();
2925                if inlined {
2926                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2927                    inner_offset = next_offset;
2928                } else {
2929                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2930                    inner_depth.increment()?;
2931                }
2932                let val_ref = self.id.get_or_insert_with(|| {
2933                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2934                });
2935                fidl::decode!(
2936                    fidl_fuchsia_bluetooth_common::PeerId,
2937                    D,
2938                    val_ref,
2939                    decoder,
2940                    inner_offset,
2941                    inner_depth
2942                )?;
2943                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2944                {
2945                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
2946                }
2947                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2948                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2949                }
2950            }
2951
2952            next_offset += envelope_size;
2953
2954            // Decode the remaining unknown envelopes.
2955            while next_offset < end_offset {
2956                _next_ordinal_to_read += 1;
2957                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2958                next_offset += envelope_size;
2959            }
2960
2961            Ok(())
2962        }
2963    }
2964
2965    impl PeripheralControllerAdvertiseRequest {
2966        #[inline(always)]
2967        fn max_ordinal_present(&self) -> u64 {
2968            if let Some(_) = self.timeout {
2969                return 2;
2970            }
2971            if let Some(_) = self.parameters {
2972                return 1;
2973            }
2974            0
2975        }
2976    }
2977
2978    impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseRequest {
2979        type Borrowed<'a> = &'a Self;
2980        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2981            value
2982        }
2983    }
2984
2985    unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseRequest {
2986        type Owned = Self;
2987
2988        #[inline(always)]
2989        fn inline_align(_context: fidl::encoding::Context) -> usize {
2990            8
2991        }
2992
2993        #[inline(always)]
2994        fn inline_size(_context: fidl::encoding::Context) -> usize {
2995            16
2996        }
2997    }
2998
2999    unsafe impl<D: fidl::encoding::ResourceDialect>
3000        fidl::encoding::Encode<PeripheralControllerAdvertiseRequest, D>
3001        for &PeripheralControllerAdvertiseRequest
3002    {
3003        unsafe fn encode(
3004            self,
3005            encoder: &mut fidl::encoding::Encoder<'_, D>,
3006            offset: usize,
3007            mut depth: fidl::encoding::Depth,
3008        ) -> fidl::Result<()> {
3009            encoder.debug_check_bounds::<PeripheralControllerAdvertiseRequest>(offset);
3010            // Vector header
3011            let max_ordinal: u64 = self.max_ordinal_present();
3012            encoder.write_num(max_ordinal, offset);
3013            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3014            // Calling encoder.out_of_line_offset(0) is not allowed.
3015            if max_ordinal == 0 {
3016                return Ok(());
3017            }
3018            depth.increment()?;
3019            let envelope_size = 8;
3020            let bytes_len = max_ordinal as usize * envelope_size;
3021            #[allow(unused_variables)]
3022            let offset = encoder.out_of_line_offset(bytes_len);
3023            let mut _prev_end_offset: usize = 0;
3024            if 1 > max_ordinal {
3025                return Ok(());
3026            }
3027
3028            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3029            // are envelope_size bytes.
3030            let cur_offset: usize = (1 - 1) * envelope_size;
3031
3032            // Zero reserved fields.
3033            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3034
3035            // Safety:
3036            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3037            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3038            //   envelope_size bytes, there is always sufficient room.
3039            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D>(
3040            self.parameters.as_ref().map(<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::ValueTypeMarker>::borrow),
3041            encoder, offset + cur_offset, depth
3042        )?;
3043
3044            _prev_end_offset = cur_offset + envelope_size;
3045            if 2 > max_ordinal {
3046                return Ok(());
3047            }
3048
3049            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3050            // are envelope_size bytes.
3051            let cur_offset: usize = (2 - 1) * envelope_size;
3052
3053            // Zero reserved fields.
3054            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3055
3056            // Safety:
3057            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3058            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3059            //   envelope_size bytes, there is always sufficient room.
3060            fidl::encoding::encode_in_envelope_optional::<u64, D>(
3061                self.timeout.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3062                encoder,
3063                offset + cur_offset,
3064                depth,
3065            )?;
3066
3067            _prev_end_offset = cur_offset + envelope_size;
3068
3069            Ok(())
3070        }
3071    }
3072
3073    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3074        for PeripheralControllerAdvertiseRequest
3075    {
3076        #[inline(always)]
3077        fn new_empty() -> Self {
3078            Self::default()
3079        }
3080
3081        unsafe fn decode(
3082            &mut self,
3083            decoder: &mut fidl::encoding::Decoder<'_, D>,
3084            offset: usize,
3085            mut depth: fidl::encoding::Depth,
3086        ) -> fidl::Result<()> {
3087            decoder.debug_check_bounds::<Self>(offset);
3088            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3089                None => return Err(fidl::Error::NotNullable),
3090                Some(len) => len,
3091            };
3092            // Calling decoder.out_of_line_offset(0) is not allowed.
3093            if len == 0 {
3094                return Ok(());
3095            };
3096            depth.increment()?;
3097            let envelope_size = 8;
3098            let bytes_len = len * envelope_size;
3099            let offset = decoder.out_of_line_offset(bytes_len)?;
3100            // Decode the envelope for each type.
3101            let mut _next_ordinal_to_read = 0;
3102            let mut next_offset = offset;
3103            let end_offset = offset + bytes_len;
3104            _next_ordinal_to_read += 1;
3105            if next_offset >= end_offset {
3106                return Ok(());
3107            }
3108
3109            // Decode unknown envelopes for gaps in ordinals.
3110            while _next_ordinal_to_read < 1 {
3111                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3112                _next_ordinal_to_read += 1;
3113                next_offset += envelope_size;
3114            }
3115
3116            let next_out_of_line = decoder.next_out_of_line();
3117            let handles_before = decoder.remaining_handles();
3118            if let Some((inlined, num_bytes, num_handles)) =
3119                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3120            {
3121                let member_inline_size = <fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3122                if inlined != (member_inline_size <= 4) {
3123                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3124                }
3125                let inner_offset;
3126                let mut inner_depth = depth.clone();
3127                if inlined {
3128                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3129                    inner_offset = next_offset;
3130                } else {
3131                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3132                    inner_depth.increment()?;
3133                }
3134                let val_ref = self.parameters.get_or_insert_with(|| {
3135                    fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D)
3136                });
3137                fidl::decode!(
3138                    fidl_fuchsia_bluetooth_le_common::AdvertisingParameters,
3139                    D,
3140                    val_ref,
3141                    decoder,
3142                    inner_offset,
3143                    inner_depth
3144                )?;
3145                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3146                {
3147                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3148                }
3149                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3150                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3151                }
3152            }
3153
3154            next_offset += envelope_size;
3155            _next_ordinal_to_read += 1;
3156            if next_offset >= end_offset {
3157                return Ok(());
3158            }
3159
3160            // Decode unknown envelopes for gaps in ordinals.
3161            while _next_ordinal_to_read < 2 {
3162                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3163                _next_ordinal_to_read += 1;
3164                next_offset += envelope_size;
3165            }
3166
3167            let next_out_of_line = decoder.next_out_of_line();
3168            let handles_before = decoder.remaining_handles();
3169            if let Some((inlined, num_bytes, num_handles)) =
3170                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3171            {
3172                let member_inline_size =
3173                    <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3174                if inlined != (member_inline_size <= 4) {
3175                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3176                }
3177                let inner_offset;
3178                let mut inner_depth = depth.clone();
3179                if inlined {
3180                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3181                    inner_offset = next_offset;
3182                } else {
3183                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3184                    inner_depth.increment()?;
3185                }
3186                let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(u64, D));
3187                fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3188                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3189                {
3190                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3191                }
3192                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3193                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3194                }
3195            }
3196
3197            next_offset += envelope_size;
3198
3199            // Decode the remaining unknown envelopes.
3200            while next_offset < end_offset {
3201                _next_ordinal_to_read += 1;
3202                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3203                next_offset += envelope_size;
3204            }
3205
3206            Ok(())
3207        }
3208    }
3209
3210    impl PeripheralControllerAdvertiseResponse {
3211        #[inline(always)]
3212        fn max_ordinal_present(&self) -> u64 {
3213            if let Some(_) = self.peer_id {
3214                return 1;
3215            }
3216            0
3217        }
3218    }
3219
3220    impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseResponse {
3221        type Borrowed<'a> = &'a Self;
3222        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3223            value
3224        }
3225    }
3226
3227    unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseResponse {
3228        type Owned = Self;
3229
3230        #[inline(always)]
3231        fn inline_align(_context: fidl::encoding::Context) -> usize {
3232            8
3233        }
3234
3235        #[inline(always)]
3236        fn inline_size(_context: fidl::encoding::Context) -> usize {
3237            16
3238        }
3239    }
3240
3241    unsafe impl<D: fidl::encoding::ResourceDialect>
3242        fidl::encoding::Encode<PeripheralControllerAdvertiseResponse, D>
3243        for &PeripheralControllerAdvertiseResponse
3244    {
3245        unsafe fn encode(
3246            self,
3247            encoder: &mut fidl::encoding::Encoder<'_, D>,
3248            offset: usize,
3249            mut depth: fidl::encoding::Depth,
3250        ) -> fidl::Result<()> {
3251            encoder.debug_check_bounds::<PeripheralControllerAdvertiseResponse>(offset);
3252            // Vector header
3253            let max_ordinal: u64 = self.max_ordinal_present();
3254            encoder.write_num(max_ordinal, offset);
3255            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3256            // Calling encoder.out_of_line_offset(0) is not allowed.
3257            if max_ordinal == 0 {
3258                return Ok(());
3259            }
3260            depth.increment()?;
3261            let envelope_size = 8;
3262            let bytes_len = max_ordinal as usize * envelope_size;
3263            #[allow(unused_variables)]
3264            let offset = encoder.out_of_line_offset(bytes_len);
3265            let mut _prev_end_offset: usize = 0;
3266            if 1 > max_ordinal {
3267                return Ok(());
3268            }
3269
3270            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3271            // are envelope_size bytes.
3272            let cur_offset: usize = (1 - 1) * envelope_size;
3273
3274            // Zero reserved fields.
3275            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3276
3277            // Safety:
3278            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3279            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3280            //   envelope_size bytes, there is always sufficient room.
3281            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
3282            self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
3283            encoder, offset + cur_offset, depth
3284        )?;
3285
3286            _prev_end_offset = cur_offset + envelope_size;
3287
3288            Ok(())
3289        }
3290    }
3291
3292    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3293        for PeripheralControllerAdvertiseResponse
3294    {
3295        #[inline(always)]
3296        fn new_empty() -> Self {
3297            Self::default()
3298        }
3299
3300        unsafe fn decode(
3301            &mut self,
3302            decoder: &mut fidl::encoding::Decoder<'_, D>,
3303            offset: usize,
3304            mut depth: fidl::encoding::Depth,
3305        ) -> fidl::Result<()> {
3306            decoder.debug_check_bounds::<Self>(offset);
3307            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3308                None => return Err(fidl::Error::NotNullable),
3309                Some(len) => len,
3310            };
3311            // Calling decoder.out_of_line_offset(0) is not allowed.
3312            if len == 0 {
3313                return Ok(());
3314            };
3315            depth.increment()?;
3316            let envelope_size = 8;
3317            let bytes_len = len * envelope_size;
3318            let offset = decoder.out_of_line_offset(bytes_len)?;
3319            // Decode the envelope for each type.
3320            let mut _next_ordinal_to_read = 0;
3321            let mut next_offset = offset;
3322            let end_offset = offset + bytes_len;
3323            _next_ordinal_to_read += 1;
3324            if next_offset >= end_offset {
3325                return Ok(());
3326            }
3327
3328            // Decode unknown envelopes for gaps in ordinals.
3329            while _next_ordinal_to_read < 1 {
3330                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3331                _next_ordinal_to_read += 1;
3332                next_offset += envelope_size;
3333            }
3334
3335            let next_out_of_line = decoder.next_out_of_line();
3336            let handles_before = decoder.remaining_handles();
3337            if let Some((inlined, num_bytes, num_handles)) =
3338                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3339            {
3340                let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3341                if inlined != (member_inline_size <= 4) {
3342                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3343                }
3344                let inner_offset;
3345                let mut inner_depth = depth.clone();
3346                if inlined {
3347                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3348                    inner_offset = next_offset;
3349                } else {
3350                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3351                    inner_depth.increment()?;
3352                }
3353                let val_ref = self.peer_id.get_or_insert_with(|| {
3354                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
3355                });
3356                fidl::decode!(
3357                    fidl_fuchsia_bluetooth_common::PeerId,
3358                    D,
3359                    val_ref,
3360                    decoder,
3361                    inner_offset,
3362                    inner_depth
3363                )?;
3364                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3365                {
3366                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3367                }
3368                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3369                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3370                }
3371            }
3372
3373            next_offset += envelope_size;
3374
3375            // Decode the remaining unknown envelopes.
3376            while next_offset < end_offset {
3377                _next_ordinal_to_read += 1;
3378                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3379                next_offset += envelope_size;
3380            }
3381
3382            Ok(())
3383        }
3384    }
3385
3386    impl ScanResultListenerOnPeersDiscoveredRequest {
3387        #[inline(always)]
3388        fn max_ordinal_present(&self) -> u64 {
3389            if let Some(_) = self.peers {
3390                return 1;
3391            }
3392            0
3393        }
3394    }
3395
3396    impl fidl::encoding::ValueTypeMarker for ScanResultListenerOnPeersDiscoveredRequest {
3397        type Borrowed<'a> = &'a Self;
3398        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3399            value
3400        }
3401    }
3402
3403    unsafe impl fidl::encoding::TypeMarker for ScanResultListenerOnPeersDiscoveredRequest {
3404        type Owned = Self;
3405
3406        #[inline(always)]
3407        fn inline_align(_context: fidl::encoding::Context) -> usize {
3408            8
3409        }
3410
3411        #[inline(always)]
3412        fn inline_size(_context: fidl::encoding::Context) -> usize {
3413            16
3414        }
3415    }
3416
3417    unsafe impl<D: fidl::encoding::ResourceDialect>
3418        fidl::encoding::Encode<ScanResultListenerOnPeersDiscoveredRequest, D>
3419        for &ScanResultListenerOnPeersDiscoveredRequest
3420    {
3421        unsafe fn encode(
3422            self,
3423            encoder: &mut fidl::encoding::Encoder<'_, D>,
3424            offset: usize,
3425            mut depth: fidl::encoding::Depth,
3426        ) -> fidl::Result<()> {
3427            encoder.debug_check_bounds::<ScanResultListenerOnPeersDiscoveredRequest>(offset);
3428            // Vector header
3429            let max_ordinal: u64 = self.max_ordinal_present();
3430            encoder.write_num(max_ordinal, offset);
3431            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3432            // Calling encoder.out_of_line_offset(0) is not allowed.
3433            if max_ordinal == 0 {
3434                return Ok(());
3435            }
3436            depth.increment()?;
3437            let envelope_size = 8;
3438            let bytes_len = max_ordinal as usize * envelope_size;
3439            #[allow(unused_variables)]
3440            let offset = encoder.out_of_line_offset(bytes_len);
3441            let mut _prev_end_offset: usize = 0;
3442            if 1 > max_ordinal {
3443                return Ok(());
3444            }
3445
3446            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3447            // are envelope_size bytes.
3448            let cur_offset: usize = (1 - 1) * envelope_size;
3449
3450            // Zero reserved fields.
3451            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3452
3453            // Safety:
3454            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3455            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3456            //   envelope_size bytes, there is always sufficient room.
3457            fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScannedPeer>, D>(
3458            self.peers.as_ref().map(<fidl::encoding::UnboundedVector<ScannedPeer> as fidl::encoding::ValueTypeMarker>::borrow),
3459            encoder, offset + cur_offset, depth
3460        )?;
3461
3462            _prev_end_offset = cur_offset + envelope_size;
3463
3464            Ok(())
3465        }
3466    }
3467
3468    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3469        for ScanResultListenerOnPeersDiscoveredRequest
3470    {
3471        #[inline(always)]
3472        fn new_empty() -> Self {
3473            Self::default()
3474        }
3475
3476        unsafe fn decode(
3477            &mut self,
3478            decoder: &mut fidl::encoding::Decoder<'_, D>,
3479            offset: usize,
3480            mut depth: fidl::encoding::Depth,
3481        ) -> fidl::Result<()> {
3482            decoder.debug_check_bounds::<Self>(offset);
3483            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3484                None => return Err(fidl::Error::NotNullable),
3485                Some(len) => len,
3486            };
3487            // Calling decoder.out_of_line_offset(0) is not allowed.
3488            if len == 0 {
3489                return Ok(());
3490            };
3491            depth.increment()?;
3492            let envelope_size = 8;
3493            let bytes_len = len * envelope_size;
3494            let offset = decoder.out_of_line_offset(bytes_len)?;
3495            // Decode the envelope for each type.
3496            let mut _next_ordinal_to_read = 0;
3497            let mut next_offset = offset;
3498            let end_offset = offset + bytes_len;
3499            _next_ordinal_to_read += 1;
3500            if next_offset >= end_offset {
3501                return Ok(());
3502            }
3503
3504            // Decode unknown envelopes for gaps in ordinals.
3505            while _next_ordinal_to_read < 1 {
3506                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3507                _next_ordinal_to_read += 1;
3508                next_offset += envelope_size;
3509            }
3510
3511            let next_out_of_line = decoder.next_out_of_line();
3512            let handles_before = decoder.remaining_handles();
3513            if let Some((inlined, num_bytes, num_handles)) =
3514                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3515            {
3516                let member_inline_size = <fidl::encoding::UnboundedVector<ScannedPeer> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3517                if inlined != (member_inline_size <= 4) {
3518                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3519                }
3520                let inner_offset;
3521                let mut inner_depth = depth.clone();
3522                if inlined {
3523                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3524                    inner_offset = next_offset;
3525                } else {
3526                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3527                    inner_depth.increment()?;
3528                }
3529                let val_ref = self.peers.get_or_insert_with(|| {
3530                    fidl::new_empty!(fidl::encoding::UnboundedVector<ScannedPeer>, D)
3531                });
3532                fidl::decode!(
3533                    fidl::encoding::UnboundedVector<ScannedPeer>,
3534                    D,
3535                    val_ref,
3536                    decoder,
3537                    inner_offset,
3538                    inner_depth
3539                )?;
3540                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3541                {
3542                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3543                }
3544                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3545                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3546                }
3547            }
3548
3549            next_offset += envelope_size;
3550
3551            // Decode the remaining unknown envelopes.
3552            while next_offset < end_offset {
3553                _next_ordinal_to_read += 1;
3554                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3555                next_offset += envelope_size;
3556            }
3557
3558            Ok(())
3559        }
3560    }
3561
3562    impl ScannedPeer {
3563        #[inline(always)]
3564        fn max_ordinal_present(&self) -> u64 {
3565            if let Some(_) = self.address {
3566                return 2;
3567            }
3568            if let Some(_) = self.peer {
3569                return 1;
3570            }
3571            0
3572        }
3573    }
3574
3575    impl fidl::encoding::ValueTypeMarker for ScannedPeer {
3576        type Borrowed<'a> = &'a Self;
3577        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3578            value
3579        }
3580    }
3581
3582    unsafe impl fidl::encoding::TypeMarker for ScannedPeer {
3583        type Owned = Self;
3584
3585        #[inline(always)]
3586        fn inline_align(_context: fidl::encoding::Context) -> usize {
3587            8
3588        }
3589
3590        #[inline(always)]
3591        fn inline_size(_context: fidl::encoding::Context) -> usize {
3592            16
3593        }
3594    }
3595
3596    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScannedPeer, D>
3597        for &ScannedPeer
3598    {
3599        unsafe fn encode(
3600            self,
3601            encoder: &mut fidl::encoding::Encoder<'_, D>,
3602            offset: usize,
3603            mut depth: fidl::encoding::Depth,
3604        ) -> fidl::Result<()> {
3605            encoder.debug_check_bounds::<ScannedPeer>(offset);
3606            // Vector header
3607            let max_ordinal: u64 = self.max_ordinal_present();
3608            encoder.write_num(max_ordinal, offset);
3609            encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3610            // Calling encoder.out_of_line_offset(0) is not allowed.
3611            if max_ordinal == 0 {
3612                return Ok(());
3613            }
3614            depth.increment()?;
3615            let envelope_size = 8;
3616            let bytes_len = max_ordinal as usize * envelope_size;
3617            #[allow(unused_variables)]
3618            let offset = encoder.out_of_line_offset(bytes_len);
3619            let mut _prev_end_offset: usize = 0;
3620            if 1 > max_ordinal {
3621                return Ok(());
3622            }
3623
3624            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3625            // are envelope_size bytes.
3626            let cur_offset: usize = (1 - 1) * envelope_size;
3627
3628            // Zero reserved fields.
3629            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3630
3631            // Safety:
3632            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3633            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3634            //   envelope_size bytes, there is always sufficient room.
3635            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::Peer, D>(
3636            self.peer.as_ref().map(<fidl_fuchsia_bluetooth_le_common::Peer as fidl::encoding::ValueTypeMarker>::borrow),
3637            encoder, offset + cur_offset, depth
3638        )?;
3639
3640            _prev_end_offset = cur_offset + envelope_size;
3641            if 2 > max_ordinal {
3642                return Ok(());
3643            }
3644
3645            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3646            // are envelope_size bytes.
3647            let cur_offset: usize = (2 - 1) * envelope_size;
3648
3649            // Zero reserved fields.
3650            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3651
3652            // Safety:
3653            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3654            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3655            //   envelope_size bytes, there is always sufficient room.
3656            fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Address, D>(
3657            self.address.as_ref().map(<fidl_fuchsia_bluetooth_common::Address as fidl::encoding::ValueTypeMarker>::borrow),
3658            encoder, offset + cur_offset, depth
3659        )?;
3660
3661            _prev_end_offset = cur_offset + envelope_size;
3662
3663            Ok(())
3664        }
3665    }
3666
3667    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScannedPeer {
3668        #[inline(always)]
3669        fn new_empty() -> Self {
3670            Self::default()
3671        }
3672
3673        unsafe fn decode(
3674            &mut self,
3675            decoder: &mut fidl::encoding::Decoder<'_, D>,
3676            offset: usize,
3677            mut depth: fidl::encoding::Depth,
3678        ) -> fidl::Result<()> {
3679            decoder.debug_check_bounds::<Self>(offset);
3680            let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3681                None => return Err(fidl::Error::NotNullable),
3682                Some(len) => len,
3683            };
3684            // Calling decoder.out_of_line_offset(0) is not allowed.
3685            if len == 0 {
3686                return Ok(());
3687            };
3688            depth.increment()?;
3689            let envelope_size = 8;
3690            let bytes_len = len * envelope_size;
3691            let offset = decoder.out_of_line_offset(bytes_len)?;
3692            // Decode the envelope for each type.
3693            let mut _next_ordinal_to_read = 0;
3694            let mut next_offset = offset;
3695            let end_offset = offset + bytes_len;
3696            _next_ordinal_to_read += 1;
3697            if next_offset >= end_offset {
3698                return Ok(());
3699            }
3700
3701            // Decode unknown envelopes for gaps in ordinals.
3702            while _next_ordinal_to_read < 1 {
3703                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3704                _next_ordinal_to_read += 1;
3705                next_offset += envelope_size;
3706            }
3707
3708            let next_out_of_line = decoder.next_out_of_line();
3709            let handles_before = decoder.remaining_handles();
3710            if let Some((inlined, num_bytes, num_handles)) =
3711                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3712            {
3713                let member_inline_size = <fidl_fuchsia_bluetooth_le_common::Peer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3714                if inlined != (member_inline_size <= 4) {
3715                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3716                }
3717                let inner_offset;
3718                let mut inner_depth = depth.clone();
3719                if inlined {
3720                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3721                    inner_offset = next_offset;
3722                } else {
3723                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3724                    inner_depth.increment()?;
3725                }
3726                let val_ref = self.peer.get_or_insert_with(|| {
3727                    fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::Peer, D)
3728                });
3729                fidl::decode!(
3730                    fidl_fuchsia_bluetooth_le_common::Peer,
3731                    D,
3732                    val_ref,
3733                    decoder,
3734                    inner_offset,
3735                    inner_depth
3736                )?;
3737                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3738                {
3739                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3740                }
3741                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3742                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3743                }
3744            }
3745
3746            next_offset += envelope_size;
3747            _next_ordinal_to_read += 1;
3748            if next_offset >= end_offset {
3749                return Ok(());
3750            }
3751
3752            // Decode unknown envelopes for gaps in ordinals.
3753            while _next_ordinal_to_read < 2 {
3754                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3755                _next_ordinal_to_read += 1;
3756                next_offset += envelope_size;
3757            }
3758
3759            let next_out_of_line = decoder.next_out_of_line();
3760            let handles_before = decoder.remaining_handles();
3761            if let Some((inlined, num_bytes, num_handles)) =
3762                fidl::encoding::decode_envelope_header(decoder, next_offset)?
3763            {
3764                let member_inline_size = <fidl_fuchsia_bluetooth_common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3765                if inlined != (member_inline_size <= 4) {
3766                    return Err(fidl::Error::InvalidInlineBitInEnvelope);
3767                }
3768                let inner_offset;
3769                let mut inner_depth = depth.clone();
3770                if inlined {
3771                    decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3772                    inner_offset = next_offset;
3773                } else {
3774                    inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3775                    inner_depth.increment()?;
3776                }
3777                let val_ref = self.address.get_or_insert_with(|| {
3778                    fidl::new_empty!(fidl_fuchsia_bluetooth_common::Address, D)
3779                });
3780                fidl::decode!(
3781                    fidl_fuchsia_bluetooth_common::Address,
3782                    D,
3783                    val_ref,
3784                    decoder,
3785                    inner_offset,
3786                    inner_depth
3787                )?;
3788                if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3789                {
3790                    return Err(fidl::Error::InvalidNumBytesInEnvelope);
3791                }
3792                if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3793                    return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3794                }
3795            }
3796
3797            next_offset += envelope_size;
3798
3799            // Decode the remaining unknown envelopes.
3800            while next_offset < end_offset {
3801                _next_ordinal_to_read += 1;
3802                fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3803                next_offset += envelope_size;
3804            }
3805
3806            Ok(())
3807        }
3808    }
3809}