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 PeerControllerPairRequest {
124 pub selector: Option<PeerSelector>,
126 pub options: Option<fidl_fuchsia_bluetooth_sys_common::PairingOptions>,
128 #[doc(hidden)]
129 pub __source_breaking: fidl::marker::SourceBreaking,
130}
131
132impl fidl::Persistable for PeerControllerPairRequest {}
133
134#[derive(Clone, Debug, Default, PartialEq)]
135pub struct PeerControllerSetDiscoveryRequest {
136 pub discovery: Option<bool>,
138 #[doc(hidden)]
139 pub __source_breaking: fidl::marker::SourceBreaking,
140}
141
142impl fidl::Persistable for PeerControllerSetDiscoveryRequest {}
143
144#[derive(Clone, Debug, Default, PartialEq)]
145pub struct PeerControllerGetKnownPeersResponse {
146 pub peers: Option<Vec<fidl_fuchsia_bluetooth_sys_common::Peer>>,
147 #[doc(hidden)]
148 pub __source_breaking: fidl::marker::SourceBreaking,
149}
150
151impl fidl::Persistable for PeerControllerGetKnownPeersResponse {}
152
153#[derive(Clone, Debug, Default, PartialEq)]
155pub struct PeerSelector {
156 pub id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
158 #[doc(hidden)]
159 pub __source_breaking: fidl::marker::SourceBreaking,
160}
161
162impl fidl::Persistable for PeerSelector {}
163
164#[derive(Clone, Debug, Default, PartialEq)]
165pub struct PeripheralControllerAdvertiseRequest {
166 pub parameters: Option<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters>,
168 pub timeout: Option<u64>,
170 #[doc(hidden)]
171 pub __source_breaking: fidl::marker::SourceBreaking,
172}
173
174impl fidl::Persistable for PeripheralControllerAdvertiseRequest {}
175
176#[derive(Clone, Debug, Default, PartialEq)]
177pub struct PeripheralControllerAdvertiseResponse {
178 pub peer_id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
180 #[doc(hidden)]
181 pub __source_breaking: fidl::marker::SourceBreaking,
182}
183
184impl fidl::Persistable for PeripheralControllerAdvertiseResponse {}
185
186#[derive(Clone, Debug, Default, PartialEq)]
187pub struct ScanResultListenerOnPeersDiscoveredRequest {
188 pub peers: Option<Vec<ScannedPeer>>,
189 #[doc(hidden)]
190 pub __source_breaking: fidl::marker::SourceBreaking,
191}
192
193impl fidl::Persistable for ScanResultListenerOnPeersDiscoveredRequest {}
194
195#[derive(Clone, Debug, Default, PartialEq)]
198pub struct ScannedPeer {
199 pub peer: Option<fidl_fuchsia_bluetooth_le_common::Peer>,
201 pub address: Option<fidl_fuchsia_bluetooth_common::Address>,
203 #[doc(hidden)]
204 pub __source_breaking: fidl::marker::SourceBreaking,
205}
206
207impl fidl::Persistable for ScannedPeer {}
208
209pub mod central_controller_ordinals {
210 pub const START_SCAN: u64 = 0x7f8e8fdaa5b359ea;
211 pub const CONNECT_PERIPHERAL: u64 = 0x4cf45727cca182cd;
212}
213
214pub mod gatt_client_controller_ordinals {
215 pub const DISCOVER_SERVICES: u64 = 0x2451643d00753f94;
216}
217
218pub mod host_controller_ordinals {
219 pub const GET_HOSTS: u64 = 0x167d2522684d453d;
220 pub const SET_DISCOVERABILITY: u64 = 0x1e977b538b94b08b;
221 pub const SET_CONNECTABILITY: u64 = 0x93572b659adf7d;
222 pub const SET_ACTIVE_HOST: u64 = 0x1d3f8ba8b30347de;
223 pub const SET_LOCAL_NAME: u64 = 0x357714c7aa252336;
224 pub const START_PAIRING_DELEGATE: u64 = 0x155c20cb1b9c1ed2;
225 pub const STOP_PAIRING_DELEGATE: u64 = 0x5caaee1192a8172c;
226 pub const SET_DEVICE_CLASS: u64 = 0x34dcc9ed479692dc;
227}
228
229pub mod peer_controller_ordinals {
230 pub const GET_KNOWN_PEERS: u64 = 0x482cf3745bab65f6;
231 pub const CONNECT_PEER: u64 = 0x13fbb990835acf66;
232 pub const DISCONNECT_PEER: u64 = 0x5f9992f066c664ad;
233 pub const PAIR: u64 = 0x1991671d4d7eff26;
234 pub const FORGET_PEER: u64 = 0x26011dbbd834f8c6;
235 pub const SET_DISCOVERY: u64 = 0x3269624c9e1d6ab3;
236}
237
238pub mod peripheral_controller_ordinals {
239 pub const ADVERTISE: u64 = 0x59079a81362a66f3;
240}
241
242pub mod scan_result_listener_ordinals {
243 pub const ON_PEERS_DISCOVERED: u64 = 0x111ea99f3f0c8009;
244}
245
246mod internal {
247 use super::*;
248 unsafe impl fidl::encoding::TypeMarker for Error {
249 type Owned = Self;
250
251 #[inline(always)]
252 fn inline_align(_context: fidl::encoding::Context) -> usize {
253 std::mem::align_of::<u32>()
254 }
255
256 #[inline(always)]
257 fn inline_size(_context: fidl::encoding::Context) -> usize {
258 std::mem::size_of::<u32>()
259 }
260
261 #[inline(always)]
262 fn encode_is_copy() -> bool {
263 true
264 }
265
266 #[inline(always)]
267 fn decode_is_copy() -> bool {
268 false
269 }
270 }
271
272 impl fidl::encoding::ValueTypeMarker for Error {
273 type Borrowed<'a> = Self;
274 #[inline(always)]
275 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
276 *value
277 }
278 }
279
280 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
281 #[inline]
282 unsafe fn encode(
283 self,
284 encoder: &mut fidl::encoding::Encoder<'_, D>,
285 offset: usize,
286 _depth: fidl::encoding::Depth,
287 ) -> fidl::Result<()> {
288 encoder.debug_check_bounds::<Self>(offset);
289 encoder.write_num(self.into_primitive(), offset);
290 Ok(())
291 }
292 }
293
294 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
295 #[inline(always)]
296 fn new_empty() -> Self {
297 Self::Internal
298 }
299
300 #[inline]
301 unsafe fn decode(
302 &mut self,
303 decoder: &mut fidl::encoding::Decoder<'_, D>,
304 offset: usize,
305 _depth: fidl::encoding::Depth,
306 ) -> fidl::Result<()> {
307 decoder.debug_check_bounds::<Self>(offset);
308 let prim = decoder.read_num::<u32>(offset);
309
310 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
311 Ok(())
312 }
313 }
314
315 impl GattClientControllerDiscoverServicesResponse {
316 #[inline(always)]
317 fn max_ordinal_present(&self) -> u64 {
318 if let Some(_) = self.services {
319 return 1;
320 }
321 0
322 }
323 }
324
325 impl fidl::encoding::ValueTypeMarker for GattClientControllerDiscoverServicesResponse {
326 type Borrowed<'a> = &'a Self;
327 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
328 value
329 }
330 }
331
332 unsafe impl fidl::encoding::TypeMarker for GattClientControllerDiscoverServicesResponse {
333 type Owned = Self;
334
335 #[inline(always)]
336 fn inline_align(_context: fidl::encoding::Context) -> usize {
337 8
338 }
339
340 #[inline(always)]
341 fn inline_size(_context: fidl::encoding::Context) -> usize {
342 16
343 }
344 }
345
346 unsafe impl<D: fidl::encoding::ResourceDialect>
347 fidl::encoding::Encode<GattClientControllerDiscoverServicesResponse, D>
348 for &GattClientControllerDiscoverServicesResponse
349 {
350 unsafe fn encode(
351 self,
352 encoder: &mut fidl::encoding::Encoder<'_, D>,
353 offset: usize,
354 mut depth: fidl::encoding::Depth,
355 ) -> fidl::Result<()> {
356 encoder.debug_check_bounds::<GattClientControllerDiscoverServicesResponse>(offset);
357 let max_ordinal: u64 = self.max_ordinal_present();
359 encoder.write_num(max_ordinal, offset);
360 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
361 if max_ordinal == 0 {
363 return Ok(());
364 }
365 depth.increment()?;
366 let envelope_size = 8;
367 let bytes_len = max_ordinal as usize * envelope_size;
368 #[allow(unused_variables)]
369 let offset = encoder.out_of_line_offset(bytes_len);
370 let mut _prev_end_offset: usize = 0;
371 if 1 > max_ordinal {
372 return Ok(());
373 }
374
375 let cur_offset: usize = (1 - 1) * envelope_size;
378
379 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
381
382 fidl::encoding::encode_in_envelope_optional::<
387 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo>,
388 D,
389 >(
390 self.services.as_ref().map(
391 <fidl::encoding::UnboundedVector<
392 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
393 > as fidl::encoding::ValueTypeMarker>::borrow,
394 ),
395 encoder,
396 offset + cur_offset,
397 depth,
398 )?;
399
400 _prev_end_offset = cur_offset + envelope_size;
401
402 Ok(())
403 }
404 }
405
406 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
407 for GattClientControllerDiscoverServicesResponse
408 {
409 #[inline(always)]
410 fn new_empty() -> Self {
411 Self::default()
412 }
413
414 unsafe fn decode(
415 &mut self,
416 decoder: &mut fidl::encoding::Decoder<'_, D>,
417 offset: usize,
418 mut depth: fidl::encoding::Depth,
419 ) -> fidl::Result<()> {
420 decoder.debug_check_bounds::<Self>(offset);
421 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
422 None => return Err(fidl::Error::NotNullable),
423 Some(len) => len,
424 };
425 if len == 0 {
427 return Ok(());
428 };
429 depth.increment()?;
430 let envelope_size = 8;
431 let bytes_len = len * envelope_size;
432 let offset = decoder.out_of_line_offset(bytes_len)?;
433 let mut _next_ordinal_to_read = 0;
435 let mut next_offset = offset;
436 let end_offset = offset + bytes_len;
437 _next_ordinal_to_read += 1;
438 if next_offset >= end_offset {
439 return Ok(());
440 }
441
442 while _next_ordinal_to_read < 1 {
444 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
445 _next_ordinal_to_read += 1;
446 next_offset += envelope_size;
447 }
448
449 let next_out_of_line = decoder.next_out_of_line();
450 let handles_before = decoder.remaining_handles();
451 if let Some((inlined, num_bytes, num_handles)) =
452 fidl::encoding::decode_envelope_header(decoder, next_offset)?
453 {
454 let member_inline_size = <fidl::encoding::UnboundedVector<
455 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
456 > as fidl::encoding::TypeMarker>::inline_size(
457 decoder.context
458 );
459 if inlined != (member_inline_size <= 4) {
460 return Err(fidl::Error::InvalidInlineBitInEnvelope);
461 }
462 let inner_offset;
463 let mut inner_depth = depth.clone();
464 if inlined {
465 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
466 inner_offset = next_offset;
467 } else {
468 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
469 inner_depth.increment()?;
470 }
471 let val_ref = self.services.get_or_insert_with(|| {
472 fidl::new_empty!(
473 fidl::encoding::UnboundedVector<
474 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
475 >,
476 D
477 )
478 });
479 fidl::decode!(
480 fidl::encoding::UnboundedVector<
481 fidl_fuchsia_bluetooth_gatt2_common::ServiceInfo,
482 >,
483 D,
484 val_ref,
485 decoder,
486 inner_offset,
487 inner_depth
488 )?;
489 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
490 {
491 return Err(fidl::Error::InvalidNumBytesInEnvelope);
492 }
493 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
494 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
495 }
496 }
497
498 next_offset += envelope_size;
499
500 while next_offset < end_offset {
502 _next_ordinal_to_read += 1;
503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
504 next_offset += envelope_size;
505 }
506
507 Ok(())
508 }
509 }
510
511 impl HostControllerSetConnectabilityRequest {
512 #[inline(always)]
513 fn max_ordinal_present(&self) -> u64 {
514 if let Some(_) = self.connectable {
515 return 1;
516 }
517 0
518 }
519 }
520
521 impl fidl::encoding::ValueTypeMarker for HostControllerSetConnectabilityRequest {
522 type Borrowed<'a> = &'a Self;
523 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
524 value
525 }
526 }
527
528 unsafe impl fidl::encoding::TypeMarker for HostControllerSetConnectabilityRequest {
529 type Owned = Self;
530
531 #[inline(always)]
532 fn inline_align(_context: fidl::encoding::Context) -> usize {
533 8
534 }
535
536 #[inline(always)]
537 fn inline_size(_context: fidl::encoding::Context) -> usize {
538 16
539 }
540 }
541
542 unsafe impl<D: fidl::encoding::ResourceDialect>
543 fidl::encoding::Encode<HostControllerSetConnectabilityRequest, D>
544 for &HostControllerSetConnectabilityRequest
545 {
546 unsafe fn encode(
547 self,
548 encoder: &mut fidl::encoding::Encoder<'_, D>,
549 offset: usize,
550 mut depth: fidl::encoding::Depth,
551 ) -> fidl::Result<()> {
552 encoder.debug_check_bounds::<HostControllerSetConnectabilityRequest>(offset);
553 let max_ordinal: u64 = self.max_ordinal_present();
555 encoder.write_num(max_ordinal, offset);
556 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
557 if max_ordinal == 0 {
559 return Ok(());
560 }
561 depth.increment()?;
562 let envelope_size = 8;
563 let bytes_len = max_ordinal as usize * envelope_size;
564 #[allow(unused_variables)]
565 let offset = encoder.out_of_line_offset(bytes_len);
566 let mut _prev_end_offset: usize = 0;
567 if 1 > max_ordinal {
568 return Ok(());
569 }
570
571 let cur_offset: usize = (1 - 1) * envelope_size;
574
575 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
577
578 fidl::encoding::encode_in_envelope_optional::<bool, D>(
583 self.connectable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
584 encoder,
585 offset + cur_offset,
586 depth,
587 )?;
588
589 _prev_end_offset = cur_offset + envelope_size;
590
591 Ok(())
592 }
593 }
594
595 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
596 for HostControllerSetConnectabilityRequest
597 {
598 #[inline(always)]
599 fn new_empty() -> Self {
600 Self::default()
601 }
602
603 unsafe fn decode(
604 &mut self,
605 decoder: &mut fidl::encoding::Decoder<'_, D>,
606 offset: usize,
607 mut depth: fidl::encoding::Depth,
608 ) -> fidl::Result<()> {
609 decoder.debug_check_bounds::<Self>(offset);
610 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
611 None => return Err(fidl::Error::NotNullable),
612 Some(len) => len,
613 };
614 if len == 0 {
616 return Ok(());
617 };
618 depth.increment()?;
619 let envelope_size = 8;
620 let bytes_len = len * envelope_size;
621 let offset = decoder.out_of_line_offset(bytes_len)?;
622 let mut _next_ordinal_to_read = 0;
624 let mut next_offset = offset;
625 let end_offset = offset + bytes_len;
626 _next_ordinal_to_read += 1;
627 if next_offset >= end_offset {
628 return Ok(());
629 }
630
631 while _next_ordinal_to_read < 1 {
633 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
634 _next_ordinal_to_read += 1;
635 next_offset += envelope_size;
636 }
637
638 let next_out_of_line = decoder.next_out_of_line();
639 let handles_before = decoder.remaining_handles();
640 if let Some((inlined, num_bytes, num_handles)) =
641 fidl::encoding::decode_envelope_header(decoder, next_offset)?
642 {
643 let member_inline_size =
644 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
645 if inlined != (member_inline_size <= 4) {
646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
647 }
648 let inner_offset;
649 let mut inner_depth = depth.clone();
650 if inlined {
651 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
652 inner_offset = next_offset;
653 } else {
654 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
655 inner_depth.increment()?;
656 }
657 let val_ref = self.connectable.get_or_insert_with(|| fidl::new_empty!(bool, D));
658 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
659 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
660 {
661 return Err(fidl::Error::InvalidNumBytesInEnvelope);
662 }
663 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
664 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
665 }
666 }
667
668 next_offset += envelope_size;
669
670 while next_offset < end_offset {
672 _next_ordinal_to_read += 1;
673 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
674 next_offset += envelope_size;
675 }
676
677 Ok(())
678 }
679 }
680
681 impl HostControllerSetDeviceClassRequest {
682 #[inline(always)]
683 fn max_ordinal_present(&self) -> u64 {
684 if let Some(_) = self.device_class {
685 return 1;
686 }
687 0
688 }
689 }
690
691 impl fidl::encoding::ValueTypeMarker for HostControllerSetDeviceClassRequest {
692 type Borrowed<'a> = &'a Self;
693 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
694 value
695 }
696 }
697
698 unsafe impl fidl::encoding::TypeMarker for HostControllerSetDeviceClassRequest {
699 type Owned = Self;
700
701 #[inline(always)]
702 fn inline_align(_context: fidl::encoding::Context) -> usize {
703 8
704 }
705
706 #[inline(always)]
707 fn inline_size(_context: fidl::encoding::Context) -> usize {
708 16
709 }
710 }
711
712 unsafe impl<D: fidl::encoding::ResourceDialect>
713 fidl::encoding::Encode<HostControllerSetDeviceClassRequest, D>
714 for &HostControllerSetDeviceClassRequest
715 {
716 unsafe fn encode(
717 self,
718 encoder: &mut fidl::encoding::Encoder<'_, D>,
719 offset: usize,
720 mut depth: fidl::encoding::Depth,
721 ) -> fidl::Result<()> {
722 encoder.debug_check_bounds::<HostControllerSetDeviceClassRequest>(offset);
723 let max_ordinal: u64 = self.max_ordinal_present();
725 encoder.write_num(max_ordinal, offset);
726 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
727 if max_ordinal == 0 {
729 return Ok(());
730 }
731 depth.increment()?;
732 let envelope_size = 8;
733 let bytes_len = max_ordinal as usize * envelope_size;
734 #[allow(unused_variables)]
735 let offset = encoder.out_of_line_offset(bytes_len);
736 let mut _prev_end_offset: usize = 0;
737 if 1 > max_ordinal {
738 return Ok(());
739 }
740
741 let cur_offset: usize = (1 - 1) * envelope_size;
744
745 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
747
748 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::DeviceClass, D>(
753 self.device_class.as_ref().map(<fidl_fuchsia_bluetooth_common::DeviceClass as fidl::encoding::ValueTypeMarker>::borrow),
754 encoder, offset + cur_offset, depth
755 )?;
756
757 _prev_end_offset = cur_offset + envelope_size;
758
759 Ok(())
760 }
761 }
762
763 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
764 for HostControllerSetDeviceClassRequest
765 {
766 #[inline(always)]
767 fn new_empty() -> Self {
768 Self::default()
769 }
770
771 unsafe fn decode(
772 &mut self,
773 decoder: &mut fidl::encoding::Decoder<'_, D>,
774 offset: usize,
775 mut depth: fidl::encoding::Depth,
776 ) -> fidl::Result<()> {
777 decoder.debug_check_bounds::<Self>(offset);
778 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
779 None => return Err(fidl::Error::NotNullable),
780 Some(len) => len,
781 };
782 if len == 0 {
784 return Ok(());
785 };
786 depth.increment()?;
787 let envelope_size = 8;
788 let bytes_len = len * envelope_size;
789 let offset = decoder.out_of_line_offset(bytes_len)?;
790 let mut _next_ordinal_to_read = 0;
792 let mut next_offset = offset;
793 let end_offset = offset + bytes_len;
794 _next_ordinal_to_read += 1;
795 if next_offset >= end_offset {
796 return Ok(());
797 }
798
799 while _next_ordinal_to_read < 1 {
801 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
802 _next_ordinal_to_read += 1;
803 next_offset += envelope_size;
804 }
805
806 let next_out_of_line = decoder.next_out_of_line();
807 let handles_before = decoder.remaining_handles();
808 if let Some((inlined, num_bytes, num_handles)) =
809 fidl::encoding::decode_envelope_header(decoder, next_offset)?
810 {
811 let member_inline_size = <fidl_fuchsia_bluetooth_common::DeviceClass as fidl::encoding::TypeMarker>::inline_size(decoder.context);
812 if inlined != (member_inline_size <= 4) {
813 return Err(fidl::Error::InvalidInlineBitInEnvelope);
814 }
815 let inner_offset;
816 let mut inner_depth = depth.clone();
817 if inlined {
818 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
819 inner_offset = next_offset;
820 } else {
821 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
822 inner_depth.increment()?;
823 }
824 let val_ref = self.device_class.get_or_insert_with(|| {
825 fidl::new_empty!(fidl_fuchsia_bluetooth_common::DeviceClass, D)
826 });
827 fidl::decode!(
828 fidl_fuchsia_bluetooth_common::DeviceClass,
829 D,
830 val_ref,
831 decoder,
832 inner_offset,
833 inner_depth
834 )?;
835 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
836 {
837 return Err(fidl::Error::InvalidNumBytesInEnvelope);
838 }
839 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
840 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
841 }
842 }
843
844 next_offset += envelope_size;
845
846 while next_offset < end_offset {
848 _next_ordinal_to_read += 1;
849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
850 next_offset += envelope_size;
851 }
852
853 Ok(())
854 }
855 }
856
857 impl HostControllerSetDiscoverabilityRequest {
858 #[inline(always)]
859 fn max_ordinal_present(&self) -> u64 {
860 if let Some(_) = self.discoverable {
861 return 1;
862 }
863 0
864 }
865 }
866
867 impl fidl::encoding::ValueTypeMarker for HostControllerSetDiscoverabilityRequest {
868 type Borrowed<'a> = &'a Self;
869 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
870 value
871 }
872 }
873
874 unsafe impl fidl::encoding::TypeMarker for HostControllerSetDiscoverabilityRequest {
875 type Owned = Self;
876
877 #[inline(always)]
878 fn inline_align(_context: fidl::encoding::Context) -> usize {
879 8
880 }
881
882 #[inline(always)]
883 fn inline_size(_context: fidl::encoding::Context) -> usize {
884 16
885 }
886 }
887
888 unsafe impl<D: fidl::encoding::ResourceDialect>
889 fidl::encoding::Encode<HostControllerSetDiscoverabilityRequest, D>
890 for &HostControllerSetDiscoverabilityRequest
891 {
892 unsafe fn encode(
893 self,
894 encoder: &mut fidl::encoding::Encoder<'_, D>,
895 offset: usize,
896 mut depth: fidl::encoding::Depth,
897 ) -> fidl::Result<()> {
898 encoder.debug_check_bounds::<HostControllerSetDiscoverabilityRequest>(offset);
899 let max_ordinal: u64 = self.max_ordinal_present();
901 encoder.write_num(max_ordinal, offset);
902 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
903 if max_ordinal == 0 {
905 return Ok(());
906 }
907 depth.increment()?;
908 let envelope_size = 8;
909 let bytes_len = max_ordinal as usize * envelope_size;
910 #[allow(unused_variables)]
911 let offset = encoder.out_of_line_offset(bytes_len);
912 let mut _prev_end_offset: usize = 0;
913 if 1 > max_ordinal {
914 return Ok(());
915 }
916
917 let cur_offset: usize = (1 - 1) * envelope_size;
920
921 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
923
924 fidl::encoding::encode_in_envelope_optional::<bool, D>(
929 self.discoverable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
930 encoder,
931 offset + cur_offset,
932 depth,
933 )?;
934
935 _prev_end_offset = cur_offset + envelope_size;
936
937 Ok(())
938 }
939 }
940
941 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
942 for HostControllerSetDiscoverabilityRequest
943 {
944 #[inline(always)]
945 fn new_empty() -> Self {
946 Self::default()
947 }
948
949 unsafe fn decode(
950 &mut self,
951 decoder: &mut fidl::encoding::Decoder<'_, D>,
952 offset: usize,
953 mut depth: fidl::encoding::Depth,
954 ) -> fidl::Result<()> {
955 decoder.debug_check_bounds::<Self>(offset);
956 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
957 None => return Err(fidl::Error::NotNullable),
958 Some(len) => len,
959 };
960 if len == 0 {
962 return Ok(());
963 };
964 depth.increment()?;
965 let envelope_size = 8;
966 let bytes_len = len * envelope_size;
967 let offset = decoder.out_of_line_offset(bytes_len)?;
968 let mut _next_ordinal_to_read = 0;
970 let mut next_offset = offset;
971 let end_offset = offset + bytes_len;
972 _next_ordinal_to_read += 1;
973 if next_offset >= end_offset {
974 return Ok(());
975 }
976
977 while _next_ordinal_to_read < 1 {
979 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
980 _next_ordinal_to_read += 1;
981 next_offset += envelope_size;
982 }
983
984 let next_out_of_line = decoder.next_out_of_line();
985 let handles_before = decoder.remaining_handles();
986 if let Some((inlined, num_bytes, num_handles)) =
987 fidl::encoding::decode_envelope_header(decoder, next_offset)?
988 {
989 let member_inline_size =
990 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
991 if inlined != (member_inline_size <= 4) {
992 return Err(fidl::Error::InvalidInlineBitInEnvelope);
993 }
994 let inner_offset;
995 let mut inner_depth = depth.clone();
996 if inlined {
997 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
998 inner_offset = next_offset;
999 } else {
1000 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1001 inner_depth.increment()?;
1002 }
1003 let val_ref = self.discoverable.get_or_insert_with(|| fidl::new_empty!(bool, D));
1004 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1005 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1006 {
1007 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1008 }
1009 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1010 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1011 }
1012 }
1013
1014 next_offset += envelope_size;
1015
1016 while next_offset < end_offset {
1018 _next_ordinal_to_read += 1;
1019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1020 next_offset += envelope_size;
1021 }
1022
1023 Ok(())
1024 }
1025 }
1026
1027 impl HostControllerSetLocalNameRequest {
1028 #[inline(always)]
1029 fn max_ordinal_present(&self) -> u64 {
1030 if let Some(_) = self.name {
1031 return 1;
1032 }
1033 0
1034 }
1035 }
1036
1037 impl fidl::encoding::ValueTypeMarker for HostControllerSetLocalNameRequest {
1038 type Borrowed<'a> = &'a Self;
1039 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1040 value
1041 }
1042 }
1043
1044 unsafe impl fidl::encoding::TypeMarker for HostControllerSetLocalNameRequest {
1045 type Owned = Self;
1046
1047 #[inline(always)]
1048 fn inline_align(_context: fidl::encoding::Context) -> usize {
1049 8
1050 }
1051
1052 #[inline(always)]
1053 fn inline_size(_context: fidl::encoding::Context) -> usize {
1054 16
1055 }
1056 }
1057
1058 unsafe impl<D: fidl::encoding::ResourceDialect>
1059 fidl::encoding::Encode<HostControllerSetLocalNameRequest, D>
1060 for &HostControllerSetLocalNameRequest
1061 {
1062 unsafe fn encode(
1063 self,
1064 encoder: &mut fidl::encoding::Encoder<'_, D>,
1065 offset: usize,
1066 mut depth: fidl::encoding::Depth,
1067 ) -> fidl::Result<()> {
1068 encoder.debug_check_bounds::<HostControllerSetLocalNameRequest>(offset);
1069 let max_ordinal: u64 = self.max_ordinal_present();
1071 encoder.write_num(max_ordinal, offset);
1072 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1073 if max_ordinal == 0 {
1075 return Ok(());
1076 }
1077 depth.increment()?;
1078 let envelope_size = 8;
1079 let bytes_len = max_ordinal as usize * envelope_size;
1080 #[allow(unused_variables)]
1081 let offset = encoder.out_of_line_offset(bytes_len);
1082 let mut _prev_end_offset: usize = 0;
1083 if 1 > max_ordinal {
1084 return Ok(());
1085 }
1086
1087 let cur_offset: usize = (1 - 1) * envelope_size;
1090
1091 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1093
1094 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
1099 self.name.as_ref().map(
1100 <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
1101 ),
1102 encoder,
1103 offset + cur_offset,
1104 depth,
1105 )?;
1106
1107 _prev_end_offset = cur_offset + envelope_size;
1108
1109 Ok(())
1110 }
1111 }
1112
1113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1114 for HostControllerSetLocalNameRequest
1115 {
1116 #[inline(always)]
1117 fn new_empty() -> Self {
1118 Self::default()
1119 }
1120
1121 unsafe fn decode(
1122 &mut self,
1123 decoder: &mut fidl::encoding::Decoder<'_, D>,
1124 offset: usize,
1125 mut depth: fidl::encoding::Depth,
1126 ) -> fidl::Result<()> {
1127 decoder.debug_check_bounds::<Self>(offset);
1128 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1129 None => return Err(fidl::Error::NotNullable),
1130 Some(len) => len,
1131 };
1132 if len == 0 {
1134 return Ok(());
1135 };
1136 depth.increment()?;
1137 let envelope_size = 8;
1138 let bytes_len = len * envelope_size;
1139 let offset = decoder.out_of_line_offset(bytes_len)?;
1140 let mut _next_ordinal_to_read = 0;
1142 let mut next_offset = offset;
1143 let end_offset = offset + bytes_len;
1144 _next_ordinal_to_read += 1;
1145 if next_offset >= end_offset {
1146 return Ok(());
1147 }
1148
1149 while _next_ordinal_to_read < 1 {
1151 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1152 _next_ordinal_to_read += 1;
1153 next_offset += envelope_size;
1154 }
1155
1156 let next_out_of_line = decoder.next_out_of_line();
1157 let handles_before = decoder.remaining_handles();
1158 if let Some((inlined, num_bytes, num_handles)) =
1159 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1160 {
1161 let member_inline_size =
1162 <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
1163 decoder.context,
1164 );
1165 if inlined != (member_inline_size <= 4) {
1166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1167 }
1168 let inner_offset;
1169 let mut inner_depth = depth.clone();
1170 if inlined {
1171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1172 inner_offset = next_offset;
1173 } else {
1174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1175 inner_depth.increment()?;
1176 }
1177 let val_ref = self
1178 .name
1179 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
1180 fidl::decode!(
1181 fidl::encoding::BoundedString<248>,
1182 D,
1183 val_ref,
1184 decoder,
1185 inner_offset,
1186 inner_depth
1187 )?;
1188 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1189 {
1190 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1191 }
1192 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1193 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1194 }
1195 }
1196
1197 next_offset += envelope_size;
1198
1199 while next_offset < end_offset {
1201 _next_ordinal_to_read += 1;
1202 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1203 next_offset += envelope_size;
1204 }
1205
1206 Ok(())
1207 }
1208 }
1209
1210 impl HostControllerStartPairingDelegateRequest {
1211 #[inline(always)]
1212 fn max_ordinal_present(&self) -> u64 {
1213 if let Some(_) = self.output_capability {
1214 return 2;
1215 }
1216 if let Some(_) = self.input_capability {
1217 return 1;
1218 }
1219 0
1220 }
1221 }
1222
1223 impl fidl::encoding::ValueTypeMarker for HostControllerStartPairingDelegateRequest {
1224 type Borrowed<'a> = &'a Self;
1225 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1226 value
1227 }
1228 }
1229
1230 unsafe impl fidl::encoding::TypeMarker for HostControllerStartPairingDelegateRequest {
1231 type Owned = Self;
1232
1233 #[inline(always)]
1234 fn inline_align(_context: fidl::encoding::Context) -> usize {
1235 8
1236 }
1237
1238 #[inline(always)]
1239 fn inline_size(_context: fidl::encoding::Context) -> usize {
1240 16
1241 }
1242 }
1243
1244 unsafe impl<D: fidl::encoding::ResourceDialect>
1245 fidl::encoding::Encode<HostControllerStartPairingDelegateRequest, D>
1246 for &HostControllerStartPairingDelegateRequest
1247 {
1248 unsafe fn encode(
1249 self,
1250 encoder: &mut fidl::encoding::Encoder<'_, D>,
1251 offset: usize,
1252 mut depth: fidl::encoding::Depth,
1253 ) -> fidl::Result<()> {
1254 encoder.debug_check_bounds::<HostControllerStartPairingDelegateRequest>(offset);
1255 let max_ordinal: u64 = self.max_ordinal_present();
1257 encoder.write_num(max_ordinal, offset);
1258 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1259 if max_ordinal == 0 {
1261 return Ok(());
1262 }
1263 depth.increment()?;
1264 let envelope_size = 8;
1265 let bytes_len = max_ordinal as usize * envelope_size;
1266 #[allow(unused_variables)]
1267 let offset = encoder.out_of_line_offset(bytes_len);
1268 let mut _prev_end_offset: usize = 0;
1269 if 1 > max_ordinal {
1270 return Ok(());
1271 }
1272
1273 let cur_offset: usize = (1 - 1) * envelope_size;
1276
1277 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1279
1280 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::InputCapability, D>(
1285 self.input_capability.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::InputCapability as fidl::encoding::ValueTypeMarker>::borrow),
1286 encoder, offset + cur_offset, depth
1287 )?;
1288
1289 _prev_end_offset = cur_offset + envelope_size;
1290 if 2 > max_ordinal {
1291 return Ok(());
1292 }
1293
1294 let cur_offset: usize = (2 - 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::OutputCapability, D>(
1306 self.output_capability.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::OutputCapability as fidl::encoding::ValueTypeMarker>::borrow),
1307 encoder, offset + cur_offset, depth
1308 )?;
1309
1310 _prev_end_offset = cur_offset + envelope_size;
1311
1312 Ok(())
1313 }
1314 }
1315
1316 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1317 for HostControllerStartPairingDelegateRequest
1318 {
1319 #[inline(always)]
1320 fn new_empty() -> Self {
1321 Self::default()
1322 }
1323
1324 unsafe fn decode(
1325 &mut self,
1326 decoder: &mut fidl::encoding::Decoder<'_, D>,
1327 offset: usize,
1328 mut depth: fidl::encoding::Depth,
1329 ) -> fidl::Result<()> {
1330 decoder.debug_check_bounds::<Self>(offset);
1331 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1332 None => return Err(fidl::Error::NotNullable),
1333 Some(len) => len,
1334 };
1335 if len == 0 {
1337 return Ok(());
1338 };
1339 depth.increment()?;
1340 let envelope_size = 8;
1341 let bytes_len = len * envelope_size;
1342 let offset = decoder.out_of_line_offset(bytes_len)?;
1343 let mut _next_ordinal_to_read = 0;
1345 let mut next_offset = offset;
1346 let end_offset = offset + bytes_len;
1347 _next_ordinal_to_read += 1;
1348 if next_offset >= end_offset {
1349 return Ok(());
1350 }
1351
1352 while _next_ordinal_to_read < 1 {
1354 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1355 _next_ordinal_to_read += 1;
1356 next_offset += envelope_size;
1357 }
1358
1359 let next_out_of_line = decoder.next_out_of_line();
1360 let handles_before = decoder.remaining_handles();
1361 if let Some((inlined, num_bytes, num_handles)) =
1362 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1363 {
1364 let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::InputCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1365 if inlined != (member_inline_size <= 4) {
1366 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1367 }
1368 let inner_offset;
1369 let mut inner_depth = depth.clone();
1370 if inlined {
1371 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1372 inner_offset = next_offset;
1373 } else {
1374 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1375 inner_depth.increment()?;
1376 }
1377 let val_ref = self.input_capability.get_or_insert_with(|| {
1378 fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::InputCapability, D)
1379 });
1380 fidl::decode!(
1381 fidl_fuchsia_bluetooth_sys_common::InputCapability,
1382 D,
1383 val_ref,
1384 decoder,
1385 inner_offset,
1386 inner_depth
1387 )?;
1388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1389 {
1390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1391 }
1392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1394 }
1395 }
1396
1397 next_offset += envelope_size;
1398 _next_ordinal_to_read += 1;
1399 if next_offset >= end_offset {
1400 return Ok(());
1401 }
1402
1403 while _next_ordinal_to_read < 2 {
1405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1406 _next_ordinal_to_read += 1;
1407 next_offset += envelope_size;
1408 }
1409
1410 let next_out_of_line = decoder.next_out_of_line();
1411 let handles_before = decoder.remaining_handles();
1412 if let Some((inlined, num_bytes, num_handles)) =
1413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1414 {
1415 let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::OutputCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1416 if inlined != (member_inline_size <= 4) {
1417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1418 }
1419 let inner_offset;
1420 let mut inner_depth = depth.clone();
1421 if inlined {
1422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1423 inner_offset = next_offset;
1424 } else {
1425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1426 inner_depth.increment()?;
1427 }
1428 let val_ref = self.output_capability.get_or_insert_with(|| {
1429 fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::OutputCapability, D)
1430 });
1431 fidl::decode!(
1432 fidl_fuchsia_bluetooth_sys_common::OutputCapability,
1433 D,
1434 val_ref,
1435 decoder,
1436 inner_offset,
1437 inner_depth
1438 )?;
1439 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1440 {
1441 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1442 }
1443 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1444 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1445 }
1446 }
1447
1448 next_offset += envelope_size;
1449
1450 while next_offset < end_offset {
1452 _next_ordinal_to_read += 1;
1453 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1454 next_offset += envelope_size;
1455 }
1456
1457 Ok(())
1458 }
1459 }
1460
1461 impl HostControllerGetHostsResponse {
1462 #[inline(always)]
1463 fn max_ordinal_present(&self) -> u64 {
1464 if let Some(_) = self.hosts {
1465 return 1;
1466 }
1467 0
1468 }
1469 }
1470
1471 impl fidl::encoding::ValueTypeMarker for HostControllerGetHostsResponse {
1472 type Borrowed<'a> = &'a Self;
1473 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1474 value
1475 }
1476 }
1477
1478 unsafe impl fidl::encoding::TypeMarker for HostControllerGetHostsResponse {
1479 type Owned = Self;
1480
1481 #[inline(always)]
1482 fn inline_align(_context: fidl::encoding::Context) -> usize {
1483 8
1484 }
1485
1486 #[inline(always)]
1487 fn inline_size(_context: fidl::encoding::Context) -> usize {
1488 16
1489 }
1490 }
1491
1492 unsafe impl<D: fidl::encoding::ResourceDialect>
1493 fidl::encoding::Encode<HostControllerGetHostsResponse, D>
1494 for &HostControllerGetHostsResponse
1495 {
1496 unsafe fn encode(
1497 self,
1498 encoder: &mut fidl::encoding::Encoder<'_, D>,
1499 offset: usize,
1500 mut depth: fidl::encoding::Depth,
1501 ) -> fidl::Result<()> {
1502 encoder.debug_check_bounds::<HostControllerGetHostsResponse>(offset);
1503 let max_ordinal: u64 = self.max_ordinal_present();
1505 encoder.write_num(max_ordinal, offset);
1506 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1507 if max_ordinal == 0 {
1509 return Ok(());
1510 }
1511 depth.increment()?;
1512 let envelope_size = 8;
1513 let bytes_len = max_ordinal as usize * envelope_size;
1514 #[allow(unused_variables)]
1515 let offset = encoder.out_of_line_offset(bytes_len);
1516 let mut _prev_end_offset: usize = 0;
1517 if 1 > max_ordinal {
1518 return Ok(());
1519 }
1520
1521 let cur_offset: usize = (1 - 1) * envelope_size;
1524
1525 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1527
1528 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>, D>(
1533 self.hosts.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo> as fidl::encoding::ValueTypeMarker>::borrow),
1534 encoder, offset + cur_offset, depth
1535 )?;
1536
1537 _prev_end_offset = cur_offset + envelope_size;
1538
1539 Ok(())
1540 }
1541 }
1542
1543 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1544 for HostControllerGetHostsResponse
1545 {
1546 #[inline(always)]
1547 fn new_empty() -> Self {
1548 Self::default()
1549 }
1550
1551 unsafe fn decode(
1552 &mut self,
1553 decoder: &mut fidl::encoding::Decoder<'_, D>,
1554 offset: usize,
1555 mut depth: fidl::encoding::Depth,
1556 ) -> fidl::Result<()> {
1557 decoder.debug_check_bounds::<Self>(offset);
1558 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1559 None => return Err(fidl::Error::NotNullable),
1560 Some(len) => len,
1561 };
1562 if len == 0 {
1564 return Ok(());
1565 };
1566 depth.increment()?;
1567 let envelope_size = 8;
1568 let bytes_len = len * envelope_size;
1569 let offset = decoder.out_of_line_offset(bytes_len)?;
1570 let mut _next_ordinal_to_read = 0;
1572 let mut next_offset = offset;
1573 let end_offset = offset + bytes_len;
1574 _next_ordinal_to_read += 1;
1575 if next_offset >= end_offset {
1576 return Ok(());
1577 }
1578
1579 while _next_ordinal_to_read < 1 {
1581 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1582 _next_ordinal_to_read += 1;
1583 next_offset += envelope_size;
1584 }
1585
1586 let next_out_of_line = decoder.next_out_of_line();
1587 let handles_before = decoder.remaining_handles();
1588 if let Some((inlined, num_bytes, num_handles)) =
1589 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1590 {
1591 let member_inline_size = <fidl::encoding::UnboundedVector<
1592 fidl_fuchsia_bluetooth_sys_common::HostInfo,
1593 > as fidl::encoding::TypeMarker>::inline_size(
1594 decoder.context
1595 );
1596 if inlined != (member_inline_size <= 4) {
1597 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1598 }
1599 let inner_offset;
1600 let mut inner_depth = depth.clone();
1601 if inlined {
1602 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1603 inner_offset = next_offset;
1604 } else {
1605 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1606 inner_depth.increment()?;
1607 }
1608 let val_ref = self.hosts.get_or_insert_with(|| {
1609 fidl::new_empty!(
1610 fidl::encoding::UnboundedVector<
1611 fidl_fuchsia_bluetooth_sys_common::HostInfo,
1612 >,
1613 D
1614 )
1615 });
1616 fidl::decode!(
1617 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>,
1618 D,
1619 val_ref,
1620 decoder,
1621 inner_offset,
1622 inner_depth
1623 )?;
1624 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1625 {
1626 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1627 }
1628 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1629 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1630 }
1631 }
1632
1633 next_offset += envelope_size;
1634
1635 while next_offset < end_offset {
1637 _next_ordinal_to_read += 1;
1638 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1639 next_offset += envelope_size;
1640 }
1641
1642 Ok(())
1643 }
1644 }
1645
1646 impl HostSelector {
1647 #[inline(always)]
1648 fn max_ordinal_present(&self) -> u64 {
1649 if let Some(_) = self.id {
1650 return 1;
1651 }
1652 0
1653 }
1654 }
1655
1656 impl fidl::encoding::ValueTypeMarker for HostSelector {
1657 type Borrowed<'a> = &'a Self;
1658 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1659 value
1660 }
1661 }
1662
1663 unsafe impl fidl::encoding::TypeMarker for HostSelector {
1664 type Owned = Self;
1665
1666 #[inline(always)]
1667 fn inline_align(_context: fidl::encoding::Context) -> usize {
1668 8
1669 }
1670
1671 #[inline(always)]
1672 fn inline_size(_context: fidl::encoding::Context) -> usize {
1673 16
1674 }
1675 }
1676
1677 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HostSelector, D>
1678 for &HostSelector
1679 {
1680 unsafe fn encode(
1681 self,
1682 encoder: &mut fidl::encoding::Encoder<'_, D>,
1683 offset: usize,
1684 mut depth: fidl::encoding::Depth,
1685 ) -> fidl::Result<()> {
1686 encoder.debug_check_bounds::<HostSelector>(offset);
1687 let max_ordinal: u64 = self.max_ordinal_present();
1689 encoder.write_num(max_ordinal, offset);
1690 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1691 if max_ordinal == 0 {
1693 return Ok(());
1694 }
1695 depth.increment()?;
1696 let envelope_size = 8;
1697 let bytes_len = max_ordinal as usize * envelope_size;
1698 #[allow(unused_variables)]
1699 let offset = encoder.out_of_line_offset(bytes_len);
1700 let mut _prev_end_offset: usize = 0;
1701 if 1 > max_ordinal {
1702 return Ok(());
1703 }
1704
1705 let cur_offset: usize = (1 - 1) * envelope_size;
1708
1709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1711
1712 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::HostId, D>(
1717 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::ValueTypeMarker>::borrow),
1718 encoder, offset + cur_offset, depth
1719 )?;
1720
1721 _prev_end_offset = cur_offset + envelope_size;
1722
1723 Ok(())
1724 }
1725 }
1726
1727 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HostSelector {
1728 #[inline(always)]
1729 fn new_empty() -> Self {
1730 Self::default()
1731 }
1732
1733 unsafe fn decode(
1734 &mut self,
1735 decoder: &mut fidl::encoding::Decoder<'_, D>,
1736 offset: usize,
1737 mut depth: fidl::encoding::Depth,
1738 ) -> fidl::Result<()> {
1739 decoder.debug_check_bounds::<Self>(offset);
1740 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1741 None => return Err(fidl::Error::NotNullable),
1742 Some(len) => len,
1743 };
1744 if len == 0 {
1746 return Ok(());
1747 };
1748 depth.increment()?;
1749 let envelope_size = 8;
1750 let bytes_len = len * envelope_size;
1751 let offset = decoder.out_of_line_offset(bytes_len)?;
1752 let mut _next_ordinal_to_read = 0;
1754 let mut next_offset = offset;
1755 let end_offset = offset + bytes_len;
1756 _next_ordinal_to_read += 1;
1757 if next_offset >= end_offset {
1758 return Ok(());
1759 }
1760
1761 while _next_ordinal_to_read < 1 {
1763 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1764 _next_ordinal_to_read += 1;
1765 next_offset += envelope_size;
1766 }
1767
1768 let next_out_of_line = decoder.next_out_of_line();
1769 let handles_before = decoder.remaining_handles();
1770 if let Some((inlined, num_bytes, num_handles)) =
1771 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1772 {
1773 let member_inline_size = <fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1774 if inlined != (member_inline_size <= 4) {
1775 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1776 }
1777 let inner_offset;
1778 let mut inner_depth = depth.clone();
1779 if inlined {
1780 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1781 inner_offset = next_offset;
1782 } else {
1783 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1784 inner_depth.increment()?;
1785 }
1786 let val_ref = self.id.get_or_insert_with(|| {
1787 fidl::new_empty!(fidl_fuchsia_bluetooth_common::HostId, D)
1788 });
1789 fidl::decode!(
1790 fidl_fuchsia_bluetooth_common::HostId,
1791 D,
1792 val_ref,
1793 decoder,
1794 inner_offset,
1795 inner_depth
1796 )?;
1797 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1798 {
1799 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1800 }
1801 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1802 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1803 }
1804 }
1805
1806 next_offset += envelope_size;
1807
1808 while next_offset < end_offset {
1810 _next_ordinal_to_read += 1;
1811 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1812 next_offset += envelope_size;
1813 }
1814
1815 Ok(())
1816 }
1817 }
1818
1819 impl PeerControllerPairRequest {
1820 #[inline(always)]
1821 fn max_ordinal_present(&self) -> u64 {
1822 if let Some(_) = self.options {
1823 return 2;
1824 }
1825 if let Some(_) = self.selector {
1826 return 1;
1827 }
1828 0
1829 }
1830 }
1831
1832 impl fidl::encoding::ValueTypeMarker for PeerControllerPairRequest {
1833 type Borrowed<'a> = &'a Self;
1834 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1835 value
1836 }
1837 }
1838
1839 unsafe impl fidl::encoding::TypeMarker for PeerControllerPairRequest {
1840 type Owned = Self;
1841
1842 #[inline(always)]
1843 fn inline_align(_context: fidl::encoding::Context) -> usize {
1844 8
1845 }
1846
1847 #[inline(always)]
1848 fn inline_size(_context: fidl::encoding::Context) -> usize {
1849 16
1850 }
1851 }
1852
1853 unsafe impl<D: fidl::encoding::ResourceDialect>
1854 fidl::encoding::Encode<PeerControllerPairRequest, D> for &PeerControllerPairRequest
1855 {
1856 unsafe fn encode(
1857 self,
1858 encoder: &mut fidl::encoding::Encoder<'_, D>,
1859 offset: usize,
1860 mut depth: fidl::encoding::Depth,
1861 ) -> fidl::Result<()> {
1862 encoder.debug_check_bounds::<PeerControllerPairRequest>(offset);
1863 let max_ordinal: u64 = self.max_ordinal_present();
1865 encoder.write_num(max_ordinal, offset);
1866 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1867 if max_ordinal == 0 {
1869 return Ok(());
1870 }
1871 depth.increment()?;
1872 let envelope_size = 8;
1873 let bytes_len = max_ordinal as usize * envelope_size;
1874 #[allow(unused_variables)]
1875 let offset = encoder.out_of_line_offset(bytes_len);
1876 let mut _prev_end_offset: usize = 0;
1877 if 1 > max_ordinal {
1878 return Ok(());
1879 }
1880
1881 let cur_offset: usize = (1 - 1) * envelope_size;
1884
1885 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1887
1888 fidl::encoding::encode_in_envelope_optional::<PeerSelector, D>(
1893 self.selector
1894 .as_ref()
1895 .map(<PeerSelector as fidl::encoding::ValueTypeMarker>::borrow),
1896 encoder,
1897 offset + cur_offset,
1898 depth,
1899 )?;
1900
1901 _prev_end_offset = cur_offset + envelope_size;
1902 if 2 > max_ordinal {
1903 return Ok(());
1904 }
1905
1906 let cur_offset: usize = (2 - 1) * envelope_size;
1909
1910 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1912
1913 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::PairingOptions, D>(
1918 self.options.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::PairingOptions as fidl::encoding::ValueTypeMarker>::borrow),
1919 encoder, offset + cur_offset, depth
1920 )?;
1921
1922 _prev_end_offset = cur_offset + envelope_size;
1923
1924 Ok(())
1925 }
1926 }
1927
1928 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1929 for PeerControllerPairRequest
1930 {
1931 #[inline(always)]
1932 fn new_empty() -> Self {
1933 Self::default()
1934 }
1935
1936 unsafe fn decode(
1937 &mut self,
1938 decoder: &mut fidl::encoding::Decoder<'_, D>,
1939 offset: usize,
1940 mut depth: fidl::encoding::Depth,
1941 ) -> fidl::Result<()> {
1942 decoder.debug_check_bounds::<Self>(offset);
1943 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1944 None => return Err(fidl::Error::NotNullable),
1945 Some(len) => len,
1946 };
1947 if len == 0 {
1949 return Ok(());
1950 };
1951 depth.increment()?;
1952 let envelope_size = 8;
1953 let bytes_len = len * envelope_size;
1954 let offset = decoder.out_of_line_offset(bytes_len)?;
1955 let mut _next_ordinal_to_read = 0;
1957 let mut next_offset = offset;
1958 let end_offset = offset + bytes_len;
1959 _next_ordinal_to_read += 1;
1960 if next_offset >= end_offset {
1961 return Ok(());
1962 }
1963
1964 while _next_ordinal_to_read < 1 {
1966 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1967 _next_ordinal_to_read += 1;
1968 next_offset += envelope_size;
1969 }
1970
1971 let next_out_of_line = decoder.next_out_of_line();
1972 let handles_before = decoder.remaining_handles();
1973 if let Some((inlined, num_bytes, num_handles)) =
1974 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1975 {
1976 let member_inline_size =
1977 <PeerSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1978 if inlined != (member_inline_size <= 4) {
1979 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1980 }
1981 let inner_offset;
1982 let mut inner_depth = depth.clone();
1983 if inlined {
1984 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1985 inner_offset = next_offset;
1986 } else {
1987 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1988 inner_depth.increment()?;
1989 }
1990 let val_ref =
1991 self.selector.get_or_insert_with(|| fidl::new_empty!(PeerSelector, D));
1992 fidl::decode!(PeerSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
1993 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1994 {
1995 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1996 }
1997 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1998 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1999 }
2000 }
2001
2002 next_offset += envelope_size;
2003 _next_ordinal_to_read += 1;
2004 if next_offset >= end_offset {
2005 return Ok(());
2006 }
2007
2008 while _next_ordinal_to_read < 2 {
2010 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2011 _next_ordinal_to_read += 1;
2012 next_offset += envelope_size;
2013 }
2014
2015 let next_out_of_line = decoder.next_out_of_line();
2016 let handles_before = decoder.remaining_handles();
2017 if let Some((inlined, num_bytes, num_handles)) =
2018 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2019 {
2020 let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::PairingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2021 if inlined != (member_inline_size <= 4) {
2022 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2023 }
2024 let inner_offset;
2025 let mut inner_depth = depth.clone();
2026 if inlined {
2027 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2028 inner_offset = next_offset;
2029 } else {
2030 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2031 inner_depth.increment()?;
2032 }
2033 let val_ref = self.options.get_or_insert_with(|| {
2034 fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::PairingOptions, D)
2035 });
2036 fidl::decode!(
2037 fidl_fuchsia_bluetooth_sys_common::PairingOptions,
2038 D,
2039 val_ref,
2040 decoder,
2041 inner_offset,
2042 inner_depth
2043 )?;
2044 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2045 {
2046 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2047 }
2048 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2049 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2050 }
2051 }
2052
2053 next_offset += envelope_size;
2054
2055 while next_offset < end_offset {
2057 _next_ordinal_to_read += 1;
2058 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2059 next_offset += envelope_size;
2060 }
2061
2062 Ok(())
2063 }
2064 }
2065
2066 impl PeerControllerSetDiscoveryRequest {
2067 #[inline(always)]
2068 fn max_ordinal_present(&self) -> u64 {
2069 if let Some(_) = self.discovery {
2070 return 1;
2071 }
2072 0
2073 }
2074 }
2075
2076 impl fidl::encoding::ValueTypeMarker for PeerControllerSetDiscoveryRequest {
2077 type Borrowed<'a> = &'a Self;
2078 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2079 value
2080 }
2081 }
2082
2083 unsafe impl fidl::encoding::TypeMarker for PeerControllerSetDiscoveryRequest {
2084 type Owned = Self;
2085
2086 #[inline(always)]
2087 fn inline_align(_context: fidl::encoding::Context) -> usize {
2088 8
2089 }
2090
2091 #[inline(always)]
2092 fn inline_size(_context: fidl::encoding::Context) -> usize {
2093 16
2094 }
2095 }
2096
2097 unsafe impl<D: fidl::encoding::ResourceDialect>
2098 fidl::encoding::Encode<PeerControllerSetDiscoveryRequest, D>
2099 for &PeerControllerSetDiscoveryRequest
2100 {
2101 unsafe fn encode(
2102 self,
2103 encoder: &mut fidl::encoding::Encoder<'_, D>,
2104 offset: usize,
2105 mut depth: fidl::encoding::Depth,
2106 ) -> fidl::Result<()> {
2107 encoder.debug_check_bounds::<PeerControllerSetDiscoveryRequest>(offset);
2108 let max_ordinal: u64 = self.max_ordinal_present();
2110 encoder.write_num(max_ordinal, offset);
2111 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2112 if max_ordinal == 0 {
2114 return Ok(());
2115 }
2116 depth.increment()?;
2117 let envelope_size = 8;
2118 let bytes_len = max_ordinal as usize * envelope_size;
2119 #[allow(unused_variables)]
2120 let offset = encoder.out_of_line_offset(bytes_len);
2121 let mut _prev_end_offset: usize = 0;
2122 if 1 > max_ordinal {
2123 return Ok(());
2124 }
2125
2126 let cur_offset: usize = (1 - 1) * envelope_size;
2129
2130 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2132
2133 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2138 self.discovery.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2139 encoder,
2140 offset + cur_offset,
2141 depth,
2142 )?;
2143
2144 _prev_end_offset = cur_offset + envelope_size;
2145
2146 Ok(())
2147 }
2148 }
2149
2150 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2151 for PeerControllerSetDiscoveryRequest
2152 {
2153 #[inline(always)]
2154 fn new_empty() -> Self {
2155 Self::default()
2156 }
2157
2158 unsafe fn decode(
2159 &mut self,
2160 decoder: &mut fidl::encoding::Decoder<'_, D>,
2161 offset: usize,
2162 mut depth: fidl::encoding::Depth,
2163 ) -> fidl::Result<()> {
2164 decoder.debug_check_bounds::<Self>(offset);
2165 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2166 None => return Err(fidl::Error::NotNullable),
2167 Some(len) => len,
2168 };
2169 if len == 0 {
2171 return Ok(());
2172 };
2173 depth.increment()?;
2174 let envelope_size = 8;
2175 let bytes_len = len * envelope_size;
2176 let offset = decoder.out_of_line_offset(bytes_len)?;
2177 let mut _next_ordinal_to_read = 0;
2179 let mut next_offset = offset;
2180 let end_offset = offset + bytes_len;
2181 _next_ordinal_to_read += 1;
2182 if next_offset >= end_offset {
2183 return Ok(());
2184 }
2185
2186 while _next_ordinal_to_read < 1 {
2188 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2189 _next_ordinal_to_read += 1;
2190 next_offset += envelope_size;
2191 }
2192
2193 let next_out_of_line = decoder.next_out_of_line();
2194 let handles_before = decoder.remaining_handles();
2195 if let Some((inlined, num_bytes, num_handles)) =
2196 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2197 {
2198 let member_inline_size =
2199 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2200 if inlined != (member_inline_size <= 4) {
2201 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2202 }
2203 let inner_offset;
2204 let mut inner_depth = depth.clone();
2205 if inlined {
2206 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2207 inner_offset = next_offset;
2208 } else {
2209 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2210 inner_depth.increment()?;
2211 }
2212 let val_ref = self.discovery.get_or_insert_with(|| fidl::new_empty!(bool, D));
2213 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2214 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2215 {
2216 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2217 }
2218 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2219 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2220 }
2221 }
2222
2223 next_offset += envelope_size;
2224
2225 while next_offset < end_offset {
2227 _next_ordinal_to_read += 1;
2228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2229 next_offset += envelope_size;
2230 }
2231
2232 Ok(())
2233 }
2234 }
2235
2236 impl PeerControllerGetKnownPeersResponse {
2237 #[inline(always)]
2238 fn max_ordinal_present(&self) -> u64 {
2239 if let Some(_) = self.peers {
2240 return 1;
2241 }
2242 0
2243 }
2244 }
2245
2246 impl fidl::encoding::ValueTypeMarker for PeerControllerGetKnownPeersResponse {
2247 type Borrowed<'a> = &'a Self;
2248 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2249 value
2250 }
2251 }
2252
2253 unsafe impl fidl::encoding::TypeMarker for PeerControllerGetKnownPeersResponse {
2254 type Owned = Self;
2255
2256 #[inline(always)]
2257 fn inline_align(_context: fidl::encoding::Context) -> usize {
2258 8
2259 }
2260
2261 #[inline(always)]
2262 fn inline_size(_context: fidl::encoding::Context) -> usize {
2263 16
2264 }
2265 }
2266
2267 unsafe impl<D: fidl::encoding::ResourceDialect>
2268 fidl::encoding::Encode<PeerControllerGetKnownPeersResponse, D>
2269 for &PeerControllerGetKnownPeersResponse
2270 {
2271 unsafe fn encode(
2272 self,
2273 encoder: &mut fidl::encoding::Encoder<'_, D>,
2274 offset: usize,
2275 mut depth: fidl::encoding::Depth,
2276 ) -> fidl::Result<()> {
2277 encoder.debug_check_bounds::<PeerControllerGetKnownPeersResponse>(offset);
2278 let max_ordinal: u64 = self.max_ordinal_present();
2280 encoder.write_num(max_ordinal, offset);
2281 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2282 if max_ordinal == 0 {
2284 return Ok(());
2285 }
2286 depth.increment()?;
2287 let envelope_size = 8;
2288 let bytes_len = max_ordinal as usize * envelope_size;
2289 #[allow(unused_variables)]
2290 let offset = encoder.out_of_line_offset(bytes_len);
2291 let mut _prev_end_offset: usize = 0;
2292 if 1 > max_ordinal {
2293 return Ok(());
2294 }
2295
2296 let cur_offset: usize = (1 - 1) * envelope_size;
2299
2300 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2302
2303 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>, D>(
2308 self.peers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow),
2309 encoder, offset + cur_offset, depth
2310 )?;
2311
2312 _prev_end_offset = cur_offset + envelope_size;
2313
2314 Ok(())
2315 }
2316 }
2317
2318 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2319 for PeerControllerGetKnownPeersResponse
2320 {
2321 #[inline(always)]
2322 fn new_empty() -> Self {
2323 Self::default()
2324 }
2325
2326 unsafe fn decode(
2327 &mut self,
2328 decoder: &mut fidl::encoding::Decoder<'_, D>,
2329 offset: usize,
2330 mut depth: fidl::encoding::Depth,
2331 ) -> fidl::Result<()> {
2332 decoder.debug_check_bounds::<Self>(offset);
2333 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2334 None => return Err(fidl::Error::NotNullable),
2335 Some(len) => len,
2336 };
2337 if len == 0 {
2339 return Ok(());
2340 };
2341 depth.increment()?;
2342 let envelope_size = 8;
2343 let bytes_len = len * envelope_size;
2344 let offset = decoder.out_of_line_offset(bytes_len)?;
2345 let mut _next_ordinal_to_read = 0;
2347 let mut next_offset = offset;
2348 let end_offset = offset + bytes_len;
2349 _next_ordinal_to_read += 1;
2350 if next_offset >= end_offset {
2351 return Ok(());
2352 }
2353
2354 while _next_ordinal_to_read < 1 {
2356 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2357 _next_ordinal_to_read += 1;
2358 next_offset += envelope_size;
2359 }
2360
2361 let next_out_of_line = decoder.next_out_of_line();
2362 let handles_before = decoder.remaining_handles();
2363 if let Some((inlined, num_bytes, num_handles)) =
2364 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2365 {
2366 let member_inline_size = <fidl::encoding::UnboundedVector<
2367 fidl_fuchsia_bluetooth_sys_common::Peer,
2368 > as fidl::encoding::TypeMarker>::inline_size(
2369 decoder.context
2370 );
2371 if inlined != (member_inline_size <= 4) {
2372 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2373 }
2374 let inner_offset;
2375 let mut inner_depth = depth.clone();
2376 if inlined {
2377 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2378 inner_offset = next_offset;
2379 } else {
2380 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2381 inner_depth.increment()?;
2382 }
2383 let val_ref = self.peers.get_or_insert_with(|| {
2384 fidl::new_empty!(
2385 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
2386 D
2387 )
2388 });
2389 fidl::decode!(
2390 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
2391 D,
2392 val_ref,
2393 decoder,
2394 inner_offset,
2395 inner_depth
2396 )?;
2397 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2398 {
2399 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2400 }
2401 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2402 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2403 }
2404 }
2405
2406 next_offset += envelope_size;
2407
2408 while next_offset < end_offset {
2410 _next_ordinal_to_read += 1;
2411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2412 next_offset += envelope_size;
2413 }
2414
2415 Ok(())
2416 }
2417 }
2418
2419 impl PeerSelector {
2420 #[inline(always)]
2421 fn max_ordinal_present(&self) -> u64 {
2422 if let Some(_) = self.id {
2423 return 1;
2424 }
2425 0
2426 }
2427 }
2428
2429 impl fidl::encoding::ValueTypeMarker for PeerSelector {
2430 type Borrowed<'a> = &'a Self;
2431 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2432 value
2433 }
2434 }
2435
2436 unsafe impl fidl::encoding::TypeMarker for PeerSelector {
2437 type Owned = Self;
2438
2439 #[inline(always)]
2440 fn inline_align(_context: fidl::encoding::Context) -> usize {
2441 8
2442 }
2443
2444 #[inline(always)]
2445 fn inline_size(_context: fidl::encoding::Context) -> usize {
2446 16
2447 }
2448 }
2449
2450 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PeerSelector, D>
2451 for &PeerSelector
2452 {
2453 unsafe fn encode(
2454 self,
2455 encoder: &mut fidl::encoding::Encoder<'_, D>,
2456 offset: usize,
2457 mut depth: fidl::encoding::Depth,
2458 ) -> fidl::Result<()> {
2459 encoder.debug_check_bounds::<PeerSelector>(offset);
2460 let max_ordinal: u64 = self.max_ordinal_present();
2462 encoder.write_num(max_ordinal, offset);
2463 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2464 if max_ordinal == 0 {
2466 return Ok(());
2467 }
2468 depth.increment()?;
2469 let envelope_size = 8;
2470 let bytes_len = max_ordinal as usize * envelope_size;
2471 #[allow(unused_variables)]
2472 let offset = encoder.out_of_line_offset(bytes_len);
2473 let mut _prev_end_offset: usize = 0;
2474 if 1 > max_ordinal {
2475 return Ok(());
2476 }
2477
2478 let cur_offset: usize = (1 - 1) * envelope_size;
2481
2482 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2484
2485 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2490 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2491 encoder, offset + cur_offset, depth
2492 )?;
2493
2494 _prev_end_offset = cur_offset + envelope_size;
2495
2496 Ok(())
2497 }
2498 }
2499
2500 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeerSelector {
2501 #[inline(always)]
2502 fn new_empty() -> Self {
2503 Self::default()
2504 }
2505
2506 unsafe fn decode(
2507 &mut self,
2508 decoder: &mut fidl::encoding::Decoder<'_, D>,
2509 offset: usize,
2510 mut depth: fidl::encoding::Depth,
2511 ) -> fidl::Result<()> {
2512 decoder.debug_check_bounds::<Self>(offset);
2513 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2514 None => return Err(fidl::Error::NotNullable),
2515 Some(len) => len,
2516 };
2517 if len == 0 {
2519 return Ok(());
2520 };
2521 depth.increment()?;
2522 let envelope_size = 8;
2523 let bytes_len = len * envelope_size;
2524 let offset = decoder.out_of_line_offset(bytes_len)?;
2525 let mut _next_ordinal_to_read = 0;
2527 let mut next_offset = offset;
2528 let end_offset = offset + bytes_len;
2529 _next_ordinal_to_read += 1;
2530 if next_offset >= end_offset {
2531 return Ok(());
2532 }
2533
2534 while _next_ordinal_to_read < 1 {
2536 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2537 _next_ordinal_to_read += 1;
2538 next_offset += envelope_size;
2539 }
2540
2541 let next_out_of_line = decoder.next_out_of_line();
2542 let handles_before = decoder.remaining_handles();
2543 if let Some((inlined, num_bytes, num_handles)) =
2544 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2545 {
2546 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2547 if inlined != (member_inline_size <= 4) {
2548 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2549 }
2550 let inner_offset;
2551 let mut inner_depth = depth.clone();
2552 if inlined {
2553 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2554 inner_offset = next_offset;
2555 } else {
2556 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2557 inner_depth.increment()?;
2558 }
2559 let val_ref = self.id.get_or_insert_with(|| {
2560 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2561 });
2562 fidl::decode!(
2563 fidl_fuchsia_bluetooth_common::PeerId,
2564 D,
2565 val_ref,
2566 decoder,
2567 inner_offset,
2568 inner_depth
2569 )?;
2570 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2571 {
2572 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2573 }
2574 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2575 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2576 }
2577 }
2578
2579 next_offset += envelope_size;
2580
2581 while next_offset < end_offset {
2583 _next_ordinal_to_read += 1;
2584 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2585 next_offset += envelope_size;
2586 }
2587
2588 Ok(())
2589 }
2590 }
2591
2592 impl PeripheralControllerAdvertiseRequest {
2593 #[inline(always)]
2594 fn max_ordinal_present(&self) -> u64 {
2595 if let Some(_) = self.timeout {
2596 return 2;
2597 }
2598 if let Some(_) = self.parameters {
2599 return 1;
2600 }
2601 0
2602 }
2603 }
2604
2605 impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseRequest {
2606 type Borrowed<'a> = &'a Self;
2607 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2608 value
2609 }
2610 }
2611
2612 unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseRequest {
2613 type Owned = Self;
2614
2615 #[inline(always)]
2616 fn inline_align(_context: fidl::encoding::Context) -> usize {
2617 8
2618 }
2619
2620 #[inline(always)]
2621 fn inline_size(_context: fidl::encoding::Context) -> usize {
2622 16
2623 }
2624 }
2625
2626 unsafe impl<D: fidl::encoding::ResourceDialect>
2627 fidl::encoding::Encode<PeripheralControllerAdvertiseRequest, D>
2628 for &PeripheralControllerAdvertiseRequest
2629 {
2630 unsafe fn encode(
2631 self,
2632 encoder: &mut fidl::encoding::Encoder<'_, D>,
2633 offset: usize,
2634 mut depth: fidl::encoding::Depth,
2635 ) -> fidl::Result<()> {
2636 encoder.debug_check_bounds::<PeripheralControllerAdvertiseRequest>(offset);
2637 let max_ordinal: u64 = self.max_ordinal_present();
2639 encoder.write_num(max_ordinal, offset);
2640 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2641 if max_ordinal == 0 {
2643 return Ok(());
2644 }
2645 depth.increment()?;
2646 let envelope_size = 8;
2647 let bytes_len = max_ordinal as usize * envelope_size;
2648 #[allow(unused_variables)]
2649 let offset = encoder.out_of_line_offset(bytes_len);
2650 let mut _prev_end_offset: usize = 0;
2651 if 1 > max_ordinal {
2652 return Ok(());
2653 }
2654
2655 let cur_offset: usize = (1 - 1) * envelope_size;
2658
2659 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2661
2662 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D>(
2667 self.parameters.as_ref().map(<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::ValueTypeMarker>::borrow),
2668 encoder, offset + cur_offset, depth
2669 )?;
2670
2671 _prev_end_offset = cur_offset + envelope_size;
2672 if 2 > max_ordinal {
2673 return Ok(());
2674 }
2675
2676 let cur_offset: usize = (2 - 1) * envelope_size;
2679
2680 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2682
2683 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2688 self.timeout.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2689 encoder,
2690 offset + cur_offset,
2691 depth,
2692 )?;
2693
2694 _prev_end_offset = cur_offset + envelope_size;
2695
2696 Ok(())
2697 }
2698 }
2699
2700 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2701 for PeripheralControllerAdvertiseRequest
2702 {
2703 #[inline(always)]
2704 fn new_empty() -> Self {
2705 Self::default()
2706 }
2707
2708 unsafe fn decode(
2709 &mut self,
2710 decoder: &mut fidl::encoding::Decoder<'_, D>,
2711 offset: usize,
2712 mut depth: fidl::encoding::Depth,
2713 ) -> fidl::Result<()> {
2714 decoder.debug_check_bounds::<Self>(offset);
2715 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2716 None => return Err(fidl::Error::NotNullable),
2717 Some(len) => len,
2718 };
2719 if len == 0 {
2721 return Ok(());
2722 };
2723 depth.increment()?;
2724 let envelope_size = 8;
2725 let bytes_len = len * envelope_size;
2726 let offset = decoder.out_of_line_offset(bytes_len)?;
2727 let mut _next_ordinal_to_read = 0;
2729 let mut next_offset = offset;
2730 let end_offset = offset + bytes_len;
2731 _next_ordinal_to_read += 1;
2732 if next_offset >= end_offset {
2733 return Ok(());
2734 }
2735
2736 while _next_ordinal_to_read < 1 {
2738 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2739 _next_ordinal_to_read += 1;
2740 next_offset += envelope_size;
2741 }
2742
2743 let next_out_of_line = decoder.next_out_of_line();
2744 let handles_before = decoder.remaining_handles();
2745 if let Some((inlined, num_bytes, num_handles)) =
2746 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2747 {
2748 let member_inline_size = <fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2749 if inlined != (member_inline_size <= 4) {
2750 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2751 }
2752 let inner_offset;
2753 let mut inner_depth = depth.clone();
2754 if inlined {
2755 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2756 inner_offset = next_offset;
2757 } else {
2758 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2759 inner_depth.increment()?;
2760 }
2761 let val_ref = self.parameters.get_or_insert_with(|| {
2762 fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D)
2763 });
2764 fidl::decode!(
2765 fidl_fuchsia_bluetooth_le_common::AdvertisingParameters,
2766 D,
2767 val_ref,
2768 decoder,
2769 inner_offset,
2770 inner_depth
2771 )?;
2772 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2773 {
2774 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2775 }
2776 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2777 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2778 }
2779 }
2780
2781 next_offset += envelope_size;
2782 _next_ordinal_to_read += 1;
2783 if next_offset >= end_offset {
2784 return Ok(());
2785 }
2786
2787 while _next_ordinal_to_read < 2 {
2789 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2790 _next_ordinal_to_read += 1;
2791 next_offset += envelope_size;
2792 }
2793
2794 let next_out_of_line = decoder.next_out_of_line();
2795 let handles_before = decoder.remaining_handles();
2796 if let Some((inlined, num_bytes, num_handles)) =
2797 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2798 {
2799 let member_inline_size =
2800 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2801 if inlined != (member_inline_size <= 4) {
2802 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2803 }
2804 let inner_offset;
2805 let mut inner_depth = depth.clone();
2806 if inlined {
2807 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2808 inner_offset = next_offset;
2809 } else {
2810 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2811 inner_depth.increment()?;
2812 }
2813 let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(u64, D));
2814 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2816 {
2817 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2818 }
2819 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2820 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2821 }
2822 }
2823
2824 next_offset += envelope_size;
2825
2826 while next_offset < end_offset {
2828 _next_ordinal_to_read += 1;
2829 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2830 next_offset += envelope_size;
2831 }
2832
2833 Ok(())
2834 }
2835 }
2836
2837 impl PeripheralControllerAdvertiseResponse {
2838 #[inline(always)]
2839 fn max_ordinal_present(&self) -> u64 {
2840 if let Some(_) = self.peer_id {
2841 return 1;
2842 }
2843 0
2844 }
2845 }
2846
2847 impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseResponse {
2848 type Borrowed<'a> = &'a Self;
2849 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2850 value
2851 }
2852 }
2853
2854 unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseResponse {
2855 type Owned = Self;
2856
2857 #[inline(always)]
2858 fn inline_align(_context: fidl::encoding::Context) -> usize {
2859 8
2860 }
2861
2862 #[inline(always)]
2863 fn inline_size(_context: fidl::encoding::Context) -> usize {
2864 16
2865 }
2866 }
2867
2868 unsafe impl<D: fidl::encoding::ResourceDialect>
2869 fidl::encoding::Encode<PeripheralControllerAdvertiseResponse, D>
2870 for &PeripheralControllerAdvertiseResponse
2871 {
2872 unsafe fn encode(
2873 self,
2874 encoder: &mut fidl::encoding::Encoder<'_, D>,
2875 offset: usize,
2876 mut depth: fidl::encoding::Depth,
2877 ) -> fidl::Result<()> {
2878 encoder.debug_check_bounds::<PeripheralControllerAdvertiseResponse>(offset);
2879 let max_ordinal: u64 = self.max_ordinal_present();
2881 encoder.write_num(max_ordinal, offset);
2882 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2883 if max_ordinal == 0 {
2885 return Ok(());
2886 }
2887 depth.increment()?;
2888 let envelope_size = 8;
2889 let bytes_len = max_ordinal as usize * envelope_size;
2890 #[allow(unused_variables)]
2891 let offset = encoder.out_of_line_offset(bytes_len);
2892 let mut _prev_end_offset: usize = 0;
2893 if 1 > max_ordinal {
2894 return Ok(());
2895 }
2896
2897 let cur_offset: usize = (1 - 1) * envelope_size;
2900
2901 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2903
2904 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2909 self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2910 encoder, offset + cur_offset, depth
2911 )?;
2912
2913 _prev_end_offset = cur_offset + envelope_size;
2914
2915 Ok(())
2916 }
2917 }
2918
2919 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2920 for PeripheralControllerAdvertiseResponse
2921 {
2922 #[inline(always)]
2923 fn new_empty() -> Self {
2924 Self::default()
2925 }
2926
2927 unsafe fn decode(
2928 &mut self,
2929 decoder: &mut fidl::encoding::Decoder<'_, D>,
2930 offset: usize,
2931 mut depth: fidl::encoding::Depth,
2932 ) -> fidl::Result<()> {
2933 decoder.debug_check_bounds::<Self>(offset);
2934 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2935 None => return Err(fidl::Error::NotNullable),
2936 Some(len) => len,
2937 };
2938 if len == 0 {
2940 return Ok(());
2941 };
2942 depth.increment()?;
2943 let envelope_size = 8;
2944 let bytes_len = len * envelope_size;
2945 let offset = decoder.out_of_line_offset(bytes_len)?;
2946 let mut _next_ordinal_to_read = 0;
2948 let mut next_offset = offset;
2949 let end_offset = offset + bytes_len;
2950 _next_ordinal_to_read += 1;
2951 if next_offset >= end_offset {
2952 return Ok(());
2953 }
2954
2955 while _next_ordinal_to_read < 1 {
2957 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2958 _next_ordinal_to_read += 1;
2959 next_offset += envelope_size;
2960 }
2961
2962 let next_out_of_line = decoder.next_out_of_line();
2963 let handles_before = decoder.remaining_handles();
2964 if let Some((inlined, num_bytes, num_handles)) =
2965 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2966 {
2967 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2968 if inlined != (member_inline_size <= 4) {
2969 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2970 }
2971 let inner_offset;
2972 let mut inner_depth = depth.clone();
2973 if inlined {
2974 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2975 inner_offset = next_offset;
2976 } else {
2977 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2978 inner_depth.increment()?;
2979 }
2980 let val_ref = self.peer_id.get_or_insert_with(|| {
2981 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2982 });
2983 fidl::decode!(
2984 fidl_fuchsia_bluetooth_common::PeerId,
2985 D,
2986 val_ref,
2987 decoder,
2988 inner_offset,
2989 inner_depth
2990 )?;
2991 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2992 {
2993 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2994 }
2995 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2996 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2997 }
2998 }
2999
3000 next_offset += envelope_size;
3001
3002 while next_offset < end_offset {
3004 _next_ordinal_to_read += 1;
3005 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3006 next_offset += envelope_size;
3007 }
3008
3009 Ok(())
3010 }
3011 }
3012
3013 impl ScanResultListenerOnPeersDiscoveredRequest {
3014 #[inline(always)]
3015 fn max_ordinal_present(&self) -> u64 {
3016 if let Some(_) = self.peers {
3017 return 1;
3018 }
3019 0
3020 }
3021 }
3022
3023 impl fidl::encoding::ValueTypeMarker for ScanResultListenerOnPeersDiscoveredRequest {
3024 type Borrowed<'a> = &'a Self;
3025 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3026 value
3027 }
3028 }
3029
3030 unsafe impl fidl::encoding::TypeMarker for ScanResultListenerOnPeersDiscoveredRequest {
3031 type Owned = Self;
3032
3033 #[inline(always)]
3034 fn inline_align(_context: fidl::encoding::Context) -> usize {
3035 8
3036 }
3037
3038 #[inline(always)]
3039 fn inline_size(_context: fidl::encoding::Context) -> usize {
3040 16
3041 }
3042 }
3043
3044 unsafe impl<D: fidl::encoding::ResourceDialect>
3045 fidl::encoding::Encode<ScanResultListenerOnPeersDiscoveredRequest, D>
3046 for &ScanResultListenerOnPeersDiscoveredRequest
3047 {
3048 unsafe fn encode(
3049 self,
3050 encoder: &mut fidl::encoding::Encoder<'_, D>,
3051 offset: usize,
3052 mut depth: fidl::encoding::Depth,
3053 ) -> fidl::Result<()> {
3054 encoder.debug_check_bounds::<ScanResultListenerOnPeersDiscoveredRequest>(offset);
3055 let max_ordinal: u64 = self.max_ordinal_present();
3057 encoder.write_num(max_ordinal, offset);
3058 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3059 if max_ordinal == 0 {
3061 return Ok(());
3062 }
3063 depth.increment()?;
3064 let envelope_size = 8;
3065 let bytes_len = max_ordinal as usize * envelope_size;
3066 #[allow(unused_variables)]
3067 let offset = encoder.out_of_line_offset(bytes_len);
3068 let mut _prev_end_offset: usize = 0;
3069 if 1 > max_ordinal {
3070 return Ok(());
3071 }
3072
3073 let cur_offset: usize = (1 - 1) * envelope_size;
3076
3077 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3079
3080 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScannedPeer>, D>(
3085 self.peers.as_ref().map(<fidl::encoding::UnboundedVector<ScannedPeer> as fidl::encoding::ValueTypeMarker>::borrow),
3086 encoder, offset + cur_offset, depth
3087 )?;
3088
3089 _prev_end_offset = cur_offset + envelope_size;
3090
3091 Ok(())
3092 }
3093 }
3094
3095 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3096 for ScanResultListenerOnPeersDiscoveredRequest
3097 {
3098 #[inline(always)]
3099 fn new_empty() -> Self {
3100 Self::default()
3101 }
3102
3103 unsafe fn decode(
3104 &mut self,
3105 decoder: &mut fidl::encoding::Decoder<'_, D>,
3106 offset: usize,
3107 mut depth: fidl::encoding::Depth,
3108 ) -> fidl::Result<()> {
3109 decoder.debug_check_bounds::<Self>(offset);
3110 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3111 None => return Err(fidl::Error::NotNullable),
3112 Some(len) => len,
3113 };
3114 if len == 0 {
3116 return Ok(());
3117 };
3118 depth.increment()?;
3119 let envelope_size = 8;
3120 let bytes_len = len * envelope_size;
3121 let offset = decoder.out_of_line_offset(bytes_len)?;
3122 let mut _next_ordinal_to_read = 0;
3124 let mut next_offset = offset;
3125 let end_offset = offset + bytes_len;
3126 _next_ordinal_to_read += 1;
3127 if next_offset >= end_offset {
3128 return Ok(());
3129 }
3130
3131 while _next_ordinal_to_read < 1 {
3133 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3134 _next_ordinal_to_read += 1;
3135 next_offset += envelope_size;
3136 }
3137
3138 let next_out_of_line = decoder.next_out_of_line();
3139 let handles_before = decoder.remaining_handles();
3140 if let Some((inlined, num_bytes, num_handles)) =
3141 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3142 {
3143 let member_inline_size = <fidl::encoding::UnboundedVector<ScannedPeer> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3144 if inlined != (member_inline_size <= 4) {
3145 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3146 }
3147 let inner_offset;
3148 let mut inner_depth = depth.clone();
3149 if inlined {
3150 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3151 inner_offset = next_offset;
3152 } else {
3153 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3154 inner_depth.increment()?;
3155 }
3156 let val_ref = self.peers.get_or_insert_with(|| {
3157 fidl::new_empty!(fidl::encoding::UnboundedVector<ScannedPeer>, D)
3158 });
3159 fidl::decode!(
3160 fidl::encoding::UnboundedVector<ScannedPeer>,
3161 D,
3162 val_ref,
3163 decoder,
3164 inner_offset,
3165 inner_depth
3166 )?;
3167 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3168 {
3169 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3170 }
3171 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3172 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3173 }
3174 }
3175
3176 next_offset += envelope_size;
3177
3178 while next_offset < end_offset {
3180 _next_ordinal_to_read += 1;
3181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3182 next_offset += envelope_size;
3183 }
3184
3185 Ok(())
3186 }
3187 }
3188
3189 impl ScannedPeer {
3190 #[inline(always)]
3191 fn max_ordinal_present(&self) -> u64 {
3192 if let Some(_) = self.address {
3193 return 2;
3194 }
3195 if let Some(_) = self.peer {
3196 return 1;
3197 }
3198 0
3199 }
3200 }
3201
3202 impl fidl::encoding::ValueTypeMarker for ScannedPeer {
3203 type Borrowed<'a> = &'a Self;
3204 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3205 value
3206 }
3207 }
3208
3209 unsafe impl fidl::encoding::TypeMarker for ScannedPeer {
3210 type Owned = Self;
3211
3212 #[inline(always)]
3213 fn inline_align(_context: fidl::encoding::Context) -> usize {
3214 8
3215 }
3216
3217 #[inline(always)]
3218 fn inline_size(_context: fidl::encoding::Context) -> usize {
3219 16
3220 }
3221 }
3222
3223 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScannedPeer, D>
3224 for &ScannedPeer
3225 {
3226 unsafe fn encode(
3227 self,
3228 encoder: &mut fidl::encoding::Encoder<'_, D>,
3229 offset: usize,
3230 mut depth: fidl::encoding::Depth,
3231 ) -> fidl::Result<()> {
3232 encoder.debug_check_bounds::<ScannedPeer>(offset);
3233 let max_ordinal: u64 = self.max_ordinal_present();
3235 encoder.write_num(max_ordinal, offset);
3236 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3237 if max_ordinal == 0 {
3239 return Ok(());
3240 }
3241 depth.increment()?;
3242 let envelope_size = 8;
3243 let bytes_len = max_ordinal as usize * envelope_size;
3244 #[allow(unused_variables)]
3245 let offset = encoder.out_of_line_offset(bytes_len);
3246 let mut _prev_end_offset: usize = 0;
3247 if 1 > max_ordinal {
3248 return Ok(());
3249 }
3250
3251 let cur_offset: usize = (1 - 1) * envelope_size;
3254
3255 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3257
3258 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::Peer, D>(
3263 self.peer.as_ref().map(<fidl_fuchsia_bluetooth_le_common::Peer as fidl::encoding::ValueTypeMarker>::borrow),
3264 encoder, offset + cur_offset, depth
3265 )?;
3266
3267 _prev_end_offset = cur_offset + envelope_size;
3268 if 2 > max_ordinal {
3269 return Ok(());
3270 }
3271
3272 let cur_offset: usize = (2 - 1) * envelope_size;
3275
3276 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3278
3279 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::Address, D>(
3284 self.address.as_ref().map(<fidl_fuchsia_bluetooth_common::Address as fidl::encoding::ValueTypeMarker>::borrow),
3285 encoder, offset + cur_offset, depth
3286 )?;
3287
3288 _prev_end_offset = cur_offset + envelope_size;
3289
3290 Ok(())
3291 }
3292 }
3293
3294 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScannedPeer {
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_le_common::Peer 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.get_or_insert_with(|| {
3354 fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::Peer, D)
3355 });
3356 fidl::decode!(
3357 fidl_fuchsia_bluetooth_le_common::Peer,
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 _next_ordinal_to_read += 1;
3375 if next_offset >= end_offset {
3376 return Ok(());
3377 }
3378
3379 while _next_ordinal_to_read < 2 {
3381 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3382 _next_ordinal_to_read += 1;
3383 next_offset += envelope_size;
3384 }
3385
3386 let next_out_of_line = decoder.next_out_of_line();
3387 let handles_before = decoder.remaining_handles();
3388 if let Some((inlined, num_bytes, num_handles)) =
3389 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3390 {
3391 let member_inline_size = <fidl_fuchsia_bluetooth_common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3392 if inlined != (member_inline_size <= 4) {
3393 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3394 }
3395 let inner_offset;
3396 let mut inner_depth = depth.clone();
3397 if inlined {
3398 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3399 inner_offset = next_offset;
3400 } else {
3401 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3402 inner_depth.increment()?;
3403 }
3404 let val_ref = self.address.get_or_insert_with(|| {
3405 fidl::new_empty!(fidl_fuchsia_bluetooth_common::Address, D)
3406 });
3407 fidl::decode!(
3408 fidl_fuchsia_bluetooth_common::Address,
3409 D,
3410 val_ref,
3411 decoder,
3412 inner_offset,
3413 inner_depth
3414 )?;
3415 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3416 {
3417 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3418 }
3419 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3420 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3421 }
3422 }
3423
3424 next_offset += envelope_size;
3425
3426 while next_offset < end_offset {
3428 _next_ordinal_to_read += 1;
3429 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3430 next_offset += envelope_size;
3431 }
3432
3433 Ok(())
3434 }
3435 }
3436}