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 HostControllerSetDeviceClassRequest {
60 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 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 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 pub input_capability: Option<fidl_fuchsia_bluetooth_sys_common::InputCapability>,
93 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#[derive(Clone, Debug, Default, PartialEq)]
113pub struct HostSelector {
114 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 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 pub selector: Option<PeerSelector>,
136 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 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 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#[derive(Clone, Debug, Default, PartialEq)]
175pub struct PeerSelector {
176 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 pub parameters: Option<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters>,
188 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 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#[derive(Clone, Debug, Default, PartialEq)]
218pub struct ScannedPeer {
219 pub peer: Option<fidl_fuchsia_bluetooth_le_common::Peer>,
221 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
399
400 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
402
403 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
595
596 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
598
599 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
765
766 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
768
769 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
941
942 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
944
945 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
1111
1112 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1114
1115 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
1297
1298 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1300
1301 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 let cur_offset: usize = (2 - 1) * envelope_size;
1318
1319 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1321
1322 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 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
1545
1546 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1548
1549 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
1729
1730 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1732
1733 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
1903
1904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1906
1907 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
2081
2082 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2084
2085 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 let cur_offset: usize = (2 - 1) * envelope_size;
2106
2107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2109
2110 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 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
2326
2327 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2329
2330 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
2496
2497 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2499
2500 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
2679
2680 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2682
2683 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
2854
2855 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2857
2858 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
3031
3032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3034
3035 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 let cur_offset: usize = (2 - 1) * envelope_size;
3052
3053 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3055
3056 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 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
3273
3274 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3276
3277 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
3449
3450 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3452
3453 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 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 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 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 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 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 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 let cur_offset: usize = (1 - 1) * envelope_size;
3627
3628 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3630
3631 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 let cur_offset: usize = (2 - 1) * envelope_size;
3648
3649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3651
3652 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 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 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 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 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 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}