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 HostControllerSetDeviceClassRequest {
41 pub device_class: Option<fidl_fuchsia_bluetooth_common::DeviceClass>,
43 #[doc(hidden)]
44 pub __source_breaking: fidl::marker::SourceBreaking,
45}
46
47impl fidl::Persistable for HostControllerSetDeviceClassRequest {}
48
49#[derive(Clone, Debug, Default, PartialEq)]
50pub struct HostControllerSetDiscoverabilityRequest {
51 pub discoverable: Option<bool>,
53 #[doc(hidden)]
54 pub __source_breaking: fidl::marker::SourceBreaking,
55}
56
57impl fidl::Persistable for HostControllerSetDiscoverabilityRequest {}
58
59#[derive(Clone, Debug, Default, PartialEq)]
60pub struct HostControllerSetLocalNameRequest {
61 pub name: Option<String>,
63 #[doc(hidden)]
64 pub __source_breaking: fidl::marker::SourceBreaking,
65}
66
67impl fidl::Persistable for HostControllerSetLocalNameRequest {}
68
69#[derive(Clone, Debug, Default, PartialEq)]
70pub struct HostControllerStartPairingDelegateRequest {
71 pub input_capability: Option<fidl_fuchsia_bluetooth_sys_common::InputCapability>,
74 pub output_capability: Option<fidl_fuchsia_bluetooth_sys_common::OutputCapability>,
77 #[doc(hidden)]
78 pub __source_breaking: fidl::marker::SourceBreaking,
79}
80
81impl fidl::Persistable for HostControllerStartPairingDelegateRequest {}
82
83#[derive(Clone, Debug, Default, PartialEq)]
84pub struct HostControllerGetHostsResponse {
85 pub hosts: Option<Vec<fidl_fuchsia_bluetooth_sys_common::HostInfo>>,
86 #[doc(hidden)]
87 pub __source_breaking: fidl::marker::SourceBreaking,
88}
89
90impl fidl::Persistable for HostControllerGetHostsResponse {}
91
92#[derive(Clone, Debug, Default, PartialEq)]
94pub struct HostSelector {
95 pub id: Option<fidl_fuchsia_bluetooth_common::HostId>,
97 #[doc(hidden)]
98 pub __source_breaking: fidl::marker::SourceBreaking,
99}
100
101impl fidl::Persistable for HostSelector {}
102
103#[derive(Clone, Debug, Default, PartialEq)]
104pub struct PeerControllerPairRequest {
105 pub selector: Option<PeerSelector>,
107 pub options: Option<fidl_fuchsia_bluetooth_sys_common::PairingOptions>,
109 #[doc(hidden)]
110 pub __source_breaking: fidl::marker::SourceBreaking,
111}
112
113impl fidl::Persistable for PeerControllerPairRequest {}
114
115#[derive(Clone, Debug, Default, PartialEq)]
116pub struct PeerControllerSetDiscoveryRequest {
117 pub discovery: Option<bool>,
119 #[doc(hidden)]
120 pub __source_breaking: fidl::marker::SourceBreaking,
121}
122
123impl fidl::Persistable for PeerControllerSetDiscoveryRequest {}
124
125#[derive(Clone, Debug, Default, PartialEq)]
126pub struct PeerControllerGetKnownPeersResponse {
127 pub peers: Option<Vec<fidl_fuchsia_bluetooth_sys_common::Peer>>,
128 #[doc(hidden)]
129 pub __source_breaking: fidl::marker::SourceBreaking,
130}
131
132impl fidl::Persistable for PeerControllerGetKnownPeersResponse {}
133
134#[derive(Clone, Debug, Default, PartialEq)]
136pub struct PeerSelector {
137 pub id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
139 #[doc(hidden)]
140 pub __source_breaking: fidl::marker::SourceBreaking,
141}
142
143impl fidl::Persistable for PeerSelector {}
144
145#[derive(Clone, Debug, Default, PartialEq)]
146pub struct PeripheralControllerAdvertiseRequest {
147 pub parameters: Option<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters>,
149 pub timeout: Option<u64>,
151 #[doc(hidden)]
152 pub __source_breaking: fidl::marker::SourceBreaking,
153}
154
155impl fidl::Persistable for PeripheralControllerAdvertiseRequest {}
156
157#[derive(Clone, Debug, Default, PartialEq)]
158pub struct PeripheralControllerAdvertiseResponse {
159 pub peer_id: Option<fidl_fuchsia_bluetooth_common::PeerId>,
161 #[doc(hidden)]
162 pub __source_breaking: fidl::marker::SourceBreaking,
163}
164
165impl fidl::Persistable for PeripheralControllerAdvertiseResponse {}
166
167pub mod host_controller_ordinals {
168 pub const GET_HOSTS: u64 = 0x167d2522684d453d;
169 pub const SET_DISCOVERABILITY: u64 = 0x1e977b538b94b08b;
170 pub const SET_ACTIVE_HOST: u64 = 0x1d3f8ba8b30347de;
171 pub const SET_LOCAL_NAME: u64 = 0x357714c7aa252336;
172 pub const START_PAIRING_DELEGATE: u64 = 0x155c20cb1b9c1ed2;
173 pub const STOP_PAIRING_DELEGATE: u64 = 0x5caaee1192a8172c;
174 pub const SET_DEVICE_CLASS: u64 = 0x34dcc9ed479692dc;
175}
176
177pub mod peer_controller_ordinals {
178 pub const GET_KNOWN_PEERS: u64 = 0x482cf3745bab65f6;
179 pub const CONNECT_PEER: u64 = 0x13fbb990835acf66;
180 pub const DISCONNECT_PEER: u64 = 0x5f9992f066c664ad;
181 pub const PAIR: u64 = 0x1991671d4d7eff26;
182 pub const FORGET_PEER: u64 = 0x26011dbbd834f8c6;
183 pub const SET_DISCOVERY: u64 = 0x3269624c9e1d6ab3;
184}
185
186pub mod peripheral_controller_ordinals {
187 pub const ADVERTISE: u64 = 0x59079a81362a66f3;
188}
189
190mod internal {
191 use super::*;
192 unsafe impl fidl::encoding::TypeMarker for Error {
193 type Owned = Self;
194
195 #[inline(always)]
196 fn inline_align(_context: fidl::encoding::Context) -> usize {
197 std::mem::align_of::<u32>()
198 }
199
200 #[inline(always)]
201 fn inline_size(_context: fidl::encoding::Context) -> usize {
202 std::mem::size_of::<u32>()
203 }
204
205 #[inline(always)]
206 fn encode_is_copy() -> bool {
207 true
208 }
209
210 #[inline(always)]
211 fn decode_is_copy() -> bool {
212 false
213 }
214 }
215
216 impl fidl::encoding::ValueTypeMarker for Error {
217 type Borrowed<'a> = Self;
218 #[inline(always)]
219 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
220 *value
221 }
222 }
223
224 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
225 #[inline]
226 unsafe fn encode(
227 self,
228 encoder: &mut fidl::encoding::Encoder<'_, D>,
229 offset: usize,
230 _depth: fidl::encoding::Depth,
231 ) -> fidl::Result<()> {
232 encoder.debug_check_bounds::<Self>(offset);
233 encoder.write_num(self.into_primitive(), offset);
234 Ok(())
235 }
236 }
237
238 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
239 #[inline(always)]
240 fn new_empty() -> Self {
241 Self::Internal
242 }
243
244 #[inline]
245 unsafe fn decode(
246 &mut self,
247 decoder: &mut fidl::encoding::Decoder<'_, D>,
248 offset: usize,
249 _depth: fidl::encoding::Depth,
250 ) -> fidl::Result<()> {
251 decoder.debug_check_bounds::<Self>(offset);
252 let prim = decoder.read_num::<u32>(offset);
253
254 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
255 Ok(())
256 }
257 }
258
259 impl HostControllerSetDeviceClassRequest {
260 #[inline(always)]
261 fn max_ordinal_present(&self) -> u64 {
262 if let Some(_) = self.device_class {
263 return 1;
264 }
265 0
266 }
267 }
268
269 impl fidl::encoding::ValueTypeMarker for HostControllerSetDeviceClassRequest {
270 type Borrowed<'a> = &'a Self;
271 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
272 value
273 }
274 }
275
276 unsafe impl fidl::encoding::TypeMarker for HostControllerSetDeviceClassRequest {
277 type Owned = Self;
278
279 #[inline(always)]
280 fn inline_align(_context: fidl::encoding::Context) -> usize {
281 8
282 }
283
284 #[inline(always)]
285 fn inline_size(_context: fidl::encoding::Context) -> usize {
286 16
287 }
288 }
289
290 unsafe impl<D: fidl::encoding::ResourceDialect>
291 fidl::encoding::Encode<HostControllerSetDeviceClassRequest, D>
292 for &HostControllerSetDeviceClassRequest
293 {
294 unsafe fn encode(
295 self,
296 encoder: &mut fidl::encoding::Encoder<'_, D>,
297 offset: usize,
298 mut depth: fidl::encoding::Depth,
299 ) -> fidl::Result<()> {
300 encoder.debug_check_bounds::<HostControllerSetDeviceClassRequest>(offset);
301 let max_ordinal: u64 = self.max_ordinal_present();
303 encoder.write_num(max_ordinal, offset);
304 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
305 if max_ordinal == 0 {
307 return Ok(());
308 }
309 depth.increment()?;
310 let envelope_size = 8;
311 let bytes_len = max_ordinal as usize * envelope_size;
312 #[allow(unused_variables)]
313 let offset = encoder.out_of_line_offset(bytes_len);
314 let mut _prev_end_offset: usize = 0;
315 if 1 > max_ordinal {
316 return Ok(());
317 }
318
319 let cur_offset: usize = (1 - 1) * envelope_size;
322
323 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
325
326 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::DeviceClass, D>(
331 self.device_class.as_ref().map(<fidl_fuchsia_bluetooth_common::DeviceClass as fidl::encoding::ValueTypeMarker>::borrow),
332 encoder, offset + cur_offset, depth
333 )?;
334
335 _prev_end_offset = cur_offset + envelope_size;
336
337 Ok(())
338 }
339 }
340
341 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
342 for HostControllerSetDeviceClassRequest
343 {
344 #[inline(always)]
345 fn new_empty() -> Self {
346 Self::default()
347 }
348
349 unsafe fn decode(
350 &mut self,
351 decoder: &mut fidl::encoding::Decoder<'_, D>,
352 offset: usize,
353 mut depth: fidl::encoding::Depth,
354 ) -> fidl::Result<()> {
355 decoder.debug_check_bounds::<Self>(offset);
356 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
357 None => return Err(fidl::Error::NotNullable),
358 Some(len) => len,
359 };
360 if len == 0 {
362 return Ok(());
363 };
364 depth.increment()?;
365 let envelope_size = 8;
366 let bytes_len = len * envelope_size;
367 let offset = decoder.out_of_line_offset(bytes_len)?;
368 let mut _next_ordinal_to_read = 0;
370 let mut next_offset = offset;
371 let end_offset = offset + bytes_len;
372 _next_ordinal_to_read += 1;
373 if next_offset >= end_offset {
374 return Ok(());
375 }
376
377 while _next_ordinal_to_read < 1 {
379 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
380 _next_ordinal_to_read += 1;
381 next_offset += envelope_size;
382 }
383
384 let next_out_of_line = decoder.next_out_of_line();
385 let handles_before = decoder.remaining_handles();
386 if let Some((inlined, num_bytes, num_handles)) =
387 fidl::encoding::decode_envelope_header(decoder, next_offset)?
388 {
389 let member_inline_size = <fidl_fuchsia_bluetooth_common::DeviceClass as fidl::encoding::TypeMarker>::inline_size(decoder.context);
390 if inlined != (member_inline_size <= 4) {
391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
392 }
393 let inner_offset;
394 let mut inner_depth = depth.clone();
395 if inlined {
396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
397 inner_offset = next_offset;
398 } else {
399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
400 inner_depth.increment()?;
401 }
402 let val_ref = self.device_class.get_or_insert_with(|| {
403 fidl::new_empty!(fidl_fuchsia_bluetooth_common::DeviceClass, D)
404 });
405 fidl::decode!(
406 fidl_fuchsia_bluetooth_common::DeviceClass,
407 D,
408 val_ref,
409 decoder,
410 inner_offset,
411 inner_depth
412 )?;
413 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
414 {
415 return Err(fidl::Error::InvalidNumBytesInEnvelope);
416 }
417 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
418 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
419 }
420 }
421
422 next_offset += envelope_size;
423
424 while next_offset < end_offset {
426 _next_ordinal_to_read += 1;
427 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
428 next_offset += envelope_size;
429 }
430
431 Ok(())
432 }
433 }
434
435 impl HostControllerSetDiscoverabilityRequest {
436 #[inline(always)]
437 fn max_ordinal_present(&self) -> u64 {
438 if let Some(_) = self.discoverable {
439 return 1;
440 }
441 0
442 }
443 }
444
445 impl fidl::encoding::ValueTypeMarker for HostControllerSetDiscoverabilityRequest {
446 type Borrowed<'a> = &'a Self;
447 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
448 value
449 }
450 }
451
452 unsafe impl fidl::encoding::TypeMarker for HostControllerSetDiscoverabilityRequest {
453 type Owned = Self;
454
455 #[inline(always)]
456 fn inline_align(_context: fidl::encoding::Context) -> usize {
457 8
458 }
459
460 #[inline(always)]
461 fn inline_size(_context: fidl::encoding::Context) -> usize {
462 16
463 }
464 }
465
466 unsafe impl<D: fidl::encoding::ResourceDialect>
467 fidl::encoding::Encode<HostControllerSetDiscoverabilityRequest, D>
468 for &HostControllerSetDiscoverabilityRequest
469 {
470 unsafe fn encode(
471 self,
472 encoder: &mut fidl::encoding::Encoder<'_, D>,
473 offset: usize,
474 mut depth: fidl::encoding::Depth,
475 ) -> fidl::Result<()> {
476 encoder.debug_check_bounds::<HostControllerSetDiscoverabilityRequest>(offset);
477 let max_ordinal: u64 = self.max_ordinal_present();
479 encoder.write_num(max_ordinal, offset);
480 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
481 if max_ordinal == 0 {
483 return Ok(());
484 }
485 depth.increment()?;
486 let envelope_size = 8;
487 let bytes_len = max_ordinal as usize * envelope_size;
488 #[allow(unused_variables)]
489 let offset = encoder.out_of_line_offset(bytes_len);
490 let mut _prev_end_offset: usize = 0;
491 if 1 > max_ordinal {
492 return Ok(());
493 }
494
495 let cur_offset: usize = (1 - 1) * envelope_size;
498
499 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
501
502 fidl::encoding::encode_in_envelope_optional::<bool, D>(
507 self.discoverable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
508 encoder,
509 offset + cur_offset,
510 depth,
511 )?;
512
513 _prev_end_offset = cur_offset + envelope_size;
514
515 Ok(())
516 }
517 }
518
519 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
520 for HostControllerSetDiscoverabilityRequest
521 {
522 #[inline(always)]
523 fn new_empty() -> Self {
524 Self::default()
525 }
526
527 unsafe fn decode(
528 &mut self,
529 decoder: &mut fidl::encoding::Decoder<'_, D>,
530 offset: usize,
531 mut depth: fidl::encoding::Depth,
532 ) -> fidl::Result<()> {
533 decoder.debug_check_bounds::<Self>(offset);
534 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
535 None => return Err(fidl::Error::NotNullable),
536 Some(len) => len,
537 };
538 if len == 0 {
540 return Ok(());
541 };
542 depth.increment()?;
543 let envelope_size = 8;
544 let bytes_len = len * envelope_size;
545 let offset = decoder.out_of_line_offset(bytes_len)?;
546 let mut _next_ordinal_to_read = 0;
548 let mut next_offset = offset;
549 let end_offset = offset + bytes_len;
550 _next_ordinal_to_read += 1;
551 if next_offset >= end_offset {
552 return Ok(());
553 }
554
555 while _next_ordinal_to_read < 1 {
557 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
558 _next_ordinal_to_read += 1;
559 next_offset += envelope_size;
560 }
561
562 let next_out_of_line = decoder.next_out_of_line();
563 let handles_before = decoder.remaining_handles();
564 if let Some((inlined, num_bytes, num_handles)) =
565 fidl::encoding::decode_envelope_header(decoder, next_offset)?
566 {
567 let member_inline_size =
568 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
569 if inlined != (member_inline_size <= 4) {
570 return Err(fidl::Error::InvalidInlineBitInEnvelope);
571 }
572 let inner_offset;
573 let mut inner_depth = depth.clone();
574 if inlined {
575 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
576 inner_offset = next_offset;
577 } else {
578 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
579 inner_depth.increment()?;
580 }
581 let val_ref = self.discoverable.get_or_insert_with(|| fidl::new_empty!(bool, D));
582 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
583 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
584 {
585 return Err(fidl::Error::InvalidNumBytesInEnvelope);
586 }
587 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
588 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
589 }
590 }
591
592 next_offset += envelope_size;
593
594 while next_offset < end_offset {
596 _next_ordinal_to_read += 1;
597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
598 next_offset += envelope_size;
599 }
600
601 Ok(())
602 }
603 }
604
605 impl HostControllerSetLocalNameRequest {
606 #[inline(always)]
607 fn max_ordinal_present(&self) -> u64 {
608 if let Some(_) = self.name {
609 return 1;
610 }
611 0
612 }
613 }
614
615 impl fidl::encoding::ValueTypeMarker for HostControllerSetLocalNameRequest {
616 type Borrowed<'a> = &'a Self;
617 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
618 value
619 }
620 }
621
622 unsafe impl fidl::encoding::TypeMarker for HostControllerSetLocalNameRequest {
623 type Owned = Self;
624
625 #[inline(always)]
626 fn inline_align(_context: fidl::encoding::Context) -> usize {
627 8
628 }
629
630 #[inline(always)]
631 fn inline_size(_context: fidl::encoding::Context) -> usize {
632 16
633 }
634 }
635
636 unsafe impl<D: fidl::encoding::ResourceDialect>
637 fidl::encoding::Encode<HostControllerSetLocalNameRequest, D>
638 for &HostControllerSetLocalNameRequest
639 {
640 unsafe fn encode(
641 self,
642 encoder: &mut fidl::encoding::Encoder<'_, D>,
643 offset: usize,
644 mut depth: fidl::encoding::Depth,
645 ) -> fidl::Result<()> {
646 encoder.debug_check_bounds::<HostControllerSetLocalNameRequest>(offset);
647 let max_ordinal: u64 = self.max_ordinal_present();
649 encoder.write_num(max_ordinal, offset);
650 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
651 if max_ordinal == 0 {
653 return Ok(());
654 }
655 depth.increment()?;
656 let envelope_size = 8;
657 let bytes_len = max_ordinal as usize * envelope_size;
658 #[allow(unused_variables)]
659 let offset = encoder.out_of_line_offset(bytes_len);
660 let mut _prev_end_offset: usize = 0;
661 if 1 > max_ordinal {
662 return Ok(());
663 }
664
665 let cur_offset: usize = (1 - 1) * envelope_size;
668
669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
671
672 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
677 self.name.as_ref().map(
678 <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
679 ),
680 encoder,
681 offset + cur_offset,
682 depth,
683 )?;
684
685 _prev_end_offset = cur_offset + envelope_size;
686
687 Ok(())
688 }
689 }
690
691 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
692 for HostControllerSetLocalNameRequest
693 {
694 #[inline(always)]
695 fn new_empty() -> Self {
696 Self::default()
697 }
698
699 unsafe fn decode(
700 &mut self,
701 decoder: &mut fidl::encoding::Decoder<'_, D>,
702 offset: usize,
703 mut depth: fidl::encoding::Depth,
704 ) -> fidl::Result<()> {
705 decoder.debug_check_bounds::<Self>(offset);
706 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
707 None => return Err(fidl::Error::NotNullable),
708 Some(len) => len,
709 };
710 if len == 0 {
712 return Ok(());
713 };
714 depth.increment()?;
715 let envelope_size = 8;
716 let bytes_len = len * envelope_size;
717 let offset = decoder.out_of_line_offset(bytes_len)?;
718 let mut _next_ordinal_to_read = 0;
720 let mut next_offset = offset;
721 let end_offset = offset + bytes_len;
722 _next_ordinal_to_read += 1;
723 if next_offset >= end_offset {
724 return Ok(());
725 }
726
727 while _next_ordinal_to_read < 1 {
729 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
730 _next_ordinal_to_read += 1;
731 next_offset += envelope_size;
732 }
733
734 let next_out_of_line = decoder.next_out_of_line();
735 let handles_before = decoder.remaining_handles();
736 if let Some((inlined, num_bytes, num_handles)) =
737 fidl::encoding::decode_envelope_header(decoder, next_offset)?
738 {
739 let member_inline_size =
740 <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
741 decoder.context,
742 );
743 if inlined != (member_inline_size <= 4) {
744 return Err(fidl::Error::InvalidInlineBitInEnvelope);
745 }
746 let inner_offset;
747 let mut inner_depth = depth.clone();
748 if inlined {
749 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
750 inner_offset = next_offset;
751 } else {
752 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
753 inner_depth.increment()?;
754 }
755 let val_ref = self
756 .name
757 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
758 fidl::decode!(
759 fidl::encoding::BoundedString<248>,
760 D,
761 val_ref,
762 decoder,
763 inner_offset,
764 inner_depth
765 )?;
766 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
767 {
768 return Err(fidl::Error::InvalidNumBytesInEnvelope);
769 }
770 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
771 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
772 }
773 }
774
775 next_offset += envelope_size;
776
777 while next_offset < end_offset {
779 _next_ordinal_to_read += 1;
780 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
781 next_offset += envelope_size;
782 }
783
784 Ok(())
785 }
786 }
787
788 impl HostControllerStartPairingDelegateRequest {
789 #[inline(always)]
790 fn max_ordinal_present(&self) -> u64 {
791 if let Some(_) = self.output_capability {
792 return 2;
793 }
794 if let Some(_) = self.input_capability {
795 return 1;
796 }
797 0
798 }
799 }
800
801 impl fidl::encoding::ValueTypeMarker for HostControllerStartPairingDelegateRequest {
802 type Borrowed<'a> = &'a Self;
803 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
804 value
805 }
806 }
807
808 unsafe impl fidl::encoding::TypeMarker for HostControllerStartPairingDelegateRequest {
809 type Owned = Self;
810
811 #[inline(always)]
812 fn inline_align(_context: fidl::encoding::Context) -> usize {
813 8
814 }
815
816 #[inline(always)]
817 fn inline_size(_context: fidl::encoding::Context) -> usize {
818 16
819 }
820 }
821
822 unsafe impl<D: fidl::encoding::ResourceDialect>
823 fidl::encoding::Encode<HostControllerStartPairingDelegateRequest, D>
824 for &HostControllerStartPairingDelegateRequest
825 {
826 unsafe fn encode(
827 self,
828 encoder: &mut fidl::encoding::Encoder<'_, D>,
829 offset: usize,
830 mut depth: fidl::encoding::Depth,
831 ) -> fidl::Result<()> {
832 encoder.debug_check_bounds::<HostControllerStartPairingDelegateRequest>(offset);
833 let max_ordinal: u64 = self.max_ordinal_present();
835 encoder.write_num(max_ordinal, offset);
836 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
837 if max_ordinal == 0 {
839 return Ok(());
840 }
841 depth.increment()?;
842 let envelope_size = 8;
843 let bytes_len = max_ordinal as usize * envelope_size;
844 #[allow(unused_variables)]
845 let offset = encoder.out_of_line_offset(bytes_len);
846 let mut _prev_end_offset: usize = 0;
847 if 1 > max_ordinal {
848 return Ok(());
849 }
850
851 let cur_offset: usize = (1 - 1) * envelope_size;
854
855 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
857
858 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::InputCapability, D>(
863 self.input_capability.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::InputCapability as fidl::encoding::ValueTypeMarker>::borrow),
864 encoder, offset + cur_offset, depth
865 )?;
866
867 _prev_end_offset = cur_offset + envelope_size;
868 if 2 > max_ordinal {
869 return Ok(());
870 }
871
872 let cur_offset: usize = (2 - 1) * envelope_size;
875
876 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
878
879 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::OutputCapability, D>(
884 self.output_capability.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::OutputCapability as fidl::encoding::ValueTypeMarker>::borrow),
885 encoder, offset + cur_offset, depth
886 )?;
887
888 _prev_end_offset = cur_offset + envelope_size;
889
890 Ok(())
891 }
892 }
893
894 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
895 for HostControllerStartPairingDelegateRequest
896 {
897 #[inline(always)]
898 fn new_empty() -> Self {
899 Self::default()
900 }
901
902 unsafe fn decode(
903 &mut self,
904 decoder: &mut fidl::encoding::Decoder<'_, D>,
905 offset: usize,
906 mut depth: fidl::encoding::Depth,
907 ) -> fidl::Result<()> {
908 decoder.debug_check_bounds::<Self>(offset);
909 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
910 None => return Err(fidl::Error::NotNullable),
911 Some(len) => len,
912 };
913 if len == 0 {
915 return Ok(());
916 };
917 depth.increment()?;
918 let envelope_size = 8;
919 let bytes_len = len * envelope_size;
920 let offset = decoder.out_of_line_offset(bytes_len)?;
921 let mut _next_ordinal_to_read = 0;
923 let mut next_offset = offset;
924 let end_offset = offset + bytes_len;
925 _next_ordinal_to_read += 1;
926 if next_offset >= end_offset {
927 return Ok(());
928 }
929
930 while _next_ordinal_to_read < 1 {
932 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
933 _next_ordinal_to_read += 1;
934 next_offset += envelope_size;
935 }
936
937 let next_out_of_line = decoder.next_out_of_line();
938 let handles_before = decoder.remaining_handles();
939 if let Some((inlined, num_bytes, num_handles)) =
940 fidl::encoding::decode_envelope_header(decoder, next_offset)?
941 {
942 let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::InputCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
943 if inlined != (member_inline_size <= 4) {
944 return Err(fidl::Error::InvalidInlineBitInEnvelope);
945 }
946 let inner_offset;
947 let mut inner_depth = depth.clone();
948 if inlined {
949 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
950 inner_offset = next_offset;
951 } else {
952 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
953 inner_depth.increment()?;
954 }
955 let val_ref = self.input_capability.get_or_insert_with(|| {
956 fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::InputCapability, D)
957 });
958 fidl::decode!(
959 fidl_fuchsia_bluetooth_sys_common::InputCapability,
960 D,
961 val_ref,
962 decoder,
963 inner_offset,
964 inner_depth
965 )?;
966 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
967 {
968 return Err(fidl::Error::InvalidNumBytesInEnvelope);
969 }
970 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
971 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
972 }
973 }
974
975 next_offset += envelope_size;
976 _next_ordinal_to_read += 1;
977 if next_offset >= end_offset {
978 return Ok(());
979 }
980
981 while _next_ordinal_to_read < 2 {
983 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
984 _next_ordinal_to_read += 1;
985 next_offset += envelope_size;
986 }
987
988 let next_out_of_line = decoder.next_out_of_line();
989 let handles_before = decoder.remaining_handles();
990 if let Some((inlined, num_bytes, num_handles)) =
991 fidl::encoding::decode_envelope_header(decoder, next_offset)?
992 {
993 let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::OutputCapability as fidl::encoding::TypeMarker>::inline_size(decoder.context);
994 if inlined != (member_inline_size <= 4) {
995 return Err(fidl::Error::InvalidInlineBitInEnvelope);
996 }
997 let inner_offset;
998 let mut inner_depth = depth.clone();
999 if inlined {
1000 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1001 inner_offset = next_offset;
1002 } else {
1003 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1004 inner_depth.increment()?;
1005 }
1006 let val_ref = self.output_capability.get_or_insert_with(|| {
1007 fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::OutputCapability, D)
1008 });
1009 fidl::decode!(
1010 fidl_fuchsia_bluetooth_sys_common::OutputCapability,
1011 D,
1012 val_ref,
1013 decoder,
1014 inner_offset,
1015 inner_depth
1016 )?;
1017 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1018 {
1019 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1020 }
1021 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1022 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1023 }
1024 }
1025
1026 next_offset += envelope_size;
1027
1028 while next_offset < end_offset {
1030 _next_ordinal_to_read += 1;
1031 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1032 next_offset += envelope_size;
1033 }
1034
1035 Ok(())
1036 }
1037 }
1038
1039 impl HostControllerGetHostsResponse {
1040 #[inline(always)]
1041 fn max_ordinal_present(&self) -> u64 {
1042 if let Some(_) = self.hosts {
1043 return 1;
1044 }
1045 0
1046 }
1047 }
1048
1049 impl fidl::encoding::ValueTypeMarker for HostControllerGetHostsResponse {
1050 type Borrowed<'a> = &'a Self;
1051 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1052 value
1053 }
1054 }
1055
1056 unsafe impl fidl::encoding::TypeMarker for HostControllerGetHostsResponse {
1057 type Owned = Self;
1058
1059 #[inline(always)]
1060 fn inline_align(_context: fidl::encoding::Context) -> usize {
1061 8
1062 }
1063
1064 #[inline(always)]
1065 fn inline_size(_context: fidl::encoding::Context) -> usize {
1066 16
1067 }
1068 }
1069
1070 unsafe impl<D: fidl::encoding::ResourceDialect>
1071 fidl::encoding::Encode<HostControllerGetHostsResponse, D>
1072 for &HostControllerGetHostsResponse
1073 {
1074 unsafe fn encode(
1075 self,
1076 encoder: &mut fidl::encoding::Encoder<'_, D>,
1077 offset: usize,
1078 mut depth: fidl::encoding::Depth,
1079 ) -> fidl::Result<()> {
1080 encoder.debug_check_bounds::<HostControllerGetHostsResponse>(offset);
1081 let max_ordinal: u64 = self.max_ordinal_present();
1083 encoder.write_num(max_ordinal, offset);
1084 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1085 if max_ordinal == 0 {
1087 return Ok(());
1088 }
1089 depth.increment()?;
1090 let envelope_size = 8;
1091 let bytes_len = max_ordinal as usize * envelope_size;
1092 #[allow(unused_variables)]
1093 let offset = encoder.out_of_line_offset(bytes_len);
1094 let mut _prev_end_offset: usize = 0;
1095 if 1 > max_ordinal {
1096 return Ok(());
1097 }
1098
1099 let cur_offset: usize = (1 - 1) * envelope_size;
1102
1103 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1105
1106 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>, D>(
1111 self.hosts.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo> as fidl::encoding::ValueTypeMarker>::borrow),
1112 encoder, offset + cur_offset, depth
1113 )?;
1114
1115 _prev_end_offset = cur_offset + envelope_size;
1116
1117 Ok(())
1118 }
1119 }
1120
1121 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1122 for HostControllerGetHostsResponse
1123 {
1124 #[inline(always)]
1125 fn new_empty() -> Self {
1126 Self::default()
1127 }
1128
1129 unsafe fn decode(
1130 &mut self,
1131 decoder: &mut fidl::encoding::Decoder<'_, D>,
1132 offset: usize,
1133 mut depth: fidl::encoding::Depth,
1134 ) -> fidl::Result<()> {
1135 decoder.debug_check_bounds::<Self>(offset);
1136 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1137 None => return Err(fidl::Error::NotNullable),
1138 Some(len) => len,
1139 };
1140 if len == 0 {
1142 return Ok(());
1143 };
1144 depth.increment()?;
1145 let envelope_size = 8;
1146 let bytes_len = len * envelope_size;
1147 let offset = decoder.out_of_line_offset(bytes_len)?;
1148 let mut _next_ordinal_to_read = 0;
1150 let mut next_offset = offset;
1151 let end_offset = offset + bytes_len;
1152 _next_ordinal_to_read += 1;
1153 if next_offset >= end_offset {
1154 return Ok(());
1155 }
1156
1157 while _next_ordinal_to_read < 1 {
1159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1160 _next_ordinal_to_read += 1;
1161 next_offset += envelope_size;
1162 }
1163
1164 let next_out_of_line = decoder.next_out_of_line();
1165 let handles_before = decoder.remaining_handles();
1166 if let Some((inlined, num_bytes, num_handles)) =
1167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1168 {
1169 let member_inline_size = <fidl::encoding::UnboundedVector<
1170 fidl_fuchsia_bluetooth_sys_common::HostInfo,
1171 > as fidl::encoding::TypeMarker>::inline_size(
1172 decoder.context
1173 );
1174 if inlined != (member_inline_size <= 4) {
1175 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1176 }
1177 let inner_offset;
1178 let mut inner_depth = depth.clone();
1179 if inlined {
1180 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1181 inner_offset = next_offset;
1182 } else {
1183 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1184 inner_depth.increment()?;
1185 }
1186 let val_ref = self.hosts.get_or_insert_with(|| {
1187 fidl::new_empty!(
1188 fidl::encoding::UnboundedVector<
1189 fidl_fuchsia_bluetooth_sys_common::HostInfo,
1190 >,
1191 D
1192 )
1193 });
1194 fidl::decode!(
1195 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::HostInfo>,
1196 D,
1197 val_ref,
1198 decoder,
1199 inner_offset,
1200 inner_depth
1201 )?;
1202 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1203 {
1204 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1205 }
1206 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1207 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1208 }
1209 }
1210
1211 next_offset += envelope_size;
1212
1213 while next_offset < end_offset {
1215 _next_ordinal_to_read += 1;
1216 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1217 next_offset += envelope_size;
1218 }
1219
1220 Ok(())
1221 }
1222 }
1223
1224 impl HostSelector {
1225 #[inline(always)]
1226 fn max_ordinal_present(&self) -> u64 {
1227 if let Some(_) = self.id {
1228 return 1;
1229 }
1230 0
1231 }
1232 }
1233
1234 impl fidl::encoding::ValueTypeMarker for HostSelector {
1235 type Borrowed<'a> = &'a Self;
1236 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1237 value
1238 }
1239 }
1240
1241 unsafe impl fidl::encoding::TypeMarker for HostSelector {
1242 type Owned = Self;
1243
1244 #[inline(always)]
1245 fn inline_align(_context: fidl::encoding::Context) -> usize {
1246 8
1247 }
1248
1249 #[inline(always)]
1250 fn inline_size(_context: fidl::encoding::Context) -> usize {
1251 16
1252 }
1253 }
1254
1255 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HostSelector, D>
1256 for &HostSelector
1257 {
1258 unsafe fn encode(
1259 self,
1260 encoder: &mut fidl::encoding::Encoder<'_, D>,
1261 offset: usize,
1262 mut depth: fidl::encoding::Depth,
1263 ) -> fidl::Result<()> {
1264 encoder.debug_check_bounds::<HostSelector>(offset);
1265 let max_ordinal: u64 = self.max_ordinal_present();
1267 encoder.write_num(max_ordinal, offset);
1268 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1269 if max_ordinal == 0 {
1271 return Ok(());
1272 }
1273 depth.increment()?;
1274 let envelope_size = 8;
1275 let bytes_len = max_ordinal as usize * envelope_size;
1276 #[allow(unused_variables)]
1277 let offset = encoder.out_of_line_offset(bytes_len);
1278 let mut _prev_end_offset: usize = 0;
1279 if 1 > max_ordinal {
1280 return Ok(());
1281 }
1282
1283 let cur_offset: usize = (1 - 1) * envelope_size;
1286
1287 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1289
1290 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::HostId, D>(
1295 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::ValueTypeMarker>::borrow),
1296 encoder, offset + cur_offset, depth
1297 )?;
1298
1299 _prev_end_offset = cur_offset + envelope_size;
1300
1301 Ok(())
1302 }
1303 }
1304
1305 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HostSelector {
1306 #[inline(always)]
1307 fn new_empty() -> Self {
1308 Self::default()
1309 }
1310
1311 unsafe fn decode(
1312 &mut self,
1313 decoder: &mut fidl::encoding::Decoder<'_, D>,
1314 offset: usize,
1315 mut depth: fidl::encoding::Depth,
1316 ) -> fidl::Result<()> {
1317 decoder.debug_check_bounds::<Self>(offset);
1318 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1319 None => return Err(fidl::Error::NotNullable),
1320 Some(len) => len,
1321 };
1322 if len == 0 {
1324 return Ok(());
1325 };
1326 depth.increment()?;
1327 let envelope_size = 8;
1328 let bytes_len = len * envelope_size;
1329 let offset = decoder.out_of_line_offset(bytes_len)?;
1330 let mut _next_ordinal_to_read = 0;
1332 let mut next_offset = offset;
1333 let end_offset = offset + bytes_len;
1334 _next_ordinal_to_read += 1;
1335 if next_offset >= end_offset {
1336 return Ok(());
1337 }
1338
1339 while _next_ordinal_to_read < 1 {
1341 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1342 _next_ordinal_to_read += 1;
1343 next_offset += envelope_size;
1344 }
1345
1346 let next_out_of_line = decoder.next_out_of_line();
1347 let handles_before = decoder.remaining_handles();
1348 if let Some((inlined, num_bytes, num_handles)) =
1349 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1350 {
1351 let member_inline_size = <fidl_fuchsia_bluetooth_common::HostId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1352 if inlined != (member_inline_size <= 4) {
1353 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1354 }
1355 let inner_offset;
1356 let mut inner_depth = depth.clone();
1357 if inlined {
1358 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1359 inner_offset = next_offset;
1360 } else {
1361 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1362 inner_depth.increment()?;
1363 }
1364 let val_ref = self.id.get_or_insert_with(|| {
1365 fidl::new_empty!(fidl_fuchsia_bluetooth_common::HostId, D)
1366 });
1367 fidl::decode!(
1368 fidl_fuchsia_bluetooth_common::HostId,
1369 D,
1370 val_ref,
1371 decoder,
1372 inner_offset,
1373 inner_depth
1374 )?;
1375 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1376 {
1377 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1378 }
1379 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1380 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1381 }
1382 }
1383
1384 next_offset += envelope_size;
1385
1386 while next_offset < end_offset {
1388 _next_ordinal_to_read += 1;
1389 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1390 next_offset += envelope_size;
1391 }
1392
1393 Ok(())
1394 }
1395 }
1396
1397 impl PeerControllerPairRequest {
1398 #[inline(always)]
1399 fn max_ordinal_present(&self) -> u64 {
1400 if let Some(_) = self.options {
1401 return 2;
1402 }
1403 if let Some(_) = self.selector {
1404 return 1;
1405 }
1406 0
1407 }
1408 }
1409
1410 impl fidl::encoding::ValueTypeMarker for PeerControllerPairRequest {
1411 type Borrowed<'a> = &'a Self;
1412 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1413 value
1414 }
1415 }
1416
1417 unsafe impl fidl::encoding::TypeMarker for PeerControllerPairRequest {
1418 type Owned = Self;
1419
1420 #[inline(always)]
1421 fn inline_align(_context: fidl::encoding::Context) -> usize {
1422 8
1423 }
1424
1425 #[inline(always)]
1426 fn inline_size(_context: fidl::encoding::Context) -> usize {
1427 16
1428 }
1429 }
1430
1431 unsafe impl<D: fidl::encoding::ResourceDialect>
1432 fidl::encoding::Encode<PeerControllerPairRequest, D> for &PeerControllerPairRequest
1433 {
1434 unsafe fn encode(
1435 self,
1436 encoder: &mut fidl::encoding::Encoder<'_, D>,
1437 offset: usize,
1438 mut depth: fidl::encoding::Depth,
1439 ) -> fidl::Result<()> {
1440 encoder.debug_check_bounds::<PeerControllerPairRequest>(offset);
1441 let max_ordinal: u64 = self.max_ordinal_present();
1443 encoder.write_num(max_ordinal, offset);
1444 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1445 if max_ordinal == 0 {
1447 return Ok(());
1448 }
1449 depth.increment()?;
1450 let envelope_size = 8;
1451 let bytes_len = max_ordinal as usize * envelope_size;
1452 #[allow(unused_variables)]
1453 let offset = encoder.out_of_line_offset(bytes_len);
1454 let mut _prev_end_offset: usize = 0;
1455 if 1 > max_ordinal {
1456 return Ok(());
1457 }
1458
1459 let cur_offset: usize = (1 - 1) * envelope_size;
1462
1463 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1465
1466 fidl::encoding::encode_in_envelope_optional::<PeerSelector, D>(
1471 self.selector
1472 .as_ref()
1473 .map(<PeerSelector as fidl::encoding::ValueTypeMarker>::borrow),
1474 encoder,
1475 offset + cur_offset,
1476 depth,
1477 )?;
1478
1479 _prev_end_offset = cur_offset + envelope_size;
1480 if 2 > max_ordinal {
1481 return Ok(());
1482 }
1483
1484 let cur_offset: usize = (2 - 1) * envelope_size;
1487
1488 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1490
1491 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_sys_common::PairingOptions, D>(
1496 self.options.as_ref().map(<fidl_fuchsia_bluetooth_sys_common::PairingOptions as fidl::encoding::ValueTypeMarker>::borrow),
1497 encoder, offset + cur_offset, depth
1498 )?;
1499
1500 _prev_end_offset = cur_offset + envelope_size;
1501
1502 Ok(())
1503 }
1504 }
1505
1506 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1507 for PeerControllerPairRequest
1508 {
1509 #[inline(always)]
1510 fn new_empty() -> Self {
1511 Self::default()
1512 }
1513
1514 unsafe fn decode(
1515 &mut self,
1516 decoder: &mut fidl::encoding::Decoder<'_, D>,
1517 offset: usize,
1518 mut depth: fidl::encoding::Depth,
1519 ) -> fidl::Result<()> {
1520 decoder.debug_check_bounds::<Self>(offset);
1521 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1522 None => return Err(fidl::Error::NotNullable),
1523 Some(len) => len,
1524 };
1525 if len == 0 {
1527 return Ok(());
1528 };
1529 depth.increment()?;
1530 let envelope_size = 8;
1531 let bytes_len = len * envelope_size;
1532 let offset = decoder.out_of_line_offset(bytes_len)?;
1533 let mut _next_ordinal_to_read = 0;
1535 let mut next_offset = offset;
1536 let end_offset = offset + bytes_len;
1537 _next_ordinal_to_read += 1;
1538 if next_offset >= end_offset {
1539 return Ok(());
1540 }
1541
1542 while _next_ordinal_to_read < 1 {
1544 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1545 _next_ordinal_to_read += 1;
1546 next_offset += envelope_size;
1547 }
1548
1549 let next_out_of_line = decoder.next_out_of_line();
1550 let handles_before = decoder.remaining_handles();
1551 if let Some((inlined, num_bytes, num_handles)) =
1552 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1553 {
1554 let member_inline_size =
1555 <PeerSelector as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1556 if inlined != (member_inline_size <= 4) {
1557 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1558 }
1559 let inner_offset;
1560 let mut inner_depth = depth.clone();
1561 if inlined {
1562 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1563 inner_offset = next_offset;
1564 } else {
1565 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1566 inner_depth.increment()?;
1567 }
1568 let val_ref =
1569 self.selector.get_or_insert_with(|| fidl::new_empty!(PeerSelector, D));
1570 fidl::decode!(PeerSelector, D, val_ref, decoder, inner_offset, inner_depth)?;
1571 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1572 {
1573 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1574 }
1575 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1576 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1577 }
1578 }
1579
1580 next_offset += envelope_size;
1581 _next_ordinal_to_read += 1;
1582 if next_offset >= end_offset {
1583 return Ok(());
1584 }
1585
1586 while _next_ordinal_to_read < 2 {
1588 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1589 _next_ordinal_to_read += 1;
1590 next_offset += envelope_size;
1591 }
1592
1593 let next_out_of_line = decoder.next_out_of_line();
1594 let handles_before = decoder.remaining_handles();
1595 if let Some((inlined, num_bytes, num_handles)) =
1596 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1597 {
1598 let member_inline_size = <fidl_fuchsia_bluetooth_sys_common::PairingOptions as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1599 if inlined != (member_inline_size <= 4) {
1600 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1601 }
1602 let inner_offset;
1603 let mut inner_depth = depth.clone();
1604 if inlined {
1605 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1606 inner_offset = next_offset;
1607 } else {
1608 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1609 inner_depth.increment()?;
1610 }
1611 let val_ref = self.options.get_or_insert_with(|| {
1612 fidl::new_empty!(fidl_fuchsia_bluetooth_sys_common::PairingOptions, D)
1613 });
1614 fidl::decode!(
1615 fidl_fuchsia_bluetooth_sys_common::PairingOptions,
1616 D,
1617 val_ref,
1618 decoder,
1619 inner_offset,
1620 inner_depth
1621 )?;
1622 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1623 {
1624 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1625 }
1626 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1627 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1628 }
1629 }
1630
1631 next_offset += envelope_size;
1632
1633 while next_offset < end_offset {
1635 _next_ordinal_to_read += 1;
1636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1637 next_offset += envelope_size;
1638 }
1639
1640 Ok(())
1641 }
1642 }
1643
1644 impl PeerControllerSetDiscoveryRequest {
1645 #[inline(always)]
1646 fn max_ordinal_present(&self) -> u64 {
1647 if let Some(_) = self.discovery {
1648 return 1;
1649 }
1650 0
1651 }
1652 }
1653
1654 impl fidl::encoding::ValueTypeMarker for PeerControllerSetDiscoveryRequest {
1655 type Borrowed<'a> = &'a Self;
1656 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1657 value
1658 }
1659 }
1660
1661 unsafe impl fidl::encoding::TypeMarker for PeerControllerSetDiscoveryRequest {
1662 type Owned = Self;
1663
1664 #[inline(always)]
1665 fn inline_align(_context: fidl::encoding::Context) -> usize {
1666 8
1667 }
1668
1669 #[inline(always)]
1670 fn inline_size(_context: fidl::encoding::Context) -> usize {
1671 16
1672 }
1673 }
1674
1675 unsafe impl<D: fidl::encoding::ResourceDialect>
1676 fidl::encoding::Encode<PeerControllerSetDiscoveryRequest, D>
1677 for &PeerControllerSetDiscoveryRequest
1678 {
1679 unsafe fn encode(
1680 self,
1681 encoder: &mut fidl::encoding::Encoder<'_, D>,
1682 offset: usize,
1683 mut depth: fidl::encoding::Depth,
1684 ) -> fidl::Result<()> {
1685 encoder.debug_check_bounds::<PeerControllerSetDiscoveryRequest>(offset);
1686 let max_ordinal: u64 = self.max_ordinal_present();
1688 encoder.write_num(max_ordinal, offset);
1689 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1690 if max_ordinal == 0 {
1692 return Ok(());
1693 }
1694 depth.increment()?;
1695 let envelope_size = 8;
1696 let bytes_len = max_ordinal as usize * envelope_size;
1697 #[allow(unused_variables)]
1698 let offset = encoder.out_of_line_offset(bytes_len);
1699 let mut _prev_end_offset: usize = 0;
1700 if 1 > max_ordinal {
1701 return Ok(());
1702 }
1703
1704 let cur_offset: usize = (1 - 1) * envelope_size;
1707
1708 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1710
1711 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1716 self.discovery.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1717 encoder,
1718 offset + cur_offset,
1719 depth,
1720 )?;
1721
1722 _prev_end_offset = cur_offset + envelope_size;
1723
1724 Ok(())
1725 }
1726 }
1727
1728 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1729 for PeerControllerSetDiscoveryRequest
1730 {
1731 #[inline(always)]
1732 fn new_empty() -> Self {
1733 Self::default()
1734 }
1735
1736 unsafe fn decode(
1737 &mut self,
1738 decoder: &mut fidl::encoding::Decoder<'_, D>,
1739 offset: usize,
1740 mut depth: fidl::encoding::Depth,
1741 ) -> fidl::Result<()> {
1742 decoder.debug_check_bounds::<Self>(offset);
1743 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1744 None => return Err(fidl::Error::NotNullable),
1745 Some(len) => len,
1746 };
1747 if len == 0 {
1749 return Ok(());
1750 };
1751 depth.increment()?;
1752 let envelope_size = 8;
1753 let bytes_len = len * envelope_size;
1754 let offset = decoder.out_of_line_offset(bytes_len)?;
1755 let mut _next_ordinal_to_read = 0;
1757 let mut next_offset = offset;
1758 let end_offset = offset + bytes_len;
1759 _next_ordinal_to_read += 1;
1760 if next_offset >= end_offset {
1761 return Ok(());
1762 }
1763
1764 while _next_ordinal_to_read < 1 {
1766 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1767 _next_ordinal_to_read += 1;
1768 next_offset += envelope_size;
1769 }
1770
1771 let next_out_of_line = decoder.next_out_of_line();
1772 let handles_before = decoder.remaining_handles();
1773 if let Some((inlined, num_bytes, num_handles)) =
1774 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1775 {
1776 let member_inline_size =
1777 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1778 if inlined != (member_inline_size <= 4) {
1779 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1780 }
1781 let inner_offset;
1782 let mut inner_depth = depth.clone();
1783 if inlined {
1784 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1785 inner_offset = next_offset;
1786 } else {
1787 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1788 inner_depth.increment()?;
1789 }
1790 let val_ref = self.discovery.get_or_insert_with(|| fidl::new_empty!(bool, D));
1791 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1792 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1793 {
1794 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1795 }
1796 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1797 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1798 }
1799 }
1800
1801 next_offset += envelope_size;
1802
1803 while next_offset < end_offset {
1805 _next_ordinal_to_read += 1;
1806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1807 next_offset += envelope_size;
1808 }
1809
1810 Ok(())
1811 }
1812 }
1813
1814 impl PeerControllerGetKnownPeersResponse {
1815 #[inline(always)]
1816 fn max_ordinal_present(&self) -> u64 {
1817 if let Some(_) = self.peers {
1818 return 1;
1819 }
1820 0
1821 }
1822 }
1823
1824 impl fidl::encoding::ValueTypeMarker for PeerControllerGetKnownPeersResponse {
1825 type Borrowed<'a> = &'a Self;
1826 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1827 value
1828 }
1829 }
1830
1831 unsafe impl fidl::encoding::TypeMarker for PeerControllerGetKnownPeersResponse {
1832 type Owned = Self;
1833
1834 #[inline(always)]
1835 fn inline_align(_context: fidl::encoding::Context) -> usize {
1836 8
1837 }
1838
1839 #[inline(always)]
1840 fn inline_size(_context: fidl::encoding::Context) -> usize {
1841 16
1842 }
1843 }
1844
1845 unsafe impl<D: fidl::encoding::ResourceDialect>
1846 fidl::encoding::Encode<PeerControllerGetKnownPeersResponse, D>
1847 for &PeerControllerGetKnownPeersResponse
1848 {
1849 unsafe fn encode(
1850 self,
1851 encoder: &mut fidl::encoding::Encoder<'_, D>,
1852 offset: usize,
1853 mut depth: fidl::encoding::Depth,
1854 ) -> fidl::Result<()> {
1855 encoder.debug_check_bounds::<PeerControllerGetKnownPeersResponse>(offset);
1856 let max_ordinal: u64 = self.max_ordinal_present();
1858 encoder.write_num(max_ordinal, offset);
1859 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1860 if max_ordinal == 0 {
1862 return Ok(());
1863 }
1864 depth.increment()?;
1865 let envelope_size = 8;
1866 let bytes_len = max_ordinal as usize * envelope_size;
1867 #[allow(unused_variables)]
1868 let offset = encoder.out_of_line_offset(bytes_len);
1869 let mut _prev_end_offset: usize = 0;
1870 if 1 > max_ordinal {
1871 return Ok(());
1872 }
1873
1874 let cur_offset: usize = (1 - 1) * envelope_size;
1877
1878 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1880
1881 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>, D>(
1886 self.peers.as_ref().map(<fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer> as fidl::encoding::ValueTypeMarker>::borrow),
1887 encoder, offset + cur_offset, depth
1888 )?;
1889
1890 _prev_end_offset = cur_offset + envelope_size;
1891
1892 Ok(())
1893 }
1894 }
1895
1896 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1897 for PeerControllerGetKnownPeersResponse
1898 {
1899 #[inline(always)]
1900 fn new_empty() -> Self {
1901 Self::default()
1902 }
1903
1904 unsafe fn decode(
1905 &mut self,
1906 decoder: &mut fidl::encoding::Decoder<'_, D>,
1907 offset: usize,
1908 mut depth: fidl::encoding::Depth,
1909 ) -> fidl::Result<()> {
1910 decoder.debug_check_bounds::<Self>(offset);
1911 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1912 None => return Err(fidl::Error::NotNullable),
1913 Some(len) => len,
1914 };
1915 if len == 0 {
1917 return Ok(());
1918 };
1919 depth.increment()?;
1920 let envelope_size = 8;
1921 let bytes_len = len * envelope_size;
1922 let offset = decoder.out_of_line_offset(bytes_len)?;
1923 let mut _next_ordinal_to_read = 0;
1925 let mut next_offset = offset;
1926 let end_offset = offset + bytes_len;
1927 _next_ordinal_to_read += 1;
1928 if next_offset >= end_offset {
1929 return Ok(());
1930 }
1931
1932 while _next_ordinal_to_read < 1 {
1934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1935 _next_ordinal_to_read += 1;
1936 next_offset += envelope_size;
1937 }
1938
1939 let next_out_of_line = decoder.next_out_of_line();
1940 let handles_before = decoder.remaining_handles();
1941 if let Some((inlined, num_bytes, num_handles)) =
1942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1943 {
1944 let member_inline_size = <fidl::encoding::UnboundedVector<
1945 fidl_fuchsia_bluetooth_sys_common::Peer,
1946 > as fidl::encoding::TypeMarker>::inline_size(
1947 decoder.context
1948 );
1949 if inlined != (member_inline_size <= 4) {
1950 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1951 }
1952 let inner_offset;
1953 let mut inner_depth = depth.clone();
1954 if inlined {
1955 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1956 inner_offset = next_offset;
1957 } else {
1958 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1959 inner_depth.increment()?;
1960 }
1961 let val_ref = self.peers.get_or_insert_with(|| {
1962 fidl::new_empty!(
1963 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
1964 D
1965 )
1966 });
1967 fidl::decode!(
1968 fidl::encoding::UnboundedVector<fidl_fuchsia_bluetooth_sys_common::Peer>,
1969 D,
1970 val_ref,
1971 decoder,
1972 inner_offset,
1973 inner_depth
1974 )?;
1975 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1976 {
1977 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1978 }
1979 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1980 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1981 }
1982 }
1983
1984 next_offset += envelope_size;
1985
1986 while next_offset < end_offset {
1988 _next_ordinal_to_read += 1;
1989 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1990 next_offset += envelope_size;
1991 }
1992
1993 Ok(())
1994 }
1995 }
1996
1997 impl PeerSelector {
1998 #[inline(always)]
1999 fn max_ordinal_present(&self) -> u64 {
2000 if let Some(_) = self.id {
2001 return 1;
2002 }
2003 0
2004 }
2005 }
2006
2007 impl fidl::encoding::ValueTypeMarker for PeerSelector {
2008 type Borrowed<'a> = &'a Self;
2009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2010 value
2011 }
2012 }
2013
2014 unsafe impl fidl::encoding::TypeMarker for PeerSelector {
2015 type Owned = Self;
2016
2017 #[inline(always)]
2018 fn inline_align(_context: fidl::encoding::Context) -> usize {
2019 8
2020 }
2021
2022 #[inline(always)]
2023 fn inline_size(_context: fidl::encoding::Context) -> usize {
2024 16
2025 }
2026 }
2027
2028 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PeerSelector, D>
2029 for &PeerSelector
2030 {
2031 unsafe fn encode(
2032 self,
2033 encoder: &mut fidl::encoding::Encoder<'_, D>,
2034 offset: usize,
2035 mut depth: fidl::encoding::Depth,
2036 ) -> fidl::Result<()> {
2037 encoder.debug_check_bounds::<PeerSelector>(offset);
2038 let max_ordinal: u64 = self.max_ordinal_present();
2040 encoder.write_num(max_ordinal, offset);
2041 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2042 if max_ordinal == 0 {
2044 return Ok(());
2045 }
2046 depth.increment()?;
2047 let envelope_size = 8;
2048 let bytes_len = max_ordinal as usize * envelope_size;
2049 #[allow(unused_variables)]
2050 let offset = encoder.out_of_line_offset(bytes_len);
2051 let mut _prev_end_offset: usize = 0;
2052 if 1 > max_ordinal {
2053 return Ok(());
2054 }
2055
2056 let cur_offset: usize = (1 - 1) * envelope_size;
2059
2060 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2062
2063 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2068 self.id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2069 encoder, offset + cur_offset, depth
2070 )?;
2071
2072 _prev_end_offset = cur_offset + envelope_size;
2073
2074 Ok(())
2075 }
2076 }
2077
2078 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PeerSelector {
2079 #[inline(always)]
2080 fn new_empty() -> Self {
2081 Self::default()
2082 }
2083
2084 unsafe fn decode(
2085 &mut self,
2086 decoder: &mut fidl::encoding::Decoder<'_, D>,
2087 offset: usize,
2088 mut depth: fidl::encoding::Depth,
2089 ) -> fidl::Result<()> {
2090 decoder.debug_check_bounds::<Self>(offset);
2091 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2092 None => return Err(fidl::Error::NotNullable),
2093 Some(len) => len,
2094 };
2095 if len == 0 {
2097 return Ok(());
2098 };
2099 depth.increment()?;
2100 let envelope_size = 8;
2101 let bytes_len = len * envelope_size;
2102 let offset = decoder.out_of_line_offset(bytes_len)?;
2103 let mut _next_ordinal_to_read = 0;
2105 let mut next_offset = offset;
2106 let end_offset = offset + bytes_len;
2107 _next_ordinal_to_read += 1;
2108 if next_offset >= end_offset {
2109 return Ok(());
2110 }
2111
2112 while _next_ordinal_to_read < 1 {
2114 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2115 _next_ordinal_to_read += 1;
2116 next_offset += envelope_size;
2117 }
2118
2119 let next_out_of_line = decoder.next_out_of_line();
2120 let handles_before = decoder.remaining_handles();
2121 if let Some((inlined, num_bytes, num_handles)) =
2122 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2123 {
2124 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2125 if inlined != (member_inline_size <= 4) {
2126 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2127 }
2128 let inner_offset;
2129 let mut inner_depth = depth.clone();
2130 if inlined {
2131 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2132 inner_offset = next_offset;
2133 } else {
2134 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2135 inner_depth.increment()?;
2136 }
2137 let val_ref = self.id.get_or_insert_with(|| {
2138 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2139 });
2140 fidl::decode!(
2141 fidl_fuchsia_bluetooth_common::PeerId,
2142 D,
2143 val_ref,
2144 decoder,
2145 inner_offset,
2146 inner_depth
2147 )?;
2148 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2149 {
2150 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2151 }
2152 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2153 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2154 }
2155 }
2156
2157 next_offset += envelope_size;
2158
2159 while next_offset < end_offset {
2161 _next_ordinal_to_read += 1;
2162 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2163 next_offset += envelope_size;
2164 }
2165
2166 Ok(())
2167 }
2168 }
2169
2170 impl PeripheralControllerAdvertiseRequest {
2171 #[inline(always)]
2172 fn max_ordinal_present(&self) -> u64 {
2173 if let Some(_) = self.timeout {
2174 return 2;
2175 }
2176 if let Some(_) = self.parameters {
2177 return 1;
2178 }
2179 0
2180 }
2181 }
2182
2183 impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseRequest {
2184 type Borrowed<'a> = &'a Self;
2185 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2186 value
2187 }
2188 }
2189
2190 unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseRequest {
2191 type Owned = Self;
2192
2193 #[inline(always)]
2194 fn inline_align(_context: fidl::encoding::Context) -> usize {
2195 8
2196 }
2197
2198 #[inline(always)]
2199 fn inline_size(_context: fidl::encoding::Context) -> usize {
2200 16
2201 }
2202 }
2203
2204 unsafe impl<D: fidl::encoding::ResourceDialect>
2205 fidl::encoding::Encode<PeripheralControllerAdvertiseRequest, D>
2206 for &PeripheralControllerAdvertiseRequest
2207 {
2208 unsafe fn encode(
2209 self,
2210 encoder: &mut fidl::encoding::Encoder<'_, D>,
2211 offset: usize,
2212 mut depth: fidl::encoding::Depth,
2213 ) -> fidl::Result<()> {
2214 encoder.debug_check_bounds::<PeripheralControllerAdvertiseRequest>(offset);
2215 let max_ordinal: u64 = self.max_ordinal_present();
2217 encoder.write_num(max_ordinal, offset);
2218 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2219 if max_ordinal == 0 {
2221 return Ok(());
2222 }
2223 depth.increment()?;
2224 let envelope_size = 8;
2225 let bytes_len = max_ordinal as usize * envelope_size;
2226 #[allow(unused_variables)]
2227 let offset = encoder.out_of_line_offset(bytes_len);
2228 let mut _prev_end_offset: usize = 0;
2229 if 1 > max_ordinal {
2230 return Ok(());
2231 }
2232
2233 let cur_offset: usize = (1 - 1) * envelope_size;
2236
2237 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2239
2240 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D>(
2245 self.parameters.as_ref().map(<fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::ValueTypeMarker>::borrow),
2246 encoder, offset + cur_offset, depth
2247 )?;
2248
2249 _prev_end_offset = cur_offset + envelope_size;
2250 if 2 > max_ordinal {
2251 return Ok(());
2252 }
2253
2254 let cur_offset: usize = (2 - 1) * envelope_size;
2257
2258 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2260
2261 fidl::encoding::encode_in_envelope_optional::<u64, D>(
2266 self.timeout.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
2267 encoder,
2268 offset + cur_offset,
2269 depth,
2270 )?;
2271
2272 _prev_end_offset = cur_offset + envelope_size;
2273
2274 Ok(())
2275 }
2276 }
2277
2278 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2279 for PeripheralControllerAdvertiseRequest
2280 {
2281 #[inline(always)]
2282 fn new_empty() -> Self {
2283 Self::default()
2284 }
2285
2286 unsafe fn decode(
2287 &mut self,
2288 decoder: &mut fidl::encoding::Decoder<'_, D>,
2289 offset: usize,
2290 mut depth: fidl::encoding::Depth,
2291 ) -> fidl::Result<()> {
2292 decoder.debug_check_bounds::<Self>(offset);
2293 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2294 None => return Err(fidl::Error::NotNullable),
2295 Some(len) => len,
2296 };
2297 if len == 0 {
2299 return Ok(());
2300 };
2301 depth.increment()?;
2302 let envelope_size = 8;
2303 let bytes_len = len * envelope_size;
2304 let offset = decoder.out_of_line_offset(bytes_len)?;
2305 let mut _next_ordinal_to_read = 0;
2307 let mut next_offset = offset;
2308 let end_offset = offset + bytes_len;
2309 _next_ordinal_to_read += 1;
2310 if next_offset >= end_offset {
2311 return Ok(());
2312 }
2313
2314 while _next_ordinal_to_read < 1 {
2316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2317 _next_ordinal_to_read += 1;
2318 next_offset += envelope_size;
2319 }
2320
2321 let next_out_of_line = decoder.next_out_of_line();
2322 let handles_before = decoder.remaining_handles();
2323 if let Some((inlined, num_bytes, num_handles)) =
2324 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2325 {
2326 let member_inline_size = <fidl_fuchsia_bluetooth_le_common::AdvertisingParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2327 if inlined != (member_inline_size <= 4) {
2328 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2329 }
2330 let inner_offset;
2331 let mut inner_depth = depth.clone();
2332 if inlined {
2333 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2334 inner_offset = next_offset;
2335 } else {
2336 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2337 inner_depth.increment()?;
2338 }
2339 let val_ref = self.parameters.get_or_insert_with(|| {
2340 fidl::new_empty!(fidl_fuchsia_bluetooth_le_common::AdvertisingParameters, D)
2341 });
2342 fidl::decode!(
2343 fidl_fuchsia_bluetooth_le_common::AdvertisingParameters,
2344 D,
2345 val_ref,
2346 decoder,
2347 inner_offset,
2348 inner_depth
2349 )?;
2350 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2351 {
2352 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2353 }
2354 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2355 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2356 }
2357 }
2358
2359 next_offset += envelope_size;
2360 _next_ordinal_to_read += 1;
2361 if next_offset >= end_offset {
2362 return Ok(());
2363 }
2364
2365 while _next_ordinal_to_read < 2 {
2367 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2368 _next_ordinal_to_read += 1;
2369 next_offset += envelope_size;
2370 }
2371
2372 let next_out_of_line = decoder.next_out_of_line();
2373 let handles_before = decoder.remaining_handles();
2374 if let Some((inlined, num_bytes, num_handles)) =
2375 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2376 {
2377 let member_inline_size =
2378 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2379 if inlined != (member_inline_size <= 4) {
2380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2381 }
2382 let inner_offset;
2383 let mut inner_depth = depth.clone();
2384 if inlined {
2385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2386 inner_offset = next_offset;
2387 } else {
2388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2389 inner_depth.increment()?;
2390 }
2391 let val_ref = self.timeout.get_or_insert_with(|| fidl::new_empty!(u64, D));
2392 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
2393 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2394 {
2395 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2396 }
2397 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2398 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2399 }
2400 }
2401
2402 next_offset += envelope_size;
2403
2404 while next_offset < end_offset {
2406 _next_ordinal_to_read += 1;
2407 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2408 next_offset += envelope_size;
2409 }
2410
2411 Ok(())
2412 }
2413 }
2414
2415 impl PeripheralControllerAdvertiseResponse {
2416 #[inline(always)]
2417 fn max_ordinal_present(&self) -> u64 {
2418 if let Some(_) = self.peer_id {
2419 return 1;
2420 }
2421 0
2422 }
2423 }
2424
2425 impl fidl::encoding::ValueTypeMarker for PeripheralControllerAdvertiseResponse {
2426 type Borrowed<'a> = &'a Self;
2427 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2428 value
2429 }
2430 }
2431
2432 unsafe impl fidl::encoding::TypeMarker for PeripheralControllerAdvertiseResponse {
2433 type Owned = Self;
2434
2435 #[inline(always)]
2436 fn inline_align(_context: fidl::encoding::Context) -> usize {
2437 8
2438 }
2439
2440 #[inline(always)]
2441 fn inline_size(_context: fidl::encoding::Context) -> usize {
2442 16
2443 }
2444 }
2445
2446 unsafe impl<D: fidl::encoding::ResourceDialect>
2447 fidl::encoding::Encode<PeripheralControllerAdvertiseResponse, D>
2448 for &PeripheralControllerAdvertiseResponse
2449 {
2450 unsafe fn encode(
2451 self,
2452 encoder: &mut fidl::encoding::Encoder<'_, D>,
2453 offset: usize,
2454 mut depth: fidl::encoding::Depth,
2455 ) -> fidl::Result<()> {
2456 encoder.debug_check_bounds::<PeripheralControllerAdvertiseResponse>(offset);
2457 let max_ordinal: u64 = self.max_ordinal_present();
2459 encoder.write_num(max_ordinal, offset);
2460 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2461 if max_ordinal == 0 {
2463 return Ok(());
2464 }
2465 depth.increment()?;
2466 let envelope_size = 8;
2467 let bytes_len = max_ordinal as usize * envelope_size;
2468 #[allow(unused_variables)]
2469 let offset = encoder.out_of_line_offset(bytes_len);
2470 let mut _prev_end_offset: usize = 0;
2471 if 1 > max_ordinal {
2472 return Ok(());
2473 }
2474
2475 let cur_offset: usize = (1 - 1) * envelope_size;
2478
2479 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2481
2482 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth_common::PeerId, D>(
2487 self.peer_id.as_ref().map(<fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::ValueTypeMarker>::borrow),
2488 encoder, offset + cur_offset, depth
2489 )?;
2490
2491 _prev_end_offset = cur_offset + envelope_size;
2492
2493 Ok(())
2494 }
2495 }
2496
2497 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2498 for PeripheralControllerAdvertiseResponse
2499 {
2500 #[inline(always)]
2501 fn new_empty() -> Self {
2502 Self::default()
2503 }
2504
2505 unsafe fn decode(
2506 &mut self,
2507 decoder: &mut fidl::encoding::Decoder<'_, D>,
2508 offset: usize,
2509 mut depth: fidl::encoding::Depth,
2510 ) -> fidl::Result<()> {
2511 decoder.debug_check_bounds::<Self>(offset);
2512 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2513 None => return Err(fidl::Error::NotNullable),
2514 Some(len) => len,
2515 };
2516 if len == 0 {
2518 return Ok(());
2519 };
2520 depth.increment()?;
2521 let envelope_size = 8;
2522 let bytes_len = len * envelope_size;
2523 let offset = decoder.out_of_line_offset(bytes_len)?;
2524 let mut _next_ordinal_to_read = 0;
2526 let mut next_offset = offset;
2527 let end_offset = offset + bytes_len;
2528 _next_ordinal_to_read += 1;
2529 if next_offset >= end_offset {
2530 return Ok(());
2531 }
2532
2533 while _next_ordinal_to_read < 1 {
2535 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2536 _next_ordinal_to_read += 1;
2537 next_offset += envelope_size;
2538 }
2539
2540 let next_out_of_line = decoder.next_out_of_line();
2541 let handles_before = decoder.remaining_handles();
2542 if let Some((inlined, num_bytes, num_handles)) =
2543 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2544 {
2545 let member_inline_size = <fidl_fuchsia_bluetooth_common::PeerId as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2546 if inlined != (member_inline_size <= 4) {
2547 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2548 }
2549 let inner_offset;
2550 let mut inner_depth = depth.clone();
2551 if inlined {
2552 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2553 inner_offset = next_offset;
2554 } else {
2555 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2556 inner_depth.increment()?;
2557 }
2558 let val_ref = self.peer_id.get_or_insert_with(|| {
2559 fidl::new_empty!(fidl_fuchsia_bluetooth_common::PeerId, D)
2560 });
2561 fidl::decode!(
2562 fidl_fuchsia_bluetooth_common::PeerId,
2563 D,
2564 val_ref,
2565 decoder,
2566 inner_offset,
2567 inner_depth
2568 )?;
2569 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2570 {
2571 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2572 }
2573 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2574 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2575 }
2576 }
2577
2578 next_offset += envelope_size;
2579
2580 while next_offset < end_offset {
2582 _next_ordinal_to_read += 1;
2583 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2584 next_offset += envelope_size;
2585 }
2586
2587 Ok(())
2588 }
2589 }
2590}