1#![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 Internal = 1,
16 Timeout = 2,
18 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 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 HostControllerSetDiscoverabilityRequest {
60 pub discoverable: Option<bool>,
62 #[doc(hidden)]
63 pub __source_breaking: fidl::marker::SourceBreaking,
64}
65
66impl fidl::Persistable for HostControllerSetDiscoverabilityRequest {}
67
68#[derive(Clone, Debug, Default, PartialEq)]
69pub struct HostControllerGetHostsResponse {
70 pub hosts: Option<Vec<fidl_fuchsia_bluetooth_sys_common::HostInfo>>,
71 #[doc(hidden)]
72 pub __source_breaking: fidl::marker::SourceBreaking,
73}
74
75impl fidl::Persistable for HostControllerGetHostsResponse {}
76
77#[derive(Clone, Debug, Default, PartialEq)]
79pub struct HostSelector {
80 pub id: Option<fidl_fuchsia_bluetooth_common::HostId>,
82 #[doc(hidden)]
83 pub __source_breaking: fidl::marker::SourceBreaking,
84}
85
86impl fidl::Persistable for HostSelector {}
87
88#[derive(Clone, Debug, Default, PartialEq)]
89pub struct PeerControllerGetPeerIdRequest {
90 pub address: Option<fidl_fuchsia_bluetooth_common::Address>,
92 #[doc(hidden)]
93 pub __source_breaking: fidl::marker::SourceBreaking,
94}
95
96impl fidl::Persistable for PeerControllerGetPeerIdRequest {}
97
98#[derive(Clone, Debug, Default, PartialEq)]
99pub struct PeerControllerSetDiscoveryRequest {
100 pub discovery: Option<bool>,
102 #[doc(hidden)]
103 pub __source_breaking: fidl::marker::SourceBreaking,
104}
105
106impl fidl::Persistable for PeerControllerSetDiscoveryRequest {}
107
108#[derive(Clone, Debug, Default, PartialEq)]
109pub struct PeerControllerGetKnownPeersResponse {
110 pub peers: Option<Vec<fidl_fuchsia_bluetooth_sys_common::Peer>>,
111 #[doc(hidden)]
112 pub __source_breaking: fidl::marker::SourceBreaking,
113}
114
115impl fidl::Persistable for PeerControllerGetKnownPeersResponse {}
116
117#[derive(Clone, Debug, Default, PartialEq)]
118pub struct PeerControllerGetPeerIdResponse {
119 pub id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
121 #[doc(hidden)]
122 pub __source_breaking: fidl::marker::SourceBreaking,
123}
124
125impl fidl::Persistable for PeerControllerGetPeerIdResponse {}
126
127#[derive(Clone, Debug, Default, PartialEq)]
129pub struct PeerSelector {
130 pub id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
132 #[doc(hidden)]
133 pub __source_breaking: fidl::marker::SourceBreaking,
134}
135
136impl fidl::Persistable for PeerSelector {}
137
138#[derive(Clone, Debug, Default, PartialEq)]
139pub struct PeripheralControllerAdvertiseRequest {
140 pub parameters: Option<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters>,
142 pub timeout: Option<u64>,
144 #[doc(hidden)]
145 pub __source_breaking: fidl::marker::SourceBreaking,
146}
147
148impl fidl::Persistable for PeripheralControllerAdvertiseRequest {}
149
150#[derive(Clone, Debug, Default, PartialEq)]
151pub struct PeripheralControllerAdvertiseResponse {
152 pub peer_id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
154 #[doc(hidden)]
155 pub __source_breaking: fidl::marker::SourceBreaking,
156}
157
158impl fidl::Persistable for PeripheralControllerAdvertiseResponse {}
159
160#[derive(Clone, Debug, Default, PartialEq)]
161pub struct ScanResultListenerOnPeersDiscoveredRequest {
162 pub peers: Option<Vec<ScannedPeer>>,
163 #[doc(hidden)]
164 pub __source_breaking: fidl::marker::SourceBreaking,
165}
166
167impl fidl::Persistable for ScanResultListenerOnPeersDiscoveredRequest {}
168
169#[derive(Clone, Debug, Default, PartialEq)]
172pub struct ScannedPeer {
173 pub peer: Option<fidl_fuchsia_bluetooth_le_common::Peer>,
175 pub address: Option<fidl_fuchsia_bluetooth_common::Address>,
177 #[doc(hidden)]
178 pub __source_breaking: fidl::marker::SourceBreaking,
179}
180
181impl fidl::Persistable for ScannedPeer {}
182
183pub mod central_controller_ordinals {
184 pub const START_SCAN: u64 = 0x7f8e8fdaa5b359ea;
185 pub const CONNECT_PERIPHERAL: u64 = 0x4cf45727cca182cd;
186}
187
188pub mod gatt_client_controller_ordinals {
189 pub const DISCOVER_SERVICES: u64 = 0x2451643d00753f94;
190}
191
192pub mod host_controller_ordinals {
193 pub const GET_HOSTS: u64 = 0x167d2522684d453d;
194 pub const SET_DISCOVERABILITY: u64 = 0x1e977b538b94b08b;
195 pub const SET_CONNECTABILITY: u64 = 0x93572b659adf7d;
196}
197
198pub mod peer_controller_ordinals {
199 pub const GET_KNOWN_PEERS: u64 = 0x482cf3745bab65f6;
200 pub const GET_PEER_ID: u64 = 0x5f6f76185d19eb18;
201 pub const SET_DISCOVERY: u64 = 0x3269624c9e1d6ab3;
202}
203
204pub mod peripheral_controller_ordinals {
205 pub const ADVERTISE: u64 = 0x59079a81362a66f3;
206}
207
208pub mod scan_result_listener_ordinals {
209 pub const ON_PEERS_DISCOVERED: u64 = 0x111ea99f3f0c8009;
210}
211
212mod internal {
213 use super::*;
214 unsafe impl fidl::encoding::TypeMarker for Error {
215 type Owned = Self;
216
217 #[inline(always)]
218 fn inline_align(_context: fidl::encoding::Context) -> usize {
219 std::mem::align_of::<u32>()
220 }
221
222 #[inline(always)]
223 fn inline_size(_context: fidl::encoding::Context) -> usize {
224 std::mem::size_of::<u32>()
225 }
226
227 #[inline(always)]
228 fn encode_is_copy() -> bool {
229 true
230 }
231
232 #[inline(always)]
233 fn decode_is_copy() -> bool {
234 false
235 }
236 }
237
238 impl fidl::encoding::ValueTypeMarker for Error {
239 type Borrowed<'a> = Self;
240 #[inline(always)]
241 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
242 *value
243 }
244 }
245
246 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
247 #[inline]
248 unsafe fn encode(
249 self,
250 encoder: &mut fidl::encoding::Encoder<'_, D>,
251 offset: usize,
252 _depth: fidl::encoding::Depth,
253 ) -> fidl::Result<()> {
254 encoder.debug_check_bounds::<Self>(offset);
255 encoder.write_num(self.into_primitive(), offset);
256 Ok(())
257 }
258 }
259
260 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
261 #[inline(always)]
262 fn new_empty() -> Self {
263 Self::Internal
264 }
265
266 #[inline]
267 unsafe fn decode(
268 &mut self,
269 decoder: &mut fidl::encoding::Decoder<'_, D>,
270 offset: usize,
271 _depth: fidl::encoding::Depth,
272 ) -> fidl::Result<()> {
273 decoder.debug_check_bounds::<Self>(offset);
274 let prim = decoder.read_num::<u32>(offset);
275
276 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
277 Ok(())
278 }
279 }
280
281 impl GattClientControllerDiscoverServicesResponse {
282 #[inline(always)]
283 fn max_ordinal_present(&self) -> u64 {
284 if let Some(_) = self.services {
285 return 1;
286 }
287 0
288 }
289 }
290
291 impl fidl::encoding::ValueTypeMarker for GattClientControllerDiscoverServicesResponse {
292 type Borrowed<'a> = &'a Self;
293 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
294 value
295 }
296 }
297
298 unsafe impl fidl::encoding::TypeMarker for GattClientControllerDiscoverServicesResponse {
299 type Owned = Self;
300
301 #[inline(always)]
302 fn inline_align(_context: fidl::encoding::Context) -> usize {
303 8
304 }
305
306 #[inline(always)]
307 fn inline_size(_context: fidl::encoding::Context) -> usize {
308 16
309 }
310 }
311
312 unsafe impl<D: fidl::encoding::ResourceDialect>
313 fidl::encoding::Encode<GattClientControllerDiscoverServicesResponse, D>
314 for &GattClientControllerDiscoverServicesResponse
315 {
316 unsafe fn encode(
317 self,
318 encoder: &mut fidl::encoding::Encoder<'_, D>,
319 offset: usize,
320 mut depth: fidl::encoding::Depth,
321 ) -> fidl::Result<()> {
322 encoder.debug_check_bounds::<GattClientControllerDiscoverServicesResponse>(offset);
323 let max_ordinal: u64 = self.max_ordinal_present();
325 encoder.write_num(max_ordinal, offset);
326 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
327 if max_ordinal == 0 {
329 return Ok(());
330 }
331 depth.increment()?;
332 let envelope_size = 8;
333 let bytes_len = max_ordinal as usize * envelope_size;
334 #[allow(unused_variables)]
335 let offset = encoder.out_of_line_offset(bytes_len);
336 let mut _prev_end_offset: usize = 0;
337 if 1 > max_ordinal {
338 return Ok(());
339 }
340
341 let cur_offset: usize = (1 - 1) * envelope_size;
344
345 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
347
348 fidl::encoding::encode_in_envelope_optional::<
353 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo>,
354 D,
355 >(
356 self.services.as_ref().map(
357 <fidl::encoding::UnboundedVector<
358 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
359 > as fidl::encoding::ValueTypeMarker>::borrow,
360 ),
361 encoder,
362 offset + cur_offset,
363 depth,
364 )?;
365
366 _prev_end_offset = cur_offset + envelope_size;
367
368 Ok(())
369 }
370 }
371
372 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
373 for GattClientControllerDiscoverServicesResponse
374 {
375 #[inline(always)]
376 fn new_empty() -> Self {
377 Self::default()
378 }
379
380 unsafe fn decode(
381 &mut self,
382 decoder: &mut fidl::encoding::Decoder<'_, D>,
383 offset: usize,
384 mut depth: fidl::encoding::Depth,
385 ) -> fidl::Result<()> {
386 decoder.debug_check_bounds::<Self>(offset);
387 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
388 None => return Err(fidl::Error::NotNullable),
389 Some(len) => len,
390 };
391 if len == 0 {
393 return Ok(());
394 };
395 depth.increment()?;
396 let envelope_size = 8;
397 let bytes_len = len * envelope_size;
398 let offset = decoder.out_of_line_offset(bytes_len)?;
399 let mut _next_ordinal_to_read = 0;
401 let mut next_offset = offset;
402 let end_offset = offset + bytes_len;
403 _next_ordinal_to_read += 1;
404 if next_offset >= end_offset {
405 return Ok(());
406 }
407
408 while _next_ordinal_to_read < 1 {
410 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
411 _next_ordinal_to_read += 1;
412 next_offset += envelope_size;
413 }
414
415 let next_out_of_line = decoder.next_out_of_line();
416 let handles_before = decoder.remaining_handles();
417 if let Some((inlined, num_bytes, num_handles)) =
418 fidl::encoding::decode_envelope_header(decoder, next_offset)?
419 {
420 let member_inline_size = <fidl::encoding::UnboundedVector<
421 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
422 > as fidl::encoding::TypeMarker>::inline_size(
423 decoder.context
424 );
425 if inlined != (member_inline_size <= 4) {
426 return Err(fidl::Error::InvalidInlineBitInEnvelope);
427 }
428 let inner_offset;
429 let mut inner_depth = depth.clone();
430 if inlined {
431 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
432 inner_offset = next_offset;
433 } else {
434 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
435 inner_depth.increment()?;
436 }
437 let val_ref = self.services.get_or_insert_with(|| {
438 fidl::new_empty!(
439 fidl::encoding::UnboundedVector<
440 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
441 >,
442 D
443 )
444 });
445 fidl::decode!(
446 fidl::encoding::UnboundedVector<
447 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
448 >,
449 D,
450 val_ref,
451 decoder,
452 inner_offset,
453 inner_depth
454 )?;
455 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
456 {
457 return Err(fidl::Error::InvalidNumBytesInEnvelope);
458 }
459 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
460 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
461 }
462 }
463
464 next_offset += envelope_size;
465
466 while next_offset < end_offset {
468 _next_ordinal_to_read += 1;
469 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
470 next_offset += envelope_size;
471 }
472
473 Ok(())
474 }
475 }
476
477 impl HostControllerSetConnectabilityRequest {
478 #[inline(always)]
479 fn max_ordinal_present(&self) -> u64 {
480 if let Some(_) = self.connectable {
481 return 1;
482 }
483 0
484 }
485 }
486
487 impl fidl::encoding::ValueTypeMarker for HostControllerSetConnectabilityRequest {
488 type Borrowed<'a> = &'a Self;
489 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
490 value
491 }
492 }
493
494 unsafe impl fidl::encoding::TypeMarker for HostControllerSetConnectabilityRequest {
495 type Owned = Self;
496
497 #[inline(always)]
498 fn inline_align(_context: fidl::encoding::Context) -> usize {
499 8
500 }
501
502 #[inline(always)]
503 fn inline_size(_context: fidl::encoding::Context) -> usize {
504 16
505 }
506 }
507
508 unsafe impl<D: fidl::encoding::ResourceDialect>
509 fidl::encoding::Encode<HostControllerSetConnectabilityRequest, D>
510 for &HostControllerSetConnectabilityRequest
511 {
512 unsafe fn encode(
513 self,
514 encoder: &mut fidl::encoding::Encoder<'_, D>,
515 offset: usize,
516 mut depth: fidl::encoding::Depth,
517 ) -> fidl::Result<()> {
518 encoder.debug_check_bounds::<HostControllerSetConnectabilityRequest>(offset);
519 let max_ordinal: u64 = self.max_ordinal_present();
521 encoder.write_num(max_ordinal, offset);
522 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
523 if max_ordinal == 0 {
525 return Ok(());
526 }
527 depth.increment()?;
528 let envelope_size = 8;
529 let bytes_len = max_ordinal as usize * envelope_size;
530 #[allow(unused_variables)]
531 let offset = encoder.out_of_line_offset(bytes_len);
532 let mut _prev_end_offset: usize = 0;
533 if 1 > max_ordinal {
534 return Ok(());
535 }
536
537 let cur_offset: usize = (1 - 1) * envelope_size;
540
541 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
543
544 fidl::encoding::encode_in_envelope_optional::<bool, D>(
549 self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
550 encoder,
551 offset + cur_offset,
552 depth,
553 )?;
554
555 _prev_end_offset = cur_offset + envelope_size;
556
557 Ok(())
558 }
559 }
560
561 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
562 for HostControllerSetConnectabilityRequest
563 {
564 #[inline(always)]
565 fn new_empty() -> Self {
566 Self::default()
567 }
568
569 unsafe fn decode(
570 &mut self,
571 decoder: &mut fidl::encoding::Decoder<'_, D>,
572 offset: usize,
573 mut depth: fidl::encoding::Depth,
574 ) -> fidl::Result<()> {
575 decoder.debug_check_bounds::<Self>(offset);
576 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
577 None => return Err(fidl::Error::NotNullable),
578 Some(len) => len,
579 };
580 if len == 0 {
582 return Ok(());
583 };
584 depth.increment()?;
585 let envelope_size = 8;
586 let bytes_len = len * envelope_size;
587 let offset = decoder.out_of_line_offset(bytes_len)?;
588 let mut _next_ordinal_to_read = 0;
590 let mut next_offset = offset;
591 let end_offset = offset + bytes_len;
592 _next_ordinal_to_read += 1;
593 if next_offset >= end_offset {
594 return Ok(());
595 }
596
597 while _next_ordinal_to_read < 1 {
599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
600 _next_ordinal_to_read += 1;
601 next_offset += envelope_size;
602 }
603
604 let next_out_of_line = decoder.next_out_of_line();
605 let handles_before = decoder.remaining_handles();
606 if let Some((inlined, num_bytes, num_handles)) =
607 fidl::encoding::decode_envelope_header(decoder, next_offset)?
608 {
609 let member_inline_size =
610 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
611 if inlined != (member_inline_size <= 4) {
612 return Err(fidl::Error::InvalidInlineBitInEnvelope);
613 }
614 let inner_offset;
615 let mut inner_depth = depth.clone();
616 if inlined {
617 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
618 inner_offset = next_offset;
619 } else {
620 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
621 inner_depth.increment()?;
622 }
623 let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
624 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
625 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
626 {
627 return Err(fidl::Error::InvalidNumBytesInEnvelope);
628 }
629 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
630 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
631 }
632 }
633
634 next_offset += envelope_size;
635
636 while next_offset < end_offset {
638 _next_ordinal_to_read += 1;
639 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
640 next_offset += envelope_size;
641 }
642
643 Ok(())
644 }
645 }
646
647 impl HostControllerSetDiscoverabilityRequest {
648 #[inline(always)]
649 fn max_ordinal_present(&self) -> u64 {
650 if let Some(_) = self.discoverable {
651 return 1;
652 }
653 0
654 }
655 }
656
657 impl fidl::encoding::ValueTypeMarker for HostControllerSetDiscoverabilityRequest {
658 type Borrowed<'a> = &'a Self;
659 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
660 value
661 }
662 }
663
664 unsafe impl fidl::encoding::TypeMarker for HostControllerSetDiscoverabilityRequest {
665 type Owned = Self;
666
667 #[inline(always)]
668 fn inline_align(_context: fidl::encoding::Context) -> usize {
669 8
670 }
671
672 #[inline(always)]
673 fn inline_size(_context: fidl::encoding::Context) -> usize {
674 16
675 }
676 }
677
678 unsafe impl<D: fidl::encoding::ResourceDialect>
679 fidl::encoding::Encode<HostControllerSetDiscoverabilityRequest, D>
680 for &HostControllerSetDiscoverabilityRequest
681 {
682 unsafe fn encode(
683 self,
684 encoder: &mut fidl::encoding::Encoder<'_, D>,
685 offset: usize,
686 mut depth: fidl::encoding::Depth,
687 ) -> fidl::Result<()> {
688 encoder.debug_check_bounds::<HostControllerSetDiscoverabilityRequest>(offset);
689 let max_ordinal: u64 = self.max_ordinal_present();
691 encoder.write_num(max_ordinal, offset);
692 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
693 if max_ordinal == 0 {
695 return Ok(());
696 }
697 depth.increment()?;
698 let envelope_size = 8;
699 let bytes_len = max_ordinal as usize * envelope_size;
700 #[allow(unused_variables)]
701 let offset = encoder.out_of_line_offset(bytes_len);
702 let mut _prev_end_offset: usize = 0;
703 if 1 > max_ordinal {
704 return Ok(());
705 }
706
707 let cur_offset: usize = (1 - 1) * envelope_size;
710
711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
713
714 fidl::encoding::encode_in_envelope_optional::<bool, D>(
719 self.discoverable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
720 encoder,
721 offset + cur_offset,
722 depth,
723 )?;
724
725 _prev_end_offset = cur_offset + envelope_size;
726
727 Ok(())
728 }
729 }
730
731 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
732 for HostControllerSetDiscoverabilityRequest
733 {
734 #[inline(always)]
735 fn new_empty() -> Self {
736 Self::default()
737 }
738
739 unsafe fn decode(
740 &mut self,
741 decoder: &mut fidl::encoding::Decoder<'_, D>,
742 offset: usize,
743 mut depth: fidl::encoding::Depth,
744 ) -> fidl::Result<()> {
745 decoder.debug_check_bounds::<Self>(offset);
746 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
747 None => return Err(fidl::Error::NotNullable),
748 Some(len) => len,
749 };
750 if len == 0 {
752 return Ok(());
753 };
754 depth.increment()?;
755 let envelope_size = 8;
756 let bytes_len = len * envelope_size;
757 let offset = decoder.out_of_line_offset(bytes_len)?;
758 let mut _next_ordinal_to_read = 0;
760 let mut next_offset = offset;
761 let end_offset = offset + bytes_len;
762 _next_ordinal_to_read += 1;
763 if next_offset >= end_offset {
764 return Ok(());
765 }
766
767 while _next_ordinal_to_read < 1 {
769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
770 _next_ordinal_to_read += 1;
771 next_offset += envelope_size;
772 }
773
774 let next_out_of_line = decoder.next_out_of_line();
775 let handles_before = decoder.remaining_handles();
776 if let Some((inlined, num_bytes, num_handles)) =
777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
778 {
779 let member_inline_size =
780 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
781 if inlined != (member_inline_size <= 4) {
782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
783 }
784 let inner_offset;
785 let mut inner_depth = depth.clone();
786 if inlined {
787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
788 inner_offset = next_offset;
789 } else {
790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
791 inner_depth.increment()?;
792 }
793 let val_ref = self.discoverable.get_or_insert_with(|| fidl::new_empty!(bool, D));
794 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
795 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
796 {
797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
798 }
799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
801 }
802 }
803
804 next_offset += envelope_size;
805
806 while next_offset < end_offset {
808 _next_ordinal_to_read += 1;
809 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
810 next_offset += envelope_size;
811 }
812
813 Ok(())
814 }
815 }
816
817 impl HostControllerGetHostsResponse {
818 #[inline(always)]
819 fn max_ordinal_present(&self) -> u64 {
820 if let Some(_) = self.hosts {
821 return 1;
822 }
823 0
824 }
825 }
826
827 impl fidl::encoding::ValueTypeMarker for HostControllerGetHostsResponse {
828 type Borrowed<'a> = &'a Self;
829 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
830 value
831 }
832 }
833
834 unsafe impl fidl::encoding::TypeMarker for HostControllerGetHostsResponse {
835 type Owned = Self;
836
837 #[inline(always)]
838 fn inline_align(_context: fidl::encoding::Context) -> usize {
839 8
840 }
841
842 #[inline(always)]
843 fn inline_size(_context: fidl::encoding::Context) -> usize {
844 16
845 }
846 }
847
848 unsafe impl<D: fidl::encoding::ResourceDialect>
849 fidl::encoding::Encode<HostControllerGetHostsResponse, D>
850 for &HostControllerGetHostsResponse
851 {
852 unsafe fn encode(
853 self,
854 encoder: &mut fidl::encoding::Encoder<'_, D>,
855 offset: usize,
856 mut depth: fidl::encoding::Depth,
857 ) -> fidl::Result<()> {
858 encoder.debug_check_bounds::<HostControllerGetHostsResponse>(offset);
859 let max_ordinal: u64 = self.max_ordinal_present();
861 encoder.write_num(max_ordinal, offset);
862 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
863 if max_ordinal == 0 {
865 return Ok(());
866 }
867 depth.increment()?;
868 let envelope_size = 8;
869 let bytes_len = max_ordinal as usize * envelope_size;
870 #[allow(unused_variables)]
871 let offset = encoder.out_of_line_offset(bytes_len);
872 let mut _prev_end_offset: usize = 0;
873 if 1 > max_ordinal {
874 return Ok(());
875 }
876
877 let cur_offset: usize = (1 - 1) * envelope_size;
880
881 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
883
884 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>, D>(
889 self.hosts.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo> as fidl::encoding::ValueTypeMarker>::borrow),
890 encoder, offset + cur_offset, depth
891 )?;
892
893 _prev_end_offset = cur_offset + envelope_size;
894
895 Ok(())
896 }
897 }
898
899 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
900 for HostControllerGetHostsResponse
901 {
902 #[inline(always)]
903 fn new_empty() -> Self {
904 Self::default()
905 }
906
907 unsafe fn decode(
908 &mut self,
909 decoder: &mut fidl::encoding::Decoder<'_, D>,
910 offset: usize,
911 mut depth: fidl::encoding::Depth,
912 ) -> fidl::Result<()> {
913 decoder.debug_check_bounds::<Self>(offset);
914 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
915 None => return Err(fidl::Error::NotNullable),
916 Some(len) => len,
917 };
918 if len == 0 {
920 return Ok(());
921 };
922 depth.increment()?;
923 let envelope_size = 8;
924 let bytes_len = len * envelope_size;
925 let offset = decoder.out_of_line_offset(bytes_len)?;
926 let mut _next_ordinal_to_read = 0;
928 let mut next_offset = offset;
929 let end_offset = offset + bytes_len;
930 _next_ordinal_to_read += 1;
931 if next_offset >= end_offset {
932 return Ok(());
933 }
934
935 while _next_ordinal_to_read < 1 {
937 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
938 _next_ordinal_to_read += 1;
939 next_offset += envelope_size;
940 }
941
942 let next_out_of_line = decoder.next_out_of_line();
943 let handles_before = decoder.remaining_handles();
944 if let Some((inlined, num_bytes, num_handles)) =
945 fidl::encoding::decode_envelope_header(decoder, next_offset)?
946 {
947 let member_inline_size = <fidl::encoding::UnboundedVector<
948 fidl_fuchsia_bluetooth_sys_common::HostInfo,
949 > as fidl::encoding::TypeMarker>::inline_size(
950 decoder.context
951 );
952 if inlined != (member_inline_size <= 4) {
953 return Err(fidl::Error::InvalidInlineBitInEnvelope);
954 }
955 let inner_offset;
956 let mut inner_depth = depth.clone();
957 if inlined {
958 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
959 inner_offset = next_offset;
960 } else {
961 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
962 inner_depth.increment()?;
963 }
964 let val_ref = self.hosts.get_or_insert_with(|| {
965 fidl::new_empty!(
966 fidl::encoding::UnboundedVector<
967 fidl_fuchsia_bluetooth_sys_common::HostInfo,
968 >,
969 D
970 )
971 });
972 fidl::decode!(
973 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>,
974 D,
975 val_ref,
976 decoder,
977 inner_offset,
978 inner_depth
979 )?;
980 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
981 {
982 return Err(fidl::Error::InvalidNumBytesInEnvelope);
983 }
984 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
985 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
986 }
987 }
988
989 next_offset += envelope_size;
990
991 while next_offset < end_offset {
993 _next_ordinal_to_read += 1;
994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
995 next_offset += envelope_size;
996 }
997
998 Ok(())
999 }
1000 }
1001
1002 impl HostSelector {
1003 #[inline(always)]
1004 fn max_ordinal_present(&self) -> u64 {
1005 if let Some(_) = self.id {
1006 return 1;
1007 }
1008 0
1009 }
1010 }
1011
1012 impl fidl::encoding::ValueTypeMarker for HostSelector {
1013 type Borrowed<'a> = &'a Self;
1014 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1015 value
1016 }
1017 }
1018
1019 unsafe impl fidl::encoding::TypeMarker for HostSelector {
1020 type Owned = Self;
1021
1022 #[inline(always)]
1023 fn inline_align(_context: fidl::encoding::Context) -> usize {
1024 8
1025 }
1026
1027 #[inline(always)]
1028 fn inline_size(_context: fidl::encoding::Context) -> usize {
1029 16
1030 }
1031 }
1032
1033 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HostSelector, D>
1034 for &HostSelector
1035 {
1036 unsafe fn encode(
1037 self,
1038 encoder: &mut fidl::encoding::Encoder<'_, D>,
1039 offset: usize,
1040 mut depth: fidl::encoding::Depth,
1041 ) -> fidl::Result<()> {
1042 encoder.debug_check_bounds::<HostSelector>(offset);
1043 let max_ordinal: u64 = self.max_ordinal_present();
1045 encoder.write_num(max_ordinal, offset);
1046 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1047 if max_ordinal == 0 {
1049 return Ok(());
1050 }
1051 depth.increment()?;
1052 let envelope_size = 8;
1053 let bytes_len = max_ordinal as usize * envelope_size;
1054 #[allow(unused_variables)]
1055 let offset = encoder.out_of_line_offset(bytes_len);
1056 let mut _prev_end_offset: usize = 0;
1057 if 1 > max_ordinal {
1058 return Ok(());
1059 }
1060
1061 let cur_offset: usize = (1 - 1) * envelope_size;
1064
1065 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1067
1068 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::HostId, D>(
1073 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::ValueTypeMarker>::borrow),
1074 encoder, offset + cur_offset, depth
1075 )?;
1076
1077 _prev_end_offset = cur_offset + envelope_size;
1078
1079 Ok(())
1080 }
1081 }
1082
1083 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HostSelector {
1084 #[inline(always)]
1085 fn new_empty() -> Self {
1086 Self::default()
1087 }
1088
1089 unsafe fn decode(
1090 &mut self,
1091 decoder: &mut fidl::encoding::Decoder<'_, D>,
1092 offset: usize,
1093 mut depth: fidl::encoding::Depth,
1094 ) -> fidl::Result<()> {
1095 decoder.debug_check_bounds::<Self>(offset);
1096 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1097 None => return Err(fidl::Error::NotNullable),
1098 Some(len) => len,
1099 };
1100 if len == 0 {
1102 return Ok(());
1103 };
1104 depth.increment()?;
1105 let envelope_size = 8;
1106 let bytes_len = len * envelope_size;
1107 let offset = decoder.out_of_line_offset(bytes_len)?;
1108 let mut _next_ordinal_to_read = 0;
1110 let mut next_offset = offset;
1111 let end_offset = offset + bytes_len;
1112 _next_ordinal_to_read += 1;
1113 if next_offset >= end_offset {
1114 return Ok(());
1115 }
1116
1117 while _next_ordinal_to_read < 1 {
1119 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1120 _next_ordinal_to_read += 1;
1121 next_offset += envelope_size;
1122 }
1123
1124 let next_out_of_line = decoder.next_out_of_line();
1125 let handles_before = decoder.remaining_handles();
1126 if let Some((inlined, num_bytes, num_handles)) =
1127 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1128 {
1129 let member_inline_size = <fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1130 if inlined != (member_inline_size <= 4) {
1131 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1132 }
1133 let inner_offset;
1134 let mut inner_depth = depth.clone();
1135 if inlined {
1136 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1137 inner_offset = next_offset;
1138 } else {
1139 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1140 inner_depth.increment()?;
1141 }
1142 let val_ref = self.id.get_or_insert_with(|| {
1143 fidl::new_empty!(fidl_fuchsia_bluetooth_common::HostId, D)
1144 });
1145 fidl::decode!(
1146 fidl_fuchsia_bluetooth_common::HostId,
1147 D,
1148 val_ref,
1149 decoder,
1150 inner_offset,
1151 inner_depth
1152 )?;
1153 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1154 {
1155 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1156 }
1157 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1158 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1159 }
1160 }
1161
1162 next_offset += envelope_size;
1163
1164 while next_offset < end_offset {
1166 _next_ordinal_to_read += 1;
1167 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1168 next_offset += envelope_size;
1169 }
1170
1171 Ok(())
1172 }
1173 }
1174
1175 impl PeerControllerGetPeerIdRequest {
1176 #[inline(always)]
1177 fn max_ordinal_present(&self) -> u64 {
1178 if let Some(_) = self.address {
1179 return 1;
1180 }
1181 0
1182 }
1183 }
1184
1185 impl fidl::encoding::ValueTypeMarker for PeerControllerGetPeerIdRequest {
1186 type Borrowed<'a> = &'a Self;
1187 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1188 value
1189 }
1190 }
1191
1192 unsafe impl fidl::encoding::TypeMarker for PeerControllerGetPeerIdRequest {
1193 type Owned = Self;
1194
1195 #[inline(always)]
1196 fn inline_align(_context: fidl::encoding::Context) -> usize {
1197 8
1198 }
1199
1200 #[inline(always)]
1201 fn inline_size(_context: fidl::encoding::Context) -> usize {
1202 16
1203 }
1204 }
1205
1206 unsafe impl<D: fidl::encoding::ResourceDialect>
1207 fidl::encoding::Encode<PeerControllerGetPeerIdRequest, D>
1208 for &PeerControllerGetPeerIdRequest
1209 {
1210 unsafe fn encode(
1211 self,
1212 encoder: &mut fidl::encoding::Encoder<'_, D>,
1213 offset: usize,
1214 mut depth: fidl::encoding::Depth,
1215 ) -> fidl::Result<()> {
1216 encoder.debug_check_bounds::<PeerControllerGetPeerIdRequest>(offset);
1217 let max_ordinal: u64 = self.max_ordinal_present();
1219 encoder.write_num(max_ordinal, offset);
1220 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1221 if max_ordinal == 0 {
1223 return Ok(());
1224 }
1225 depth.increment()?;
1226 let envelope_size = 8;
1227 let bytes_len = max_ordinal as usize * envelope_size;
1228 #[allow(unused_variables)]
1229 let offset = encoder.out_of_line_offset(bytes_len);
1230 let mut _prev_end_offset: usize = 0;
1231 if 1 > max_ordinal {
1232 return Ok(());
1233 }
1234
1235 let cur_offset: usize = (1 - 1) * envelope_size;
1238
1239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1241
1242 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Address, D>(
1247 self.address.as_ref().map(<fidl_fuchsia_bluetooth_common::Address as fidl::encoding::ValueTypeMarker>::borrow),
1248 encoder, offset + cur_offset, depth
1249 )?;
1250
1251 _prev_end_offset = cur_offset + envelope_size;
1252
1253 Ok(())
1254 }
1255 }
1256
1257 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1258 for PeerControllerGetPeerIdRequest
1259 {
1260 #[inline(always)]
1261 fn new_empty() -> Self {
1262 Self::default()
1263 }
1264
1265 unsafe fn decode(
1266 &mut self,
1267 decoder: &mut fidl::encoding::Decoder<'_, D>,
1268 offset: usize,
1269 mut depth: fidl::encoding::Depth,
1270 ) -> fidl::Result<()> {
1271 decoder.debug_check_bounds::<Self>(offset);
1272 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1273 None => return Err(fidl::Error::NotNullable),
1274 Some(len) => len,
1275 };
1276 if len == 0 {
1278 return Ok(());
1279 };
1280 depth.increment()?;
1281 let envelope_size = 8;
1282 let bytes_len = len * envelope_size;
1283 let offset = decoder.out_of_line_offset(bytes_len)?;
1284 let mut _next_ordinal_to_read = 0;
1286 let mut next_offset = offset;
1287 let end_offset = offset + bytes_len;
1288 _next_ordinal_to_read += 1;
1289 if next_offset >= end_offset {
1290 return Ok(());
1291 }
1292
1293 while _next_ordinal_to_read < 1 {
1295 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1296 _next_ordinal_to_read += 1;
1297 next_offset += envelope_size;
1298 }
1299
1300 let next_out_of_line = decoder.next_out_of_line();
1301 let handles_before = decoder.remaining_handles();
1302 if let Some((inlined, num_bytes, num_handles)) =
1303 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1304 {
1305 let member_inline_size = <fidl_fuchsia_bluetooth_common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1306 if inlined != (member_inline_size <= 4) {
1307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1308 }
1309 let inner_offset;
1310 let mut inner_depth = depth.clone();
1311 if inlined {
1312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1313 inner_offset = next_offset;
1314 } else {
1315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1316 inner_depth.increment()?;
1317 }
1318 let val_ref = self.address.get_or_insert_with(|| {
1319 fidl::new_empty!(fidl_fuchsia_bluetooth_common::Address, D)
1320 });
1321 fidl::decode!(
1322 fidl_fuchsia_bluetooth_common::Address,
1323 D,
1324 val_ref,
1325 decoder,
1326 inner_offset,
1327 inner_depth
1328 )?;
1329 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1330 {
1331 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1332 }
1333 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1334 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1335 }
1336 }
1337
1338 next_offset += envelope_size;
1339
1340 while next_offset < end_offset {
1342 _next_ordinal_to_read += 1;
1343 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1344 next_offset += envelope_size;
1345 }
1346
1347 Ok(())
1348 }
1349 }
1350
1351 impl PeerControllerSetDiscoveryRequest {
1352 #[inline(always)]
1353 fn max_ordinal_present(&self) -> u64 {
1354 if let Some(_) = self.discovery {
1355 return 1;
1356 }
1357 0
1358 }
1359 }
1360
1361 impl fidl::encoding::ValueTypeMarker for PeerControllerSetDiscoveryRequest {
1362 type Borrowed<'a> = &'a Self;
1363 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1364 value
1365 }
1366 }
1367
1368 unsafe impl fidl::encoding::TypeMarker for PeerControllerSetDiscoveryRequest {
1369 type Owned = Self;
1370
1371 #[inline(always)]
1372 fn inline_align(_context: fidl::encoding::Context) -> usize {
1373 8
1374 }
1375
1376 #[inline(always)]
1377 fn inline_size(_context: fidl::encoding::Context) -> usize {
1378 16
1379 }
1380 }
1381
1382 unsafe impl<D: fidl::encoding::ResourceDialect>
1383 fidl::encoding::Encode<PeerControllerSetDiscoveryRequest, D>
1384 for &PeerControllerSetDiscoveryRequest
1385 {
1386 unsafe fn encode(
1387 self,
1388 encoder: &mut fidl::encoding::Encoder<'_, D>,
1389 offset: usize,
1390 mut depth: fidl::encoding::Depth,
1391 ) -> fidl::Result<()> {
1392 encoder.debug_check_bounds::<PeerControllerSetDiscoveryRequest>(offset);
1393 let max_ordinal: u64 = self.max_ordinal_present();
1395 encoder.write_num(max_ordinal, offset);
1396 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1397 if max_ordinal == 0 {
1399 return Ok(());
1400 }
1401 depth.increment()?;
1402 let envelope_size = 8;
1403 let bytes_len = max_ordinal as usize * envelope_size;
1404 #[allow(unused_variables)]
1405 let offset = encoder.out_of_line_offset(bytes_len);
1406 let mut _prev_end_offset: usize = 0;
1407 if 1 > max_ordinal {
1408 return Ok(());
1409 }
1410
1411 let cur_offset: usize = (1 - 1) * envelope_size;
1414
1415 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1417
1418 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1423 self.discovery.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1424 encoder,
1425 offset + cur_offset,
1426 depth,
1427 )?;
1428
1429 _prev_end_offset = cur_offset + envelope_size;
1430
1431 Ok(())
1432 }
1433 }
1434
1435 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1436 for PeerControllerSetDiscoveryRequest
1437 {
1438 #[inline(always)]
1439 fn new_empty() -> Self {
1440 Self::default()
1441 }
1442
1443 unsafe fn decode(
1444 &mut self,
1445 decoder: &mut fidl::encoding::Decoder<'_, D>,
1446 offset: usize,
1447 mut depth: fidl::encoding::Depth,
1448 ) -> fidl::Result<()> {
1449 decoder.debug_check_bounds::<Self>(offset);
1450 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1451 None => return Err(fidl::Error::NotNullable),
1452 Some(len) => len,
1453 };
1454 if len == 0 {
1456 return Ok(());
1457 };
1458 depth.increment()?;
1459 let envelope_size = 8;
1460 let bytes_len = len * envelope_size;
1461 let offset = decoder.out_of_line_offset(bytes_len)?;
1462 let mut _next_ordinal_to_read = 0;
1464 let mut next_offset = offset;
1465 let end_offset = offset + bytes_len;
1466 _next_ordinal_to_read += 1;
1467 if next_offset >= end_offset {
1468 return Ok(());
1469 }
1470
1471 while _next_ordinal_to_read < 1 {
1473 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1474 _next_ordinal_to_read += 1;
1475 next_offset += envelope_size;
1476 }
1477
1478 let next_out_of_line = decoder.next_out_of_line();
1479 let handles_before = decoder.remaining_handles();
1480 if let Some((inlined, num_bytes, num_handles)) =
1481 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1482 {
1483 let member_inline_size =
1484 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1485 if inlined != (member_inline_size <= 4) {
1486 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1487 }
1488 let inner_offset;
1489 let mut inner_depth = depth.clone();
1490 if inlined {
1491 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1492 inner_offset = next_offset;
1493 } else {
1494 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1495 inner_depth.increment()?;
1496 }
1497 let val_ref = self.discovery.get_or_insert_with(|| fidl::new_empty!(bool, D));
1498 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1500 {
1501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1502 }
1503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1505 }
1506 }
1507
1508 next_offset += envelope_size;
1509
1510 while next_offset < end_offset {
1512 _next_ordinal_to_read += 1;
1513 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1514 next_offset += envelope_size;
1515 }
1516
1517 Ok(())
1518 }
1519 }
1520
1521 impl PeerControllerGetKnownPeersResponse {
1522 #[inline(always)]
1523 fn max_ordinal_present(&self) -> u64 {
1524 if let Some(_) = self.peers {
1525 return 1;
1526 }
1527 0
1528 }
1529 }
1530
1531 impl fidl::encoding::ValueTypeMarker for PeerControllerGetKnownPeersResponse {
1532 type Borrowed<'a> = &'a Self;
1533 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1534 value
1535 }
1536 }
1537
1538 unsafe impl fidl::encoding::TypeMarker for PeerControllerGetKnownPeersResponse {
1539 type Owned = Self;
1540
1541 #[inline(always)]
1542 fn inline_align(_context: fidl::encoding::Context) -> usize {
1543 8
1544 }
1545
1546 #[inline(always)]
1547 fn inline_size(_context: fidl::encoding::Context) -> usize {
1548 16
1549 }
1550 }
1551
1552 unsafe impl<D: fidl::encoding::ResourceDialect>
1553 fidl::encoding::Encode<PeerControllerGetKnownPeersResponse, D>
1554 for &PeerControllerGetKnownPeersResponse
1555 {
1556 unsafe fn encode(
1557 self,
1558 encoder: &mut fidl::encoding::Encoder<'_, D>,
1559 offset: usize,
1560 mut depth: fidl::encoding::Depth,
1561 ) -> fidl::Result<()> {
1562 encoder.debug_check_bounds::<PeerControllerGetKnownPeersResponse>(offset);
1563 let max_ordinal: u64 = self.max_ordinal_present();
1565 encoder.write_num(max_ordinal, offset);
1566 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1567 if max_ordinal == 0 {
1569 return Ok(());
1570 }
1571 depth.increment()?;
1572 let envelope_size = 8;
1573 let bytes_len = max_ordinal as usize * envelope_size;
1574 #[allow(unused_variables)]
1575 let offset = encoder.out_of_line_offset(bytes_len);
1576 let mut _prev_end_offset: usize = 0;
1577 if 1 > max_ordinal {
1578 return Ok(());
1579 }
1580
1581 let cur_offset: usize = (1 - 1) * envelope_size;
1584
1585 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1587
1588 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>, D>(
1593 self.peers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow),
1594 encoder, offset + cur_offset, depth
1595 )?;
1596
1597 _prev_end_offset = cur_offset + envelope_size;
1598
1599 Ok(())
1600 }
1601 }
1602
1603 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1604 for PeerControllerGetKnownPeersResponse
1605 {
1606 #[inline(always)]
1607 fn new_empty() -> Self {
1608 Self::default()
1609 }
1610
1611 unsafe fn decode(
1612 &mut self,
1613 decoder: &mut fidl::encoding::Decoder<'_, D>,
1614 offset: usize,
1615 mut depth: fidl::encoding::Depth,
1616 ) -> fidl::Result<()> {
1617 decoder.debug_check_bounds::<Self>(offset);
1618 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1619 None => return Err(fidl::Error::NotNullable),
1620 Some(len) => len,
1621 };
1622 if len == 0 {
1624 return Ok(());
1625 };
1626 depth.increment()?;
1627 let envelope_size = 8;
1628 let bytes_len = len * envelope_size;
1629 let offset = decoder.out_of_line_offset(bytes_len)?;
1630 let mut _next_ordinal_to_read = 0;
1632 let mut next_offset = offset;
1633 let end_offset = offset + bytes_len;
1634 _next_ordinal_to_read += 1;
1635 if next_offset >= end_offset {
1636 return Ok(());
1637 }
1638
1639 while _next_ordinal_to_read < 1 {
1641 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1642 _next_ordinal_to_read += 1;
1643 next_offset += envelope_size;
1644 }
1645
1646 let next_out_of_line = decoder.next_out_of_line();
1647 let handles_before = decoder.remaining_handles();
1648 if let Some((inlined, num_bytes, num_handles)) =
1649 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1650 {
1651 let member_inline_size = <fidl::encoding::UnboundedVector<
1652 fidl_fuchsia_bluetooth_sys_common::Peer,
1653 > as fidl::encoding::TypeMarker>::inline_size(
1654 decoder.context
1655 );
1656 if inlined != (member_inline_size <= 4) {
1657 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1658 }
1659 let inner_offset;
1660 let mut inner_depth = depth.clone();
1661 if inlined {
1662 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1663 inner_offset = next_offset;
1664 } else {
1665 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1666 inner_depth.increment()?;
1667 }
1668 let val_ref = self.peers.get_or_insert_with(|| {
1669 fidl::new_empty!(
1670 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
1671 D
1672 )
1673 });
1674 fidl::decode!(
1675 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
1676 D,
1677 val_ref,
1678 decoder,
1679 inner_offset,
1680 inner_depth
1681 )?;
1682 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1683 {
1684 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1685 }
1686 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1687 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1688 }
1689 }
1690
1691 next_offset += envelope_size;
1692
1693 while next_offset < end_offset {
1695 _next_ordinal_to_read += 1;
1696 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1697 next_offset += envelope_size;
1698 }
1699
1700 Ok(())
1701 }
1702 }
1703
1704 impl PeerControllerGetPeerIdResponse {
1705 #[inline(always)]
1706 fn max_ordinal_present(&self) -> u64 {
1707 if let Some(_) = self.id {
1708 return 1;
1709 }
1710 0
1711 }
1712 }
1713
1714 impl fidl::encoding::ValueTypeMarker for PeerControllerGetPeerIdResponse {
1715 type Borrowed<'a> = &'a Self;
1716 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1717 value
1718 }
1719 }
1720
1721 unsafe impl fidl::encoding::TypeMarker for PeerControllerGetPeerIdResponse {
1722 type Owned = Self;
1723
1724 #[inline(always)]
1725 fn inline_align(_context: fidl::encoding::Context) -> usize {
1726 8
1727 }
1728
1729 #[inline(always)]
1730 fn inline_size(_context: fidl::encoding::Context) -> usize {
1731 16
1732 }
1733 }
1734
1735 unsafe impl<D: fidl::encoding::ResourceDialect>
1736 fidl::encoding::Encode<PeerControllerGetPeerIdResponse, D>
1737 for &PeerControllerGetPeerIdResponse
1738 {
1739 unsafe fn encode(
1740 self,
1741 encoder: &mut fidl::encoding::Encoder<'_, D>,
1742 offset: usize,
1743 mut depth: fidl::encoding::Depth,
1744 ) -> fidl::Result<()> {
1745 encoder.debug_check_bounds::<PeerControllerGetPeerIdResponse>(offset);
1746 let max_ordinal: u64 = self.max_ordinal_present();
1748 encoder.write_num(max_ordinal, offset);
1749 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1750 if max_ordinal == 0 {
1752 return Ok(());
1753 }
1754 depth.increment()?;
1755 let envelope_size = 8;
1756 let bytes_len = max_ordinal as usize * envelope_size;
1757 #[allow(unused_variables)]
1758 let offset = encoder.out_of_line_offset(bytes_len);
1759 let mut _prev_end_offset: usize = 0;
1760 if 1 > max_ordinal {
1761 return Ok(());
1762 }
1763
1764 let cur_offset: usize = (1 - 1) * envelope_size;
1767
1768 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1770
1771 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
1776 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
1777 encoder, offset + cur_offset, depth
1778 )?;
1779
1780 _prev_end_offset = cur_offset + envelope_size;
1781
1782 Ok(())
1783 }
1784 }
1785
1786 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1787 for PeerControllerGetPeerIdResponse
1788 {
1789 #[inline(always)]
1790 fn new_empty() -> Self {
1791 Self::default()
1792 }
1793
1794 unsafe fn decode(
1795 &mut self,
1796 decoder: &mut fidl::encoding::Decoder<'_, D>,
1797 offset: usize,
1798 mut depth: fidl::encoding::Depth,
1799 ) -> fidl::Result<()> {
1800 decoder.debug_check_bounds::<Self>(offset);
1801 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1802 None => return Err(fidl::Error::NotNullable),
1803 Some(len) => len,
1804 };
1805 if len == 0 {
1807 return Ok(());
1808 };
1809 depth.increment()?;
1810 let envelope_size = 8;
1811 let bytes_len = len * envelope_size;
1812 let offset = decoder.out_of_line_offset(bytes_len)?;
1813 let mut _next_ordinal_to_read = 0;
1815 let mut next_offset = offset;
1816 let end_offset = offset + bytes_len;
1817 _next_ordinal_to_read += 1;
1818 if next_offset >= end_offset {
1819 return Ok(());
1820 }
1821
1822 while _next_ordinal_to_read < 1 {
1824 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1825 _next_ordinal_to_read += 1;
1826 next_offset += envelope_size;
1827 }
1828
1829 let next_out_of_line = decoder.next_out_of_line();
1830 let handles_before = decoder.remaining_handles();
1831 if let Some((inlined, num_bytes, num_handles)) =
1832 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1833 {
1834 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1835 if inlined != (member_inline_size <= 4) {
1836 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1837 }
1838 let inner_offset;
1839 let mut inner_depth = depth.clone();
1840 if inlined {
1841 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1842 inner_offset = next_offset;
1843 } else {
1844 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1845 inner_depth.increment()?;
1846 }
1847 let val_ref = self.id.get_or_insert_with(|| {
1848 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
1849 });
1850 fidl::decode!(
1851 fidl_fuchsia_bluetooth_common::PeerId,
1852 D,
1853 val_ref,
1854 decoder,
1855 inner_offset,
1856 inner_depth
1857 )?;
1858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1859 {
1860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1861 }
1862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1864 }
1865 }
1866
1867 next_offset += envelope_size;
1868
1869 while next_offset < end_offset {
1871 _next_ordinal_to_read += 1;
1872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1873 next_offset += envelope_size;
1874 }
1875
1876 Ok(())
1877 }
1878 }
1879
1880 impl PeerSelector {
1881 #[inline(always)]
1882 fn max_ordinal_present(&self) -> u64 {
1883 if let Some(_) = self.id {
1884 return 1;
1885 }
1886 0
1887 }
1888 }
1889
1890 impl fidl::encoding::ValueTypeMarker for PeerSelector {
1891 type Borrowed<'a> = &'a Self;
1892 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1893 value
1894 }
1895 }
1896
1897 unsafe impl fidl::encoding::TypeMarker for PeerSelector {
1898 type Owned = Self;
1899
1900 #[inline(always)]
1901 fn inline_align(_context: fidl::encoding::Context) -> usize {
1902 8
1903 }
1904
1905 #[inline(always)]
1906 fn inline_size(_context: fidl::encoding::Context) -> usize {
1907 16
1908 }
1909 }
1910
1911 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PeerSelector, D>
1912 for &PeerSelector
1913 {
1914 unsafe fn encode(
1915 self,
1916 encoder: &mut fidl::encoding::Encoder<'_, D>,
1917 offset: usize,
1918 mut depth: fidl::encoding::Depth,
1919 ) -> fidl::Result<()> {
1920 encoder.debug_check_bounds::<PeerSelector>(offset);
1921 let max_ordinal: u64 = self.max_ordinal_present();
1923 encoder.write_num(max_ordinal, offset);
1924 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1925 if max_ordinal == 0 {
1927 return Ok(());
1928 }
1929 depth.increment()?;
1930 let envelope_size = 8;
1931 let bytes_len = max_ordinal as usize * envelope_size;
1932 #[allow(unused_variables)]
1933 let offset = encoder.out_of_line_offset(bytes_len);
1934 let mut _prev_end_offset: usize = 0;
1935 if 1 > max_ordinal {
1936 return Ok(());
1937 }
1938
1939 let cur_offset: usize = (1 - 1) * envelope_size;
1942
1943 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1945
1946 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
1951 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
1952 encoder, offset + cur_offset, depth
1953 )?;
1954
1955 _prev_end_offset = cur_offset + envelope_size;
1956
1957 Ok(())
1958 }
1959 }
1960
1961 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeerSelector {
1962 #[inline(always)]
1963 fn new_empty() -> Self {
1964 Self::default()
1965 }
1966
1967 unsafe fn decode(
1968 &mut self,
1969 decoder: &mut fidl::encoding::Decoder<'_, D>,
1970 offset: usize,
1971 mut depth: fidl::encoding::Depth,
1972 ) -> fidl::Result<()> {
1973 decoder.debug_check_bounds::<Self>(offset);
1974 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1975 None => return Err(fidl::Error::NotNullable),
1976 Some(len) => len,
1977 };
1978 if len == 0 {
1980 return Ok(());
1981 };
1982 depth.increment()?;
1983 let envelope_size = 8;
1984 let bytes_len = len * envelope_size;
1985 let offset = decoder.out_of_line_offset(bytes_len)?;
1986 let mut _next_ordinal_to_read = 0;
1988 let mut next_offset = offset;
1989 let end_offset = offset + bytes_len;
1990 _next_ordinal_to_read += 1;
1991 if next_offset >= end_offset {
1992 return Ok(());
1993 }
1994
1995 while _next_ordinal_to_read < 1 {
1997 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1998 _next_ordinal_to_read += 1;
1999 next_offset += envelope_size;
2000 }
2001
2002 let next_out_of_line = decoder.next_out_of_line();
2003 let handles_before = decoder.remaining_handles();
2004 if let Some((inlined, num_bytes, num_handles)) =
2005 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2006 {
2007 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2008 if inlined != (member_inline_size <= 4) {
2009 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2010 }
2011 let inner_offset;
2012 let mut inner_depth = depth.clone();
2013 if inlined {
2014 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2015 inner_offset = next_offset;
2016 } else {
2017 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2018 inner_depth.increment()?;
2019 }
2020 let val_ref = self.id.get_or_insert_with(|| {
2021 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2022 });
2023 fidl::decode!(
2024 fidl_fuchsia_bluetooth_common::PeerId,
2025 D,
2026 val_ref,
2027 decoder,
2028 inner_offset,
2029 inner_depth
2030 )?;
2031 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2032 {
2033 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2034 }
2035 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2036 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2037 }
2038 }
2039
2040 next_offset += envelope_size;
2041
2042 while next_offset < end_offset {
2044 _next_ordinal_to_read += 1;
2045 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2046 next_offset += envelope_size;
2047 }
2048
2049 Ok(())
2050 }
2051 }
2052
2053 impl PeripheralControllerAdvertiseRequest {
2054 #[inline(always)]
2055 fn max_ordinal_present(&self) -> u64 {
2056 if let Some(_) = self.timeout {
2057 return 2;
2058 }
2059 if let Some(_) = self.parameters {
2060 return 1;
2061 }
2062 0
2063 }
2064 }
2065
2066 impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseRequest {
2067 type Borrowed<'a> = &'a Self;
2068 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2069 value
2070 }
2071 }
2072
2073 unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseRequest {
2074 type Owned = Self;
2075
2076 #[inline(always)]
2077 fn inline_align(_context: fidl::encoding::Context) -> usize {
2078 8
2079 }
2080
2081 #[inline(always)]
2082 fn inline_size(_context: fidl::encoding::Context) -> usize {
2083 16
2084 }
2085 }
2086
2087 unsafe impl<D: fidl::encoding::ResourceDialect>
2088 fidl::encoding::Encode<PeripheralControllerAdvertiseRequest, D>
2089 for &PeripheralControllerAdvertiseRequest
2090 {
2091 unsafe fn encode(
2092 self,
2093 encoder: &mut fidl::encoding::Encoder<'_, D>,
2094 offset: usize,
2095 mut depth: fidl::encoding::Depth,
2096 ) -> fidl::Result<()> {
2097 encoder.debug_check_bounds::<PeripheralControllerAdvertiseRequest>(offset);
2098 let max_ordinal: u64 = self.max_ordinal_present();
2100 encoder.write_num(max_ordinal, offset);
2101 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2102 if max_ordinal == 0 {
2104 return Ok(());
2105 }
2106 depth.increment()?;
2107 let envelope_size = 8;
2108 let bytes_len = max_ordinal as usize * envelope_size;
2109 #[allow(unused_variables)]
2110 let offset = encoder.out_of_line_offset(bytes_len);
2111 let mut _prev_end_offset: usize = 0;
2112 if 1 > max_ordinal {
2113 return Ok(());
2114 }
2115
2116 let cur_offset: usize = (1 - 1) * envelope_size;
2119
2120 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2122
2123 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D>(
2128 self.parameters.as_ref().map(<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::ValueTypeMarker>::borrow),
2129 encoder, offset + cur_offset, depth
2130 )?;
2131
2132 _prev_end_offset = cur_offset + envelope_size;
2133 if 2 > max_ordinal {
2134 return Ok(());
2135 }
2136
2137 let cur_offset: usize = (2 - 1) * envelope_size;
2140
2141 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2143
2144 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2149 self.timeout.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2150 encoder,
2151 offset + cur_offset,
2152 depth,
2153 )?;
2154
2155 _prev_end_offset = cur_offset + envelope_size;
2156
2157 Ok(())
2158 }
2159 }
2160
2161 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2162 for PeripheralControllerAdvertiseRequest
2163 {
2164 #[inline(always)]
2165 fn new_empty() -> Self {
2166 Self::default()
2167 }
2168
2169 unsafe fn decode(
2170 &mut self,
2171 decoder: &mut fidl::encoding::Decoder<'_, D>,
2172 offset: usize,
2173 mut depth: fidl::encoding::Depth,
2174 ) -> fidl::Result<()> {
2175 decoder.debug_check_bounds::<Self>(offset);
2176 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2177 None => return Err(fidl::Error::NotNullable),
2178 Some(len) => len,
2179 };
2180 if len == 0 {
2182 return Ok(());
2183 };
2184 depth.increment()?;
2185 let envelope_size = 8;
2186 let bytes_len = len * envelope_size;
2187 let offset = decoder.out_of_line_offset(bytes_len)?;
2188 let mut _next_ordinal_to_read = 0;
2190 let mut next_offset = offset;
2191 let end_offset = offset + bytes_len;
2192 _next_ordinal_to_read += 1;
2193 if next_offset >= end_offset {
2194 return Ok(());
2195 }
2196
2197 while _next_ordinal_to_read < 1 {
2199 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2200 _next_ordinal_to_read += 1;
2201 next_offset += envelope_size;
2202 }
2203
2204 let next_out_of_line = decoder.next_out_of_line();
2205 let handles_before = decoder.remaining_handles();
2206 if let Some((inlined, num_bytes, num_handles)) =
2207 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2208 {
2209 let member_inline_size = <fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2210 if inlined != (member_inline_size <= 4) {
2211 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2212 }
2213 let inner_offset;
2214 let mut inner_depth = depth.clone();
2215 if inlined {
2216 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2217 inner_offset = next_offset;
2218 } else {
2219 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2220 inner_depth.increment()?;
2221 }
2222 let val_ref = self.parameters.get_or_insert_with(|| {
2223 fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D)
2224 });
2225 fidl::decode!(
2226 fidl_fuchsia_bluetooth_le_common::AdvertisingParameters,
2227 D,
2228 val_ref,
2229 decoder,
2230 inner_offset,
2231 inner_depth
2232 )?;
2233 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2234 {
2235 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2236 }
2237 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2238 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2239 }
2240 }
2241
2242 next_offset += envelope_size;
2243 _next_ordinal_to_read += 1;
2244 if next_offset >= end_offset {
2245 return Ok(());
2246 }
2247
2248 while _next_ordinal_to_read < 2 {
2250 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2251 _next_ordinal_to_read += 1;
2252 next_offset += envelope_size;
2253 }
2254
2255 let next_out_of_line = decoder.next_out_of_line();
2256 let handles_before = decoder.remaining_handles();
2257 if let Some((inlined, num_bytes, num_handles)) =
2258 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2259 {
2260 let member_inline_size =
2261 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2262 if inlined != (member_inline_size <= 4) {
2263 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2264 }
2265 let inner_offset;
2266 let mut inner_depth = depth.clone();
2267 if inlined {
2268 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2269 inner_offset = next_offset;
2270 } else {
2271 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2272 inner_depth.increment()?;
2273 }
2274 let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(u64, D));
2275 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2276 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2277 {
2278 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2279 }
2280 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2281 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2282 }
2283 }
2284
2285 next_offset += envelope_size;
2286
2287 while next_offset < end_offset {
2289 _next_ordinal_to_read += 1;
2290 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2291 next_offset += envelope_size;
2292 }
2293
2294 Ok(())
2295 }
2296 }
2297
2298 impl PeripheralControllerAdvertiseResponse {
2299 #[inline(always)]
2300 fn max_ordinal_present(&self) -> u64 {
2301 if let Some(_) = self.peer_id {
2302 return 1;
2303 }
2304 0
2305 }
2306 }
2307
2308 impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseResponse {
2309 type Borrowed<'a> = &'a Self;
2310 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2311 value
2312 }
2313 }
2314
2315 unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseResponse {
2316 type Owned = Self;
2317
2318 #[inline(always)]
2319 fn inline_align(_context: fidl::encoding::Context) -> usize {
2320 8
2321 }
2322
2323 #[inline(always)]
2324 fn inline_size(_context: fidl::encoding::Context) -> usize {
2325 16
2326 }
2327 }
2328
2329 unsafe impl<D: fidl::encoding::ResourceDialect>
2330 fidl::encoding::Encode<PeripheralControllerAdvertiseResponse, D>
2331 for &PeripheralControllerAdvertiseResponse
2332 {
2333 unsafe fn encode(
2334 self,
2335 encoder: &mut fidl::encoding::Encoder<'_, D>,
2336 offset: usize,
2337 mut depth: fidl::encoding::Depth,
2338 ) -> fidl::Result<()> {
2339 encoder.debug_check_bounds::<PeripheralControllerAdvertiseResponse>(offset);
2340 let max_ordinal: u64 = self.max_ordinal_present();
2342 encoder.write_num(max_ordinal, offset);
2343 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2344 if max_ordinal == 0 {
2346 return Ok(());
2347 }
2348 depth.increment()?;
2349 let envelope_size = 8;
2350 let bytes_len = max_ordinal as usize * envelope_size;
2351 #[allow(unused_variables)]
2352 let offset = encoder.out_of_line_offset(bytes_len);
2353 let mut _prev_end_offset: usize = 0;
2354 if 1 > max_ordinal {
2355 return Ok(());
2356 }
2357
2358 let cur_offset: usize = (1 - 1) * envelope_size;
2361
2362 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2364
2365 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2370 self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2371 encoder, offset + cur_offset, depth
2372 )?;
2373
2374 _prev_end_offset = cur_offset + envelope_size;
2375
2376 Ok(())
2377 }
2378 }
2379
2380 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2381 for PeripheralControllerAdvertiseResponse
2382 {
2383 #[inline(always)]
2384 fn new_empty() -> Self {
2385 Self::default()
2386 }
2387
2388 unsafe fn decode(
2389 &mut self,
2390 decoder: &mut fidl::encoding::Decoder<'_, D>,
2391 offset: usize,
2392 mut depth: fidl::encoding::Depth,
2393 ) -> fidl::Result<()> {
2394 decoder.debug_check_bounds::<Self>(offset);
2395 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2396 None => return Err(fidl::Error::NotNullable),
2397 Some(len) => len,
2398 };
2399 if len == 0 {
2401 return Ok(());
2402 };
2403 depth.increment()?;
2404 let envelope_size = 8;
2405 let bytes_len = len * envelope_size;
2406 let offset = decoder.out_of_line_offset(bytes_len)?;
2407 let mut _next_ordinal_to_read = 0;
2409 let mut next_offset = offset;
2410 let end_offset = offset + bytes_len;
2411 _next_ordinal_to_read += 1;
2412 if next_offset >= end_offset {
2413 return Ok(());
2414 }
2415
2416 while _next_ordinal_to_read < 1 {
2418 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2419 _next_ordinal_to_read += 1;
2420 next_offset += envelope_size;
2421 }
2422
2423 let next_out_of_line = decoder.next_out_of_line();
2424 let handles_before = decoder.remaining_handles();
2425 if let Some((inlined, num_bytes, num_handles)) =
2426 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2427 {
2428 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2429 if inlined != (member_inline_size <= 4) {
2430 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2431 }
2432 let inner_offset;
2433 let mut inner_depth = depth.clone();
2434 if inlined {
2435 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2436 inner_offset = next_offset;
2437 } else {
2438 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2439 inner_depth.increment()?;
2440 }
2441 let val_ref = self.peer_id.get_or_insert_with(|| {
2442 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2443 });
2444 fidl::decode!(
2445 fidl_fuchsia_bluetooth_common::PeerId,
2446 D,
2447 val_ref,
2448 decoder,
2449 inner_offset,
2450 inner_depth
2451 )?;
2452 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2453 {
2454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2455 }
2456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2458 }
2459 }
2460
2461 next_offset += envelope_size;
2462
2463 while next_offset < end_offset {
2465 _next_ordinal_to_read += 1;
2466 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2467 next_offset += envelope_size;
2468 }
2469
2470 Ok(())
2471 }
2472 }
2473
2474 impl ScanResultListenerOnPeersDiscoveredRequest {
2475 #[inline(always)]
2476 fn max_ordinal_present(&self) -> u64 {
2477 if let Some(_) = self.peers {
2478 return 1;
2479 }
2480 0
2481 }
2482 }
2483
2484 impl fidl::encoding::ValueTypeMarker for ScanResultListenerOnPeersDiscoveredRequest {
2485 type Borrowed<'a> = &'a Self;
2486 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2487 value
2488 }
2489 }
2490
2491 unsafe impl fidl::encoding::TypeMarker for ScanResultListenerOnPeersDiscoveredRequest {
2492 type Owned = Self;
2493
2494 #[inline(always)]
2495 fn inline_align(_context: fidl::encoding::Context) -> usize {
2496 8
2497 }
2498
2499 #[inline(always)]
2500 fn inline_size(_context: fidl::encoding::Context) -> usize {
2501 16
2502 }
2503 }
2504
2505 unsafe impl<D: fidl::encoding::ResourceDialect>
2506 fidl::encoding::Encode<ScanResultListenerOnPeersDiscoveredRequest, D>
2507 for &ScanResultListenerOnPeersDiscoveredRequest
2508 {
2509 unsafe fn encode(
2510 self,
2511 encoder: &mut fidl::encoding::Encoder<'_, D>,
2512 offset: usize,
2513 mut depth: fidl::encoding::Depth,
2514 ) -> fidl::Result<()> {
2515 encoder.debug_check_bounds::<ScanResultListenerOnPeersDiscoveredRequest>(offset);
2516 let max_ordinal: u64 = self.max_ordinal_present();
2518 encoder.write_num(max_ordinal, offset);
2519 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2520 if max_ordinal == 0 {
2522 return Ok(());
2523 }
2524 depth.increment()?;
2525 let envelope_size = 8;
2526 let bytes_len = max_ordinal as usize * envelope_size;
2527 #[allow(unused_variables)]
2528 let offset = encoder.out_of_line_offset(bytes_len);
2529 let mut _prev_end_offset: usize = 0;
2530 if 1 > max_ordinal {
2531 return Ok(());
2532 }
2533
2534 let cur_offset: usize = (1 - 1) * envelope_size;
2537
2538 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2540
2541 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScannedPeer>, D>(
2546 self.peers.as_ref().map(<fidl::encoding::UnboundedVector<ScannedPeer> as fidl::encoding::ValueTypeMarker>::borrow),
2547 encoder, offset + cur_offset, depth
2548 )?;
2549
2550 _prev_end_offset = cur_offset + envelope_size;
2551
2552 Ok(())
2553 }
2554 }
2555
2556 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2557 for ScanResultListenerOnPeersDiscoveredRequest
2558 {
2559 #[inline(always)]
2560 fn new_empty() -> Self {
2561 Self::default()
2562 }
2563
2564 unsafe fn decode(
2565 &mut self,
2566 decoder: &mut fidl::encoding::Decoder<'_, D>,
2567 offset: usize,
2568 mut depth: fidl::encoding::Depth,
2569 ) -> fidl::Result<()> {
2570 decoder.debug_check_bounds::<Self>(offset);
2571 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2572 None => return Err(fidl::Error::NotNullable),
2573 Some(len) => len,
2574 };
2575 if len == 0 {
2577 return Ok(());
2578 };
2579 depth.increment()?;
2580 let envelope_size = 8;
2581 let bytes_len = len * envelope_size;
2582 let offset = decoder.out_of_line_offset(bytes_len)?;
2583 let mut _next_ordinal_to_read = 0;
2585 let mut next_offset = offset;
2586 let end_offset = offset + bytes_len;
2587 _next_ordinal_to_read += 1;
2588 if next_offset >= end_offset {
2589 return Ok(());
2590 }
2591
2592 while _next_ordinal_to_read < 1 {
2594 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2595 _next_ordinal_to_read += 1;
2596 next_offset += envelope_size;
2597 }
2598
2599 let next_out_of_line = decoder.next_out_of_line();
2600 let handles_before = decoder.remaining_handles();
2601 if let Some((inlined, num_bytes, num_handles)) =
2602 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2603 {
2604 let member_inline_size = <fidl::encoding::UnboundedVector<ScannedPeer> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2605 if inlined != (member_inline_size <= 4) {
2606 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2607 }
2608 let inner_offset;
2609 let mut inner_depth = depth.clone();
2610 if inlined {
2611 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2612 inner_offset = next_offset;
2613 } else {
2614 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2615 inner_depth.increment()?;
2616 }
2617 let val_ref = self.peers.get_or_insert_with(|| {
2618 fidl::new_empty!(fidl::encoding::UnboundedVector<ScannedPeer>, D)
2619 });
2620 fidl::decode!(
2621 fidl::encoding::UnboundedVector<ScannedPeer>,
2622 D,
2623 val_ref,
2624 decoder,
2625 inner_offset,
2626 inner_depth
2627 )?;
2628 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2629 {
2630 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2631 }
2632 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2633 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2634 }
2635 }
2636
2637 next_offset += envelope_size;
2638
2639 while next_offset < end_offset {
2641 _next_ordinal_to_read += 1;
2642 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2643 next_offset += envelope_size;
2644 }
2645
2646 Ok(())
2647 }
2648 }
2649
2650 impl ScannedPeer {
2651 #[inline(always)]
2652 fn max_ordinal_present(&self) -> u64 {
2653 if let Some(_) = self.address {
2654 return 2;
2655 }
2656 if let Some(_) = self.peer {
2657 return 1;
2658 }
2659 0
2660 }
2661 }
2662
2663 impl fidl::encoding::ValueTypeMarker for ScannedPeer {
2664 type Borrowed<'a> = &'a Self;
2665 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2666 value
2667 }
2668 }
2669
2670 unsafe impl fidl::encoding::TypeMarker for ScannedPeer {
2671 type Owned = Self;
2672
2673 #[inline(always)]
2674 fn inline_align(_context: fidl::encoding::Context) -> usize {
2675 8
2676 }
2677
2678 #[inline(always)]
2679 fn inline_size(_context: fidl::encoding::Context) -> usize {
2680 16
2681 }
2682 }
2683
2684 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScannedPeer, D>
2685 for &ScannedPeer
2686 {
2687 unsafe fn encode(
2688 self,
2689 encoder: &mut fidl::encoding::Encoder<'_, D>,
2690 offset: usize,
2691 mut depth: fidl::encoding::Depth,
2692 ) -> fidl::Result<()> {
2693 encoder.debug_check_bounds::<ScannedPeer>(offset);
2694 let max_ordinal: u64 = self.max_ordinal_present();
2696 encoder.write_num(max_ordinal, offset);
2697 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2698 if max_ordinal == 0 {
2700 return Ok(());
2701 }
2702 depth.increment()?;
2703 let envelope_size = 8;
2704 let bytes_len = max_ordinal as usize * envelope_size;
2705 #[allow(unused_variables)]
2706 let offset = encoder.out_of_line_offset(bytes_len);
2707 let mut _prev_end_offset: usize = 0;
2708 if 1 > max_ordinal {
2709 return Ok(());
2710 }
2711
2712 let cur_offset: usize = (1 - 1) * envelope_size;
2715
2716 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2718
2719 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::Peer, D>(
2724 self.peer.as_ref().map(<fidl_fuchsia_bluetooth_le_common::Peer as fidl::encoding::ValueTypeMarker>::borrow),
2725 encoder, offset + cur_offset, depth
2726 )?;
2727
2728 _prev_end_offset = cur_offset + envelope_size;
2729 if 2 > max_ordinal {
2730 return Ok(());
2731 }
2732
2733 let cur_offset: usize = (2 - 1) * envelope_size;
2736
2737 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2739
2740 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Address, D>(
2745 self.address.as_ref().map(<fidl_fuchsia_bluetooth_common::Address as fidl::encoding::ValueTypeMarker>::borrow),
2746 encoder, offset + cur_offset, depth
2747 )?;
2748
2749 _prev_end_offset = cur_offset + envelope_size;
2750
2751 Ok(())
2752 }
2753 }
2754
2755 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScannedPeer {
2756 #[inline(always)]
2757 fn new_empty() -> Self {
2758 Self::default()
2759 }
2760
2761 unsafe fn decode(
2762 &mut self,
2763 decoder: &mut fidl::encoding::Decoder<'_, D>,
2764 offset: usize,
2765 mut depth: fidl::encoding::Depth,
2766 ) -> fidl::Result<()> {
2767 decoder.debug_check_bounds::<Self>(offset);
2768 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2769 None => return Err(fidl::Error::NotNullable),
2770 Some(len) => len,
2771 };
2772 if len == 0 {
2774 return Ok(());
2775 };
2776 depth.increment()?;
2777 let envelope_size = 8;
2778 let bytes_len = len * envelope_size;
2779 let offset = decoder.out_of_line_offset(bytes_len)?;
2780 let mut _next_ordinal_to_read = 0;
2782 let mut next_offset = offset;
2783 let end_offset = offset + bytes_len;
2784 _next_ordinal_to_read += 1;
2785 if next_offset >= end_offset {
2786 return Ok(());
2787 }
2788
2789 while _next_ordinal_to_read < 1 {
2791 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2792 _next_ordinal_to_read += 1;
2793 next_offset += envelope_size;
2794 }
2795
2796 let next_out_of_line = decoder.next_out_of_line();
2797 let handles_before = decoder.remaining_handles();
2798 if let Some((inlined, num_bytes, num_handles)) =
2799 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2800 {
2801 let member_inline_size = <fidl_fuchsia_bluetooth_le_common::Peer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2802 if inlined != (member_inline_size <= 4) {
2803 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2804 }
2805 let inner_offset;
2806 let mut inner_depth = depth.clone();
2807 if inlined {
2808 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2809 inner_offset = next_offset;
2810 } else {
2811 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2812 inner_depth.increment()?;
2813 }
2814 let val_ref = self.peer.get_or_insert_with(|| {
2815 fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::Peer, D)
2816 });
2817 fidl::decode!(
2818 fidl_fuchsia_bluetooth_le_common::Peer,
2819 D,
2820 val_ref,
2821 decoder,
2822 inner_offset,
2823 inner_depth
2824 )?;
2825 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2826 {
2827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2828 }
2829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2831 }
2832 }
2833
2834 next_offset += envelope_size;
2835 _next_ordinal_to_read += 1;
2836 if next_offset >= end_offset {
2837 return Ok(());
2838 }
2839
2840 while _next_ordinal_to_read < 2 {
2842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2843 _next_ordinal_to_read += 1;
2844 next_offset += envelope_size;
2845 }
2846
2847 let next_out_of_line = decoder.next_out_of_line();
2848 let handles_before = decoder.remaining_handles();
2849 if let Some((inlined, num_bytes, num_handles)) =
2850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2851 {
2852 let member_inline_size = <fidl_fuchsia_bluetooth_common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2853 if inlined != (member_inline_size <= 4) {
2854 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2855 }
2856 let inner_offset;
2857 let mut inner_depth = depth.clone();
2858 if inlined {
2859 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2860 inner_offset = next_offset;
2861 } else {
2862 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2863 inner_depth.increment()?;
2864 }
2865 let val_ref = self.address.get_or_insert_with(|| {
2866 fidl::new_empty!(fidl_fuchsia_bluetooth_common::Address, D)
2867 });
2868 fidl::decode!(
2869 fidl_fuchsia_bluetooth_common::Address,
2870 D,
2871 val_ref,
2872 decoder,
2873 inner_offset,
2874 inner_depth
2875 )?;
2876 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2877 {
2878 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2879 }
2880 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2881 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2882 }
2883 }
2884
2885 next_offset += envelope_size;
2886
2887 while next_offset < end_offset {
2889 _next_ordinal_to_read += 1;
2890 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2891 next_offset += envelope_size;
2892 }
2893
2894 Ok(())
2895 }
2896 }
2897}