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
11pub type ChannelMode = fidl_fuchsia_bluetooth__common::ChannelMode;
12
13pub type ChannelParameters = fidl_fuchsia_bluetooth__common::ChannelParameters;
14
15pub type ProtocolDescriptorList = Vec<ProtocolDescriptor>;
18
19pub type RfcommChannel = u8;
23
24pub const ATTR_ADDITIONAL_PROTOCOL_DESCRIPTOR_LIST: u16 = 13;
25
26pub const ATTR_BLUETOOTH_PROFILE_DESCRIPTOR_LIST: u16 = 9;
27
28pub const ATTR_BROWSE_GROUP_LIST: u16 = 5;
29
30pub const ATTR_LANGUAGE_BASE_ATTRIBUTE_ID_LIST: u16 = 6;
31
32pub const ATTR_PROTOCOL_DESCRIPTOR_LIST: u16 = 4;
33
34pub const ATTR_SERVICE_AVAILABILITY: u16 = 8;
35
36pub const ATTR_SERVICE_CLASS_ID_LIST: u16 = 1;
37
38pub const ATTR_SERVICE_ID: u16 = 3;
39
40pub const ATTR_SERVICE_INFO_TIME_TO_LIVE: u16 = 7;
41
42pub const ATTR_SERVICE_RECORD_HANDLE: u16 = 0;
45
46pub const ATTR_SERVICE_RECORD_STATE: u16 = 2;
47
48pub const MAX_ADDITIONAL_ATTRIBUTES: u16 = 65023;
52
53pub const MAX_ATTRIBUTES: u16 = 512;
55
56pub const MAX_INFORMATION_COUNT: u8 = 85;
58
59pub const MAX_SEQUENCE_LENGTH: u8 = 255;
63
64pub const MAX_SERVICES_PER_ADVERTISEMENT: u8 = 32;
66
67pub const MAX_STRING_LENGTH: u16 = 1024;
70
71pub const PSM_3_DSP: u16 = 33;
72
73pub const PSM_ATT: u16 = 31;
74
75pub const PSM_AVCTP: u16 = 23;
76
77pub const PSM_AVCTP_BROWSE: u16 = 27;
78
79pub const PSM_AVDTP: u16 = 25;
80
81pub const PSM_BNEP: u16 = 15;
82
83pub const PSM_DYNAMIC: u16 = 65535;
89
90pub const PSM_HID_CONTROL: u16 = 17;
91
92pub const PSM_HID_INTERRUPT: u16 = 19;
93
94pub const PSM_LE_IPSP: u16 = 35;
95
96pub const PSM_OTS: u16 = 37;
97
98pub const PSM_RFCOMM: u16 = 3;
99
100pub const PSM_SDP: u16 = 1;
104
105pub const PSM_TCSBIN: u16 = 5;
106
107pub const PSM_TCSBIN_CORDLESS: u16 = 7;
108
109#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
112#[repr(u32)]
113pub enum A2dpDirectionPriority {
114 Normal = 1,
115 Source = 2,
116 Sink = 3,
117}
118
119impl A2dpDirectionPriority {
120 #[inline]
121 pub fn from_primitive(prim: u32) -> Option<Self> {
122 match prim {
123 1 => Some(Self::Normal),
124 2 => Some(Self::Source),
125 3 => Some(Self::Sink),
126 _ => None,
127 }
128 }
129
130 #[inline]
131 pub const fn into_primitive(self) -> u32 {
132 self as u32
133 }
134}
135
136#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
137pub enum AudioBitsPerSample {
138 Bps16,
139 Bps24,
140 Bps32,
141 #[doc(hidden)]
142 __SourceBreaking {
143 unknown_ordinal: u8,
144 },
145}
146
147#[macro_export]
149macro_rules! AudioBitsPerSampleUnknown {
150 () => {
151 _
152 };
153}
154
155impl AudioBitsPerSample {
156 #[inline]
157 pub fn from_primitive(prim: u8) -> Option<Self> {
158 match prim {
159 1 => Some(Self::Bps16),
160 2 => Some(Self::Bps24),
161 3 => Some(Self::Bps32),
162 _ => None,
163 }
164 }
165
166 #[inline]
167 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
168 match prim {
169 1 => Self::Bps16,
170 2 => Self::Bps24,
171 3 => Self::Bps32,
172 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
173 }
174 }
175
176 #[inline]
177 pub fn unknown() -> Self {
178 Self::__SourceBreaking { unknown_ordinal: 0xff }
179 }
180
181 #[inline]
182 pub const fn into_primitive(self) -> u8 {
183 match self {
184 Self::Bps16 => 1,
185 Self::Bps24 => 2,
186 Self::Bps32 => 3,
187 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
188 }
189 }
190
191 #[inline]
192 pub fn is_unknown(&self) -> bool {
193 match self {
194 Self::__SourceBreaking { unknown_ordinal: _ } => true,
195 _ => false,
196 }
197 }
198}
199
200#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
201pub enum AudioChannelMode {
202 Mono,
203 Stereo,
204 #[doc(hidden)]
205 __SourceBreaking {
206 unknown_ordinal: u8,
207 },
208}
209
210#[macro_export]
212macro_rules! AudioChannelModeUnknown {
213 () => {
214 _
215 };
216}
217
218impl AudioChannelMode {
219 #[inline]
220 pub fn from_primitive(prim: u8) -> Option<Self> {
221 match prim {
222 0 => Some(Self::Mono),
223 1 => Some(Self::Stereo),
224 _ => None,
225 }
226 }
227
228 #[inline]
229 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
230 match prim {
231 0 => Self::Mono,
232 1 => Self::Stereo,
233 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
234 }
235 }
236
237 #[inline]
238 pub fn unknown() -> Self {
239 Self::__SourceBreaking { unknown_ordinal: 0xff }
240 }
241
242 #[inline]
243 pub const fn into_primitive(self) -> u8 {
244 match self {
245 Self::Mono => 0,
246 Self::Stereo => 1,
247 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
248 }
249 }
250
251 #[inline]
252 pub fn is_unknown(&self) -> bool {
253 match self {
254 Self::__SourceBreaking { unknown_ordinal: _ } => true,
255 _ => false,
256 }
257 }
258}
259
260#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
261pub enum AudioSamplingFrequency {
262 Hz44100,
263 Hz48000,
264 Hz88200,
265 Hz96000,
266 #[doc(hidden)]
267 __SourceBreaking {
268 unknown_ordinal: u8,
269 },
270}
271
272#[macro_export]
274macro_rules! AudioSamplingFrequencyUnknown {
275 () => {
276 _
277 };
278}
279
280impl AudioSamplingFrequency {
281 #[inline]
282 pub fn from_primitive(prim: u8) -> Option<Self> {
283 match prim {
284 1 => Some(Self::Hz44100),
285 2 => Some(Self::Hz48000),
286 3 => Some(Self::Hz88200),
287 4 => Some(Self::Hz96000),
288 _ => None,
289 }
290 }
291
292 #[inline]
293 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
294 match prim {
295 1 => Self::Hz44100,
296 2 => Self::Hz48000,
297 3 => Self::Hz88200,
298 4 => Self::Hz96000,
299 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
300 }
301 }
302
303 #[inline]
304 pub fn unknown() -> Self {
305 Self::__SourceBreaking { unknown_ordinal: 0xff }
306 }
307
308 #[inline]
309 pub const fn into_primitive(self) -> u8 {
310 match self {
311 Self::Hz44100 => 1,
312 Self::Hz48000 => 2,
313 Self::Hz88200 => 3,
314 Self::Hz96000 => 4,
315 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
316 }
317 }
318
319 #[inline]
320 pub fn is_unknown(&self) -> bool {
321 match self {
322 Self::__SourceBreaking { unknown_ordinal: _ } => true,
323 _ => false,
324 }
325 }
326}
327
328#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
331#[repr(u8)]
332pub enum DataPath {
333 Host = 1,
335 Offload = 2,
338 Test = 3,
340}
341
342impl DataPath {
343 #[inline]
344 pub fn from_primitive(prim: u8) -> Option<Self> {
345 match prim {
346 1 => Some(Self::Host),
347 2 => Some(Self::Offload),
348 3 => Some(Self::Test),
349 _ => None,
350 }
351 }
352
353 #[inline]
354 pub const fn into_primitive(self) -> u8 {
355 self as u8
356 }
357}
358
359#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
361pub enum HfpParameterSet {
362 T1,
363 T2,
364 S1,
365 S2,
366 S3,
367 S4,
368 D0,
369 D1,
370 #[doc(hidden)]
371 __SourceBreaking {
372 unknown_ordinal: u8,
373 },
374}
375
376#[macro_export]
378macro_rules! HfpParameterSetUnknown {
379 () => {
380 _
381 };
382}
383
384impl HfpParameterSet {
385 #[inline]
386 pub fn from_primitive(prim: u8) -> Option<Self> {
387 match prim {
388 1 => Some(Self::T1),
389 2 => Some(Self::T2),
390 3 => Some(Self::S1),
391 4 => Some(Self::S2),
392 5 => Some(Self::S3),
393 6 => Some(Self::S4),
394 7 => Some(Self::D0),
395 8 => Some(Self::D1),
396 _ => None,
397 }
398 }
399
400 #[inline]
401 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
402 match prim {
403 1 => Self::T1,
404 2 => Self::T2,
405 3 => Self::S1,
406 4 => Self::S2,
407 5 => Self::S3,
408 6 => Self::S4,
409 7 => Self::D0,
410 8 => Self::D1,
411 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
412 }
413 }
414
415 #[inline]
416 pub fn unknown() -> Self {
417 Self::__SourceBreaking { unknown_ordinal: 0xff }
418 }
419
420 #[inline]
421 pub const fn into_primitive(self) -> u8 {
422 match self {
423 Self::T1 => 1,
424 Self::T2 => 2,
425 Self::S1 => 3,
426 Self::S2 => 4,
427 Self::S3 => 5,
428 Self::S4 => 6,
429 Self::D0 => 7,
430 Self::D1 => 8,
431 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
432 }
433 }
434
435 #[inline]
436 pub fn is_unknown(&self) -> bool {
437 match self {
438 Self::__SourceBreaking { unknown_ordinal: _ } => true,
439 _ => false,
440 }
441 }
442}
443
444#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
449pub enum ProtocolIdentifier {
450 Sdp,
451 Rfcomm,
452 Att,
453 Obex,
454 Bnep,
455 Hidp,
456 HardcopyControlChannel,
457 HardcopyDataChannel,
458 HardcopyNotification,
459 Avctp,
460 Avdtp,
461 McapControlChannel,
462 McapDataChannel,
463 L2Cap,
464 #[doc(hidden)]
465 __SourceBreaking {
466 unknown_ordinal: u16,
467 },
468}
469
470#[macro_export]
472macro_rules! ProtocolIdentifierUnknown {
473 () => {
474 _
475 };
476}
477
478impl ProtocolIdentifier {
479 #[inline]
480 pub fn from_primitive(prim: u16) -> Option<Self> {
481 match prim {
482 1 => Some(Self::Sdp),
483 3 => Some(Self::Rfcomm),
484 7 => Some(Self::Att),
485 8 => Some(Self::Obex),
486 15 => Some(Self::Bnep),
487 17 => Some(Self::Hidp),
488 18 => Some(Self::HardcopyControlChannel),
489 20 => Some(Self::HardcopyDataChannel),
490 22 => Some(Self::HardcopyNotification),
491 23 => Some(Self::Avctp),
492 25 => Some(Self::Avdtp),
493 30 => Some(Self::McapControlChannel),
494 31 => Some(Self::McapDataChannel),
495 256 => Some(Self::L2Cap),
496 _ => None,
497 }
498 }
499
500 #[inline]
501 pub fn from_primitive_allow_unknown(prim: u16) -> Self {
502 match prim {
503 1 => Self::Sdp,
504 3 => Self::Rfcomm,
505 7 => Self::Att,
506 8 => Self::Obex,
507 15 => Self::Bnep,
508 17 => Self::Hidp,
509 18 => Self::HardcopyControlChannel,
510 20 => Self::HardcopyDataChannel,
511 22 => Self::HardcopyNotification,
512 23 => Self::Avctp,
513 25 => Self::Avdtp,
514 30 => Self::McapControlChannel,
515 31 => Self::McapDataChannel,
516 256 => Self::L2Cap,
517 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
518 }
519 }
520
521 #[inline]
522 pub fn unknown() -> Self {
523 Self::__SourceBreaking { unknown_ordinal: 0xffff }
524 }
525
526 #[inline]
527 pub const fn into_primitive(self) -> u16 {
528 match self {
529 Self::Sdp => 1,
530 Self::Rfcomm => 3,
531 Self::Att => 7,
532 Self::Obex => 8,
533 Self::Bnep => 15,
534 Self::Hidp => 17,
535 Self::HardcopyControlChannel => 18,
536 Self::HardcopyDataChannel => 20,
537 Self::HardcopyNotification => 22,
538 Self::Avctp => 23,
539 Self::Avdtp => 25,
540 Self::McapControlChannel => 30,
541 Self::McapDataChannel => 31,
542 Self::L2Cap => 256,
543 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
544 }
545 }
546
547 #[inline]
548 pub fn is_unknown(&self) -> bool {
549 match self {
550 Self::__SourceBreaking { unknown_ordinal: _ } => true,
551 _ => false,
552 }
553 }
554}
555
556#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
558#[repr(u8)]
559pub enum RxPacketStatus {
560 CorrectlyReceivedData = 0,
562 PossiblyInvalidData = 1,
564 NoDataReceived = 2,
566 DataPartiallyLost = 3,
568}
569
570impl RxPacketStatus {
571 #[inline]
572 pub fn from_primitive(prim: u8) -> Option<Self> {
573 match prim {
574 0 => Some(Self::CorrectlyReceivedData),
575 1 => Some(Self::PossiblyInvalidData),
576 2 => Some(Self::NoDataReceived),
577 3 => Some(Self::DataPartiallyLost),
578 _ => None,
579 }
580 }
581
582 #[inline]
583 pub const fn into_primitive(self) -> u8 {
584 self as u8
585 }
586}
587
588#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
589pub enum ScoErrorCode {
590 Failure,
591 Cancelled,
592 InvalidArguments,
593 ParametersRejected,
594 #[doc(hidden)]
595 __SourceBreaking {
596 unknown_ordinal: u32,
597 },
598}
599
600#[macro_export]
602macro_rules! ScoErrorCodeUnknown {
603 () => {
604 _
605 };
606}
607
608impl ScoErrorCode {
609 #[inline]
610 pub fn from_primitive(prim: u32) -> Option<Self> {
611 match prim {
612 1 => Some(Self::Failure),
613 2 => Some(Self::Cancelled),
614 3 => Some(Self::InvalidArguments),
615 4 => Some(Self::ParametersRejected),
616 _ => None,
617 }
618 }
619
620 #[inline]
621 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
622 match prim {
623 1 => Self::Failure,
624 2 => Self::Cancelled,
625 3 => Self::InvalidArguments,
626 4 => Self::ParametersRejected,
627 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
628 }
629 }
630
631 #[inline]
632 pub fn unknown() -> Self {
633 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
634 }
635
636 #[inline]
637 pub const fn into_primitive(self) -> u32 {
638 match self {
639 Self::Failure => 1,
640 Self::Cancelled => 2,
641 Self::InvalidArguments => 3,
642 Self::ParametersRejected => 4,
643 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
644 }
645 }
646
647 #[inline]
648 pub fn is_unknown(&self) -> bool {
649 match self {
650 Self::__SourceBreaking { unknown_ordinal: _ } => true,
651 _ => false,
652 }
653 }
654}
655
656#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
662pub enum ServiceClassProfileIdentifier {
663 SerialPort,
665 DialupNetworking,
667 ObexObjectPush,
669 OpexFileTransfer,
671 Headset,
673 HeadsetAudioGateway,
674 HeadsetHs,
675 AudioSource,
677 AudioSink,
678 AdvancedAudioDistribution,
679 AvRemoteControlTarget,
681 AvRemoteControl,
682 AvRemoteControlController,
683 Panu,
685 Nap,
686 Gn,
687 Handsfree,
689 HandsfreeAudioGateway,
690 HumanInterfaceDevice,
692 SimAccess,
694 PhonebookPce,
696 PhonebookPse,
697 Phonebook,
698 MessageAccessServer,
700 MessageNotificationServer,
701 MessageAccessProfile,
702 MpsProfile,
704 MpsClass,
705 PnpInformation,
707 GenericNetworking,
709 GenericFileTransfer,
711 GenericAudio,
713 GenericTelephony,
715 VideoSource,
717 VideoSink,
718 VideoDistribution,
719 Hdp,
721 HdpSource,
722 HdpSink,
723 #[doc(hidden)]
724 __SourceBreaking {
725 unknown_ordinal: u16,
726 },
727}
728
729#[macro_export]
731macro_rules! ServiceClassProfileIdentifierUnknown {
732 () => {
733 _
734 };
735}
736
737impl ServiceClassProfileIdentifier {
738 #[inline]
739 pub fn from_primitive(prim: u16) -> Option<Self> {
740 match prim {
741 4353 => Some(Self::SerialPort),
742 4355 => Some(Self::DialupNetworking),
743 4357 => Some(Self::ObexObjectPush),
744 4358 => Some(Self::OpexFileTransfer),
745 4360 => Some(Self::Headset),
746 4370 => Some(Self::HeadsetAudioGateway),
747 4401 => Some(Self::HeadsetHs),
748 4362 => Some(Self::AudioSource),
749 4363 => Some(Self::AudioSink),
750 4365 => Some(Self::AdvancedAudioDistribution),
751 4364 => Some(Self::AvRemoteControlTarget),
752 4366 => Some(Self::AvRemoteControl),
753 4367 => Some(Self::AvRemoteControlController),
754 4373 => Some(Self::Panu),
755 4374 => Some(Self::Nap),
756 4375 => Some(Self::Gn),
757 4382 => Some(Self::Handsfree),
758 4383 => Some(Self::HandsfreeAudioGateway),
759 4388 => Some(Self::HumanInterfaceDevice),
760 4397 => Some(Self::SimAccess),
761 4398 => Some(Self::PhonebookPce),
762 4399 => Some(Self::PhonebookPse),
763 4400 => Some(Self::Phonebook),
764 4402 => Some(Self::MessageAccessServer),
765 4403 => Some(Self::MessageNotificationServer),
766 4404 => Some(Self::MessageAccessProfile),
767 4410 => Some(Self::MpsProfile),
768 4411 => Some(Self::MpsClass),
769 4608 => Some(Self::PnpInformation),
770 4609 => Some(Self::GenericNetworking),
771 4610 => Some(Self::GenericFileTransfer),
772 4611 => Some(Self::GenericAudio),
773 4612 => Some(Self::GenericTelephony),
774 4867 => Some(Self::VideoSource),
775 4868 => Some(Self::VideoSink),
776 4869 => Some(Self::VideoDistribution),
777 5120 => Some(Self::Hdp),
778 5121 => Some(Self::HdpSource),
779 5122 => Some(Self::HdpSink),
780 _ => None,
781 }
782 }
783
784 #[inline]
785 pub fn from_primitive_allow_unknown(prim: u16) -> Self {
786 match prim {
787 4353 => Self::SerialPort,
788 4355 => Self::DialupNetworking,
789 4357 => Self::ObexObjectPush,
790 4358 => Self::OpexFileTransfer,
791 4360 => Self::Headset,
792 4370 => Self::HeadsetAudioGateway,
793 4401 => Self::HeadsetHs,
794 4362 => Self::AudioSource,
795 4363 => Self::AudioSink,
796 4365 => Self::AdvancedAudioDistribution,
797 4364 => Self::AvRemoteControlTarget,
798 4366 => Self::AvRemoteControl,
799 4367 => Self::AvRemoteControlController,
800 4373 => Self::Panu,
801 4374 => Self::Nap,
802 4375 => Self::Gn,
803 4382 => Self::Handsfree,
804 4383 => Self::HandsfreeAudioGateway,
805 4388 => Self::HumanInterfaceDevice,
806 4397 => Self::SimAccess,
807 4398 => Self::PhonebookPce,
808 4399 => Self::PhonebookPse,
809 4400 => Self::Phonebook,
810 4402 => Self::MessageAccessServer,
811 4403 => Self::MessageNotificationServer,
812 4404 => Self::MessageAccessProfile,
813 4410 => Self::MpsProfile,
814 4411 => Self::MpsClass,
815 4608 => Self::PnpInformation,
816 4609 => Self::GenericNetworking,
817 4610 => Self::GenericFileTransfer,
818 4611 => Self::GenericAudio,
819 4612 => Self::GenericTelephony,
820 4867 => Self::VideoSource,
821 4868 => Self::VideoSink,
822 4869 => Self::VideoDistribution,
823 5120 => Self::Hdp,
824 5121 => Self::HdpSource,
825 5122 => Self::HdpSink,
826 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
827 }
828 }
829
830 #[inline]
831 pub fn unknown() -> Self {
832 Self::__SourceBreaking { unknown_ordinal: 0xffff }
833 }
834
835 #[inline]
836 pub const fn into_primitive(self) -> u16 {
837 match self {
838 Self::SerialPort => 4353,
839 Self::DialupNetworking => 4355,
840 Self::ObexObjectPush => 4357,
841 Self::OpexFileTransfer => 4358,
842 Self::Headset => 4360,
843 Self::HeadsetAudioGateway => 4370,
844 Self::HeadsetHs => 4401,
845 Self::AudioSource => 4362,
846 Self::AudioSink => 4363,
847 Self::AdvancedAudioDistribution => 4365,
848 Self::AvRemoteControlTarget => 4364,
849 Self::AvRemoteControl => 4366,
850 Self::AvRemoteControlController => 4367,
851 Self::Panu => 4373,
852 Self::Nap => 4374,
853 Self::Gn => 4375,
854 Self::Handsfree => 4382,
855 Self::HandsfreeAudioGateway => 4383,
856 Self::HumanInterfaceDevice => 4388,
857 Self::SimAccess => 4397,
858 Self::PhonebookPce => 4398,
859 Self::PhonebookPse => 4399,
860 Self::Phonebook => 4400,
861 Self::MessageAccessServer => 4402,
862 Self::MessageNotificationServer => 4403,
863 Self::MessageAccessProfile => 4404,
864 Self::MpsProfile => 4410,
865 Self::MpsClass => 4411,
866 Self::PnpInformation => 4608,
867 Self::GenericNetworking => 4609,
868 Self::GenericFileTransfer => 4610,
869 Self::GenericAudio => 4611,
870 Self::GenericTelephony => 4612,
871 Self::VideoSource => 4867,
872 Self::VideoSink => 4868,
873 Self::VideoDistribution => 4869,
874 Self::Hdp => 5120,
875 Self::HdpSource => 5121,
876 Self::HdpSink => 5122,
877 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
878 }
879 }
880
881 #[inline]
882 pub fn is_unknown(&self) -> bool {
883 match self {
884 Self::__SourceBreaking { unknown_ordinal: _ } => true,
885 _ => false,
886 }
887 }
888}
889
890#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
891pub struct AudioDirectionExtSetPriorityRequest {
892 pub priority: A2dpDirectionPriority,
893}
894
895impl fidl::Persistable for AudioDirectionExtSetPriorityRequest {}
896
897#[derive(Clone, Debug, PartialEq)]
898pub struct L2capParametersExtRequestParametersRequest {
899 pub request: fidl_fuchsia_bluetooth__common::ChannelParameters,
900}
901
902impl fidl::Persistable for L2capParametersExtRequestParametersRequest {}
903
904#[derive(Clone, Debug, PartialEq)]
905pub struct L2capParametersExtRequestParametersResponse {
906 pub new: fidl_fuchsia_bluetooth__common::ChannelParameters,
907}
908
909impl fidl::Persistable for L2capParametersExtRequestParametersResponse {}
910
911#[derive(Clone, Debug, PartialEq)]
912pub struct ProfileConnectRequest {
913 pub peer_id: fidl_fuchsia_bluetooth__common::PeerId,
914 pub connection: ConnectParameters,
915}
916
917impl fidl::Persistable for ProfileConnectRequest {}
918
919#[derive(Clone, Debug, PartialEq)]
920pub struct SearchResultsServiceFoundRequest {
921 pub peer_id: fidl_fuchsia_bluetooth__common::PeerId,
922 pub protocol: Option<Vec<ProtocolDescriptor>>,
923 pub attributes: Vec<Attribute>,
924}
925
926impl fidl::Persistable for SearchResultsServiceFoundRequest {}
927
928#[derive(Clone, Debug, Default, PartialEq)]
930pub struct Attribute {
931 pub id: Option<u16>,
933 pub element: Option<DataElement>,
935 #[doc(hidden)]
936 pub __source_breaking: fidl::marker::SourceBreaking,
937}
938
939impl fidl::Persistable for Attribute {}
940
941#[derive(Clone, Debug, Default, PartialEq)]
942pub struct AudioAacSupport {
943 #[doc(hidden)]
944 pub __source_breaking: fidl::marker::SourceBreaking,
945}
946
947impl fidl::Persistable for AudioAacSupport {}
948
949#[derive(Clone, Debug, Default, PartialEq)]
950pub struct AudioOffloadConfiguration {
951 pub codec: Option<AudioOffloadFeatures>,
952 pub max_latency: Option<u16>,
953 pub scms_t_enable: Option<bool>,
954 pub sampling_frequency: Option<AudioSamplingFrequency>,
955 pub bits_per_sample: Option<AudioBitsPerSample>,
956 pub channel_mode: Option<AudioChannelMode>,
957 pub encoded_bit_rate: Option<u32>,
958 pub encoder_settings: Option<AudioEncoderSettings>,
959 #[doc(hidden)]
960 pub __source_breaking: fidl::marker::SourceBreaking,
961}
962
963impl fidl::Persistable for AudioOffloadConfiguration {}
964
965#[derive(Clone, Debug, Default, PartialEq)]
966pub struct AudioOffloadExtGetSupportedFeaturesResponse {
967 pub audio_offload_features: Option<Vec<AudioOffloadFeatures>>,
968 #[doc(hidden)]
969 pub __source_breaking: fidl::marker::SourceBreaking,
970}
971
972impl fidl::Persistable for AudioOffloadExtGetSupportedFeaturesResponse {}
973
974#[derive(Clone, Debug, Default, PartialEq)]
975pub struct AudioSbcSupport {
976 #[doc(hidden)]
977 pub __source_breaking: fidl::marker::SourceBreaking,
978}
979
980impl fidl::Persistable for AudioSbcSupport {}
981
982#[derive(Clone, Debug, Default, PartialEq)]
985pub struct Information {
986 pub language: Option<String>,
990 pub name: Option<String>,
992 pub description: Option<String>,
994 pub provider: Option<String>,
996 #[doc(hidden)]
997 pub __source_breaking: fidl::marker::SourceBreaking,
998}
999
1000impl fidl::Persistable for Information {}
1001
1002#[derive(Clone, Debug, Default, PartialEq)]
1004pub struct L2capParameters {
1005 pub psm: Option<u16>,
1007 pub parameters: Option<fidl_fuchsia_bluetooth__common::ChannelParameters>,
1009 #[doc(hidden)]
1010 pub __source_breaking: fidl::marker::SourceBreaking,
1011}
1012
1013impl fidl::Persistable for L2capParameters {}
1014
1015#[derive(Clone, Debug, Default, PartialEq)]
1018pub struct ProfileDescriptor {
1019 pub profile_id: Option<ServiceClassProfileIdentifier>,
1021 pub major_version: Option<u8>,
1023 pub minor_version: Option<u8>,
1025 #[doc(hidden)]
1026 pub __source_breaking: fidl::marker::SourceBreaking,
1027}
1028
1029impl fidl::Persistable for ProfileDescriptor {}
1030
1031#[derive(Clone, Debug, Default, PartialEq)]
1032pub struct ProfileAdvertiseResponse {
1033 pub services: Option<Vec<ServiceDefinition>>,
1036 #[doc(hidden)]
1037 pub __source_breaking: fidl::marker::SourceBreaking,
1038}
1039
1040impl fidl::Persistable for ProfileAdvertiseResponse {}
1041
1042#[derive(Clone, Debug, Default, PartialEq)]
1047pub struct ProtocolDescriptor {
1048 pub protocol: Option<ProtocolIdentifier>,
1050 pub params: Option<Vec<DataElement>>,
1052 #[doc(hidden)]
1053 pub __source_breaking: fidl::marker::SourceBreaking,
1054}
1055
1056impl fidl::Persistable for ProtocolDescriptor {}
1057
1058#[derive(Clone, Debug, Default, PartialEq)]
1060pub struct RfcommParameters {
1061 pub channel: Option<u8>,
1063 #[doc(hidden)]
1064 pub __source_breaking: fidl::marker::SourceBreaking,
1065}
1066
1067impl fidl::Persistable for RfcommParameters {}
1068
1069#[derive(Clone, Debug, Default, PartialEq)]
1070pub struct ScoConnectionParameters {
1071 pub parameter_set: Option<HfpParameterSet>,
1074 pub air_coding_format: Option<fidl_fuchsia_bluetooth__common::AssignedCodingFormat>,
1077 pub air_frame_size: Option<u16>,
1080 pub io_bandwidth: Option<u32>,
1083 pub io_coding_format: Option<fidl_fuchsia_bluetooth__common::AssignedCodingFormat>,
1086 pub io_frame_size: Option<u16>,
1089 pub io_pcm_data_format: Option<fidl_fuchsia_hardware_audio__common::SampleFormat>,
1095 pub io_pcm_sample_payload_msb_position: Option<u8>,
1101 pub path: Option<DataPath>,
1104 pub max_tx_data_size: Option<u16>,
1108 #[doc(hidden)]
1109 pub __source_breaking: fidl::marker::SourceBreaking,
1110}
1111
1112impl fidl::Persistable for ScoConnectionParameters {}
1113
1114#[derive(Clone, Debug, Default, PartialEq)]
1115pub struct ScoConnectionWriteRequest {
1116 pub data: Option<Vec<u8>>,
1117 #[doc(hidden)]
1118 pub __source_breaking: fidl::marker::SourceBreaking,
1119}
1120
1121impl fidl::Persistable for ScoConnectionWriteRequest {}
1122
1123#[derive(Clone, Debug, Default, PartialEq)]
1124pub struct ScoConnectionReadResponse {
1125 pub status_flag: Option<RxPacketStatus>,
1126 pub data: Option<Vec<u8>>,
1127 #[doc(hidden)]
1128 pub __source_breaking: fidl::marker::SourceBreaking,
1129}
1130
1131impl fidl::Persistable for ScoConnectionReadResponse {}
1132
1133#[derive(Clone, Debug, Default, PartialEq)]
1135pub struct ServiceDefinition {
1136 pub service_class_uuids: Option<Vec<fidl_fuchsia_bluetooth__common::Uuid>>,
1139 pub protocol_descriptor_list: Option<Vec<ProtocolDescriptor>>,
1143 pub additional_protocol_descriptor_lists: Option<Vec<Vec<ProtocolDescriptor>>>,
1146 pub profile_descriptors: Option<Vec<ProfileDescriptor>>,
1148 pub information: Option<Vec<Information>>,
1151 pub additional_attributes: Option<Vec<Attribute>>,
1155 #[doc(hidden)]
1156 pub __source_breaking: fidl::marker::SourceBreaking,
1157}
1158
1159impl fidl::Persistable for ServiceDefinition {}
1160
1161#[derive(Clone, Debug)]
1162pub enum AudioEncoderSettings {
1163 Sbc(fidl_fuchsia_media__common::SbcEncoderSettings),
1164 Aac(fidl_fuchsia_media__common::AacEncoderSettings),
1165 #[doc(hidden)]
1166 __SourceBreaking {
1167 unknown_ordinal: u64,
1168 },
1169}
1170
1171#[macro_export]
1173macro_rules! AudioEncoderSettingsUnknown {
1174 () => {
1175 _
1176 };
1177}
1178
1179impl PartialEq for AudioEncoderSettings {
1181 fn eq(&self, other: &Self) -> bool {
1182 match (self, other) {
1183 (Self::Sbc(x), Self::Sbc(y)) => *x == *y,
1184 (Self::Aac(x), Self::Aac(y)) => *x == *y,
1185 _ => false,
1186 }
1187 }
1188}
1189
1190impl AudioEncoderSettings {
1191 #[inline]
1192 pub fn ordinal(&self) -> u64 {
1193 match *self {
1194 Self::Sbc(_) => 1,
1195 Self::Aac(_) => 2,
1196 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1197 }
1198 }
1199
1200 #[inline]
1201 pub fn unknown_variant_for_testing() -> Self {
1202 Self::__SourceBreaking { unknown_ordinal: 0 }
1203 }
1204
1205 #[inline]
1206 pub fn is_unknown(&self) -> bool {
1207 match self {
1208 Self::__SourceBreaking { .. } => true,
1209 _ => false,
1210 }
1211 }
1212}
1213
1214impl fidl::Persistable for AudioEncoderSettings {}
1215
1216#[derive(Clone, Debug)]
1218pub enum AudioOffloadFeatures {
1219 Sbc(AudioSbcSupport),
1220 Aac(AudioAacSupport),
1221 #[doc(hidden)]
1222 __SourceBreaking {
1223 unknown_ordinal: u64,
1224 },
1225}
1226
1227#[macro_export]
1229macro_rules! AudioOffloadFeaturesUnknown {
1230 () => {
1231 _
1232 };
1233}
1234
1235impl PartialEq for AudioOffloadFeatures {
1237 fn eq(&self, other: &Self) -> bool {
1238 match (self, other) {
1239 (Self::Sbc(x), Self::Sbc(y)) => *x == *y,
1240 (Self::Aac(x), Self::Aac(y)) => *x == *y,
1241 _ => false,
1242 }
1243 }
1244}
1245
1246impl AudioOffloadFeatures {
1247 #[inline]
1248 pub fn ordinal(&self) -> u64 {
1249 match *self {
1250 Self::Sbc(_) => 1,
1251 Self::Aac(_) => 2,
1252 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1253 }
1254 }
1255
1256 #[inline]
1257 pub fn unknown_variant_for_testing() -> Self {
1258 Self::__SourceBreaking { unknown_ordinal: 0 }
1259 }
1260
1261 #[inline]
1262 pub fn is_unknown(&self) -> bool {
1263 match self {
1264 Self::__SourceBreaking { .. } => true,
1265 _ => false,
1266 }
1267 }
1268}
1269
1270impl fidl::Persistable for AudioOffloadFeatures {}
1271
1272#[derive(Clone, Debug, PartialEq)]
1274pub enum ConnectParameters {
1275 L2cap(L2capParameters),
1277 Rfcomm(RfcommParameters),
1279}
1280
1281impl ConnectParameters {
1282 #[inline]
1283 pub fn ordinal(&self) -> u64 {
1284 match *self {
1285 Self::L2cap(_) => 1,
1286 Self::Rfcomm(_) => 2,
1287 }
1288 }
1289}
1290
1291impl fidl::Persistable for ConnectParameters {}
1292
1293#[derive(Clone, Debug)]
1296pub enum DataElement {
1297 Int8(i8),
1298 Int16(i16),
1299 Int32(i32),
1300 Int64(i64),
1301 Uint8(u8),
1302 Uint16(u16),
1303 Uint32(u32),
1304 Uint64(u64),
1305 Str(Vec<u8>),
1306 Url(String),
1307 Uuid(fidl_fuchsia_bluetooth__common::Uuid),
1308 B(bool),
1309 Sequence(Vec<Option<Box<DataElement>>>),
1310 Alternatives(Vec<Option<Box<DataElement>>>),
1311 #[doc(hidden)]
1312 __SourceBreaking {
1313 unknown_ordinal: u64,
1314 },
1315}
1316
1317#[macro_export]
1319macro_rules! DataElementUnknown {
1320 () => {
1321 _
1322 };
1323}
1324
1325impl PartialEq for DataElement {
1327 fn eq(&self, other: &Self) -> bool {
1328 match (self, other) {
1329 (Self::Int8(x), Self::Int8(y)) => *x == *y,
1330 (Self::Int16(x), Self::Int16(y)) => *x == *y,
1331 (Self::Int32(x), Self::Int32(y)) => *x == *y,
1332 (Self::Int64(x), Self::Int64(y)) => *x == *y,
1333 (Self::Uint8(x), Self::Uint8(y)) => *x == *y,
1334 (Self::Uint16(x), Self::Uint16(y)) => *x == *y,
1335 (Self::Uint32(x), Self::Uint32(y)) => *x == *y,
1336 (Self::Uint64(x), Self::Uint64(y)) => *x == *y,
1337 (Self::Str(x), Self::Str(y)) => *x == *y,
1338 (Self::Url(x), Self::Url(y)) => *x == *y,
1339 (Self::Uuid(x), Self::Uuid(y)) => *x == *y,
1340 (Self::B(x), Self::B(y)) => *x == *y,
1341 (Self::Sequence(x), Self::Sequence(y)) => *x == *y,
1342 (Self::Alternatives(x), Self::Alternatives(y)) => *x == *y,
1343 _ => false,
1344 }
1345 }
1346}
1347
1348impl DataElement {
1349 #[inline]
1350 pub fn ordinal(&self) -> u64 {
1351 match *self {
1352 Self::Int8(_) => 1,
1353 Self::Int16(_) => 2,
1354 Self::Int32(_) => 3,
1355 Self::Int64(_) => 4,
1356 Self::Uint8(_) => 5,
1357 Self::Uint16(_) => 6,
1358 Self::Uint32(_) => 7,
1359 Self::Uint64(_) => 8,
1360 Self::Str(_) => 9,
1361 Self::Url(_) => 10,
1362 Self::Uuid(_) => 11,
1363 Self::B(_) => 12,
1364 Self::Sequence(_) => 13,
1365 Self::Alternatives(_) => 14,
1366 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1367 }
1368 }
1369
1370 #[inline]
1371 pub fn unknown_variant_for_testing() -> Self {
1372 Self::__SourceBreaking { unknown_ordinal: 0 }
1373 }
1374
1375 #[inline]
1376 pub fn is_unknown(&self) -> bool {
1377 match self {
1378 Self::__SourceBreaking { .. } => true,
1379 _ => false,
1380 }
1381 }
1382}
1383
1384impl fidl::Persistable for DataElement {}
1385
1386#[derive(Clone, Debug)]
1387pub enum ScoConnectionOnConnectionCompleteRequest {
1388 ConnectedParams(ScoConnectionParameters),
1390 Error(ScoErrorCode),
1392 #[doc(hidden)]
1393 __SourceBreaking { unknown_ordinal: u64 },
1394}
1395
1396#[macro_export]
1398macro_rules! ScoConnectionOnConnectionCompleteRequestUnknown {
1399 () => {
1400 _
1401 };
1402}
1403
1404impl PartialEq for ScoConnectionOnConnectionCompleteRequest {
1406 fn eq(&self, other: &Self) -> bool {
1407 match (self, other) {
1408 (Self::ConnectedParams(x), Self::ConnectedParams(y)) => *x == *y,
1409 (Self::Error(x), Self::Error(y)) => *x == *y,
1410 _ => false,
1411 }
1412 }
1413}
1414
1415impl ScoConnectionOnConnectionCompleteRequest {
1416 #[inline]
1417 pub fn ordinal(&self) -> u64 {
1418 match *self {
1419 Self::ConnectedParams(_) => 1,
1420 Self::Error(_) => 2,
1421 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1422 }
1423 }
1424
1425 #[inline]
1426 pub fn unknown_variant_for_testing() -> Self {
1427 Self::__SourceBreaking { unknown_ordinal: 0 }
1428 }
1429
1430 #[inline]
1431 pub fn is_unknown(&self) -> bool {
1432 match self {
1433 Self::__SourceBreaking { .. } => true,
1434 _ => false,
1435 }
1436 }
1437}
1438
1439impl fidl::Persistable for ScoConnectionOnConnectionCompleteRequest {}
1440
1441pub mod audio_direction_ext_ordinals {
1442 pub const SET_PRIORITY: u64 = 0x792713ef3b2bc38a;
1443}
1444
1445pub mod audio_offload_controller_ordinals {
1446 pub const ON_STARTED: u64 = 0x7b624f210570fc30;
1447 pub const STOP: u64 = 0x37845d5a47ce5e39;
1448}
1449
1450pub mod audio_offload_ext_ordinals {
1451 pub const GET_SUPPORTED_FEATURES: u64 = 0x44ab0b88dde41f94;
1452 pub const START_AUDIO_OFFLOAD: u64 = 0x2172ac626202c1c9;
1453}
1454
1455pub mod connection_receiver_ordinals {
1456 pub const CONNECTED: u64 = 0xa5251eebbccf928;
1457 pub const ON_REVOKE: u64 = 0x9b35c093a0468d1;
1458}
1459
1460pub mod connection_receiver2_ordinals {
1461 pub const CONNECTED: u64 = 0x602c15a8004564de;
1462 pub const ON_REVOKE: u64 = 0x11281753d1e1851c;
1463}
1464
1465pub mod l2cap_parameters_ext_ordinals {
1466 pub const REQUEST_PARAMETERS: u64 = 0x1da4d8f268e2e918;
1467}
1468
1469pub mod profile_ordinals {
1470 pub const ADVERTISE: u64 = 0x65e429c1f0205a0e;
1471 pub const SEARCH: u64 = 0x2c59d8580bc8ef0a;
1472 pub const CONNECT: u64 = 0xaaeefc898901fb3;
1473 pub const CONNECT_SCO: u64 = 0x961976ddd116ee6;
1474}
1475
1476pub mod sco_connection_ordinals {
1477 pub const READ: u64 = 0x6fb29eb1e16ac616;
1478 pub const WRITE: u64 = 0x394e1b2ff7f4a5a9;
1479 pub const ON_CONNECTION_COMPLETE: u64 = 0x193aa06408ba384d;
1480 pub const REQUEST_DISCONNECT: u64 = 0x1b1613b352ae6a57;
1481}
1482
1483pub mod search_results_ordinals {
1484 pub const SERVICE_FOUND: u64 = 0x526509a842ebd43c;
1485}
1486
1487mod internal {
1488 use super::*;
1489 unsafe impl fidl::encoding::TypeMarker for A2dpDirectionPriority {
1490 type Owned = Self;
1491
1492 #[inline(always)]
1493 fn inline_align(_context: fidl::encoding::Context) -> usize {
1494 std::mem::align_of::<u32>()
1495 }
1496
1497 #[inline(always)]
1498 fn inline_size(_context: fidl::encoding::Context) -> usize {
1499 std::mem::size_of::<u32>()
1500 }
1501
1502 #[inline(always)]
1503 fn encode_is_copy() -> bool {
1504 true
1505 }
1506
1507 #[inline(always)]
1508 fn decode_is_copy() -> bool {
1509 false
1510 }
1511 }
1512
1513 impl fidl::encoding::ValueTypeMarker for A2dpDirectionPriority {
1514 type Borrowed<'a> = Self;
1515 #[inline(always)]
1516 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1517 *value
1518 }
1519 }
1520
1521 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1522 for A2dpDirectionPriority
1523 {
1524 #[inline]
1525 unsafe fn encode(
1526 self,
1527 encoder: &mut fidl::encoding::Encoder<'_, D>,
1528 offset: usize,
1529 _depth: fidl::encoding::Depth,
1530 ) -> fidl::Result<()> {
1531 encoder.debug_check_bounds::<Self>(offset);
1532 encoder.write_num(self.into_primitive(), offset);
1533 Ok(())
1534 }
1535 }
1536
1537 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for A2dpDirectionPriority {
1538 #[inline(always)]
1539 fn new_empty() -> Self {
1540 Self::Normal
1541 }
1542
1543 #[inline]
1544 unsafe fn decode(
1545 &mut self,
1546 decoder: &mut fidl::encoding::Decoder<'_, D>,
1547 offset: usize,
1548 _depth: fidl::encoding::Depth,
1549 ) -> fidl::Result<()> {
1550 decoder.debug_check_bounds::<Self>(offset);
1551 let prim = decoder.read_num::<u32>(offset);
1552
1553 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1554 Ok(())
1555 }
1556 }
1557 unsafe impl fidl::encoding::TypeMarker for AudioBitsPerSample {
1558 type Owned = Self;
1559
1560 #[inline(always)]
1561 fn inline_align(_context: fidl::encoding::Context) -> usize {
1562 std::mem::align_of::<u8>()
1563 }
1564
1565 #[inline(always)]
1566 fn inline_size(_context: fidl::encoding::Context) -> usize {
1567 std::mem::size_of::<u8>()
1568 }
1569
1570 #[inline(always)]
1571 fn encode_is_copy() -> bool {
1572 false
1573 }
1574
1575 #[inline(always)]
1576 fn decode_is_copy() -> bool {
1577 false
1578 }
1579 }
1580
1581 impl fidl::encoding::ValueTypeMarker for AudioBitsPerSample {
1582 type Borrowed<'a> = Self;
1583 #[inline(always)]
1584 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1585 *value
1586 }
1587 }
1588
1589 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1590 for AudioBitsPerSample
1591 {
1592 #[inline]
1593 unsafe fn encode(
1594 self,
1595 encoder: &mut fidl::encoding::Encoder<'_, D>,
1596 offset: usize,
1597 _depth: fidl::encoding::Depth,
1598 ) -> fidl::Result<()> {
1599 encoder.debug_check_bounds::<Self>(offset);
1600 encoder.write_num(self.into_primitive(), offset);
1601 Ok(())
1602 }
1603 }
1604
1605 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioBitsPerSample {
1606 #[inline(always)]
1607 fn new_empty() -> Self {
1608 Self::unknown()
1609 }
1610
1611 #[inline]
1612 unsafe fn decode(
1613 &mut self,
1614 decoder: &mut fidl::encoding::Decoder<'_, D>,
1615 offset: usize,
1616 _depth: fidl::encoding::Depth,
1617 ) -> fidl::Result<()> {
1618 decoder.debug_check_bounds::<Self>(offset);
1619 let prim = decoder.read_num::<u8>(offset);
1620
1621 *self = Self::from_primitive_allow_unknown(prim);
1622 Ok(())
1623 }
1624 }
1625 unsafe impl fidl::encoding::TypeMarker for AudioChannelMode {
1626 type Owned = Self;
1627
1628 #[inline(always)]
1629 fn inline_align(_context: fidl::encoding::Context) -> usize {
1630 std::mem::align_of::<u8>()
1631 }
1632
1633 #[inline(always)]
1634 fn inline_size(_context: fidl::encoding::Context) -> usize {
1635 std::mem::size_of::<u8>()
1636 }
1637
1638 #[inline(always)]
1639 fn encode_is_copy() -> bool {
1640 false
1641 }
1642
1643 #[inline(always)]
1644 fn decode_is_copy() -> bool {
1645 false
1646 }
1647 }
1648
1649 impl fidl::encoding::ValueTypeMarker for AudioChannelMode {
1650 type Borrowed<'a> = Self;
1651 #[inline(always)]
1652 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1653 *value
1654 }
1655 }
1656
1657 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1658 for AudioChannelMode
1659 {
1660 #[inline]
1661 unsafe fn encode(
1662 self,
1663 encoder: &mut fidl::encoding::Encoder<'_, D>,
1664 offset: usize,
1665 _depth: fidl::encoding::Depth,
1666 ) -> fidl::Result<()> {
1667 encoder.debug_check_bounds::<Self>(offset);
1668 encoder.write_num(self.into_primitive(), offset);
1669 Ok(())
1670 }
1671 }
1672
1673 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioChannelMode {
1674 #[inline(always)]
1675 fn new_empty() -> Self {
1676 Self::unknown()
1677 }
1678
1679 #[inline]
1680 unsafe fn decode(
1681 &mut self,
1682 decoder: &mut fidl::encoding::Decoder<'_, D>,
1683 offset: usize,
1684 _depth: fidl::encoding::Depth,
1685 ) -> fidl::Result<()> {
1686 decoder.debug_check_bounds::<Self>(offset);
1687 let prim = decoder.read_num::<u8>(offset);
1688
1689 *self = Self::from_primitive_allow_unknown(prim);
1690 Ok(())
1691 }
1692 }
1693 unsafe impl fidl::encoding::TypeMarker for AudioSamplingFrequency {
1694 type Owned = Self;
1695
1696 #[inline(always)]
1697 fn inline_align(_context: fidl::encoding::Context) -> usize {
1698 std::mem::align_of::<u8>()
1699 }
1700
1701 #[inline(always)]
1702 fn inline_size(_context: fidl::encoding::Context) -> usize {
1703 std::mem::size_of::<u8>()
1704 }
1705
1706 #[inline(always)]
1707 fn encode_is_copy() -> bool {
1708 false
1709 }
1710
1711 #[inline(always)]
1712 fn decode_is_copy() -> bool {
1713 false
1714 }
1715 }
1716
1717 impl fidl::encoding::ValueTypeMarker for AudioSamplingFrequency {
1718 type Borrowed<'a> = Self;
1719 #[inline(always)]
1720 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1721 *value
1722 }
1723 }
1724
1725 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1726 for AudioSamplingFrequency
1727 {
1728 #[inline]
1729 unsafe fn encode(
1730 self,
1731 encoder: &mut fidl::encoding::Encoder<'_, D>,
1732 offset: usize,
1733 _depth: fidl::encoding::Depth,
1734 ) -> fidl::Result<()> {
1735 encoder.debug_check_bounds::<Self>(offset);
1736 encoder.write_num(self.into_primitive(), offset);
1737 Ok(())
1738 }
1739 }
1740
1741 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1742 for AudioSamplingFrequency
1743 {
1744 #[inline(always)]
1745 fn new_empty() -> Self {
1746 Self::unknown()
1747 }
1748
1749 #[inline]
1750 unsafe fn decode(
1751 &mut self,
1752 decoder: &mut fidl::encoding::Decoder<'_, D>,
1753 offset: usize,
1754 _depth: fidl::encoding::Depth,
1755 ) -> fidl::Result<()> {
1756 decoder.debug_check_bounds::<Self>(offset);
1757 let prim = decoder.read_num::<u8>(offset);
1758
1759 *self = Self::from_primitive_allow_unknown(prim);
1760 Ok(())
1761 }
1762 }
1763 unsafe impl fidl::encoding::TypeMarker for DataPath {
1764 type Owned = Self;
1765
1766 #[inline(always)]
1767 fn inline_align(_context: fidl::encoding::Context) -> usize {
1768 std::mem::align_of::<u8>()
1769 }
1770
1771 #[inline(always)]
1772 fn inline_size(_context: fidl::encoding::Context) -> usize {
1773 std::mem::size_of::<u8>()
1774 }
1775
1776 #[inline(always)]
1777 fn encode_is_copy() -> bool {
1778 true
1779 }
1780
1781 #[inline(always)]
1782 fn decode_is_copy() -> bool {
1783 false
1784 }
1785 }
1786
1787 impl fidl::encoding::ValueTypeMarker for DataPath {
1788 type Borrowed<'a> = Self;
1789 #[inline(always)]
1790 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1791 *value
1792 }
1793 }
1794
1795 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPath {
1796 #[inline]
1797 unsafe fn encode(
1798 self,
1799 encoder: &mut fidl::encoding::Encoder<'_, D>,
1800 offset: usize,
1801 _depth: fidl::encoding::Depth,
1802 ) -> fidl::Result<()> {
1803 encoder.debug_check_bounds::<Self>(offset);
1804 encoder.write_num(self.into_primitive(), offset);
1805 Ok(())
1806 }
1807 }
1808
1809 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPath {
1810 #[inline(always)]
1811 fn new_empty() -> Self {
1812 Self::Host
1813 }
1814
1815 #[inline]
1816 unsafe fn decode(
1817 &mut self,
1818 decoder: &mut fidl::encoding::Decoder<'_, D>,
1819 offset: usize,
1820 _depth: fidl::encoding::Depth,
1821 ) -> fidl::Result<()> {
1822 decoder.debug_check_bounds::<Self>(offset);
1823 let prim = decoder.read_num::<u8>(offset);
1824
1825 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1826 Ok(())
1827 }
1828 }
1829 unsafe impl fidl::encoding::TypeMarker for HfpParameterSet {
1830 type Owned = Self;
1831
1832 #[inline(always)]
1833 fn inline_align(_context: fidl::encoding::Context) -> usize {
1834 std::mem::align_of::<u8>()
1835 }
1836
1837 #[inline(always)]
1838 fn inline_size(_context: fidl::encoding::Context) -> usize {
1839 std::mem::size_of::<u8>()
1840 }
1841
1842 #[inline(always)]
1843 fn encode_is_copy() -> bool {
1844 false
1845 }
1846
1847 #[inline(always)]
1848 fn decode_is_copy() -> bool {
1849 false
1850 }
1851 }
1852
1853 impl fidl::encoding::ValueTypeMarker for HfpParameterSet {
1854 type Borrowed<'a> = Self;
1855 #[inline(always)]
1856 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1857 *value
1858 }
1859 }
1860
1861 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1862 for HfpParameterSet
1863 {
1864 #[inline]
1865 unsafe fn encode(
1866 self,
1867 encoder: &mut fidl::encoding::Encoder<'_, D>,
1868 offset: usize,
1869 _depth: fidl::encoding::Depth,
1870 ) -> fidl::Result<()> {
1871 encoder.debug_check_bounds::<Self>(offset);
1872 encoder.write_num(self.into_primitive(), offset);
1873 Ok(())
1874 }
1875 }
1876
1877 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HfpParameterSet {
1878 #[inline(always)]
1879 fn new_empty() -> Self {
1880 Self::unknown()
1881 }
1882
1883 #[inline]
1884 unsafe fn decode(
1885 &mut self,
1886 decoder: &mut fidl::encoding::Decoder<'_, D>,
1887 offset: usize,
1888 _depth: fidl::encoding::Depth,
1889 ) -> fidl::Result<()> {
1890 decoder.debug_check_bounds::<Self>(offset);
1891 let prim = decoder.read_num::<u8>(offset);
1892
1893 *self = Self::from_primitive_allow_unknown(prim);
1894 Ok(())
1895 }
1896 }
1897 unsafe impl fidl::encoding::TypeMarker for ProtocolIdentifier {
1898 type Owned = Self;
1899
1900 #[inline(always)]
1901 fn inline_align(_context: fidl::encoding::Context) -> usize {
1902 std::mem::align_of::<u16>()
1903 }
1904
1905 #[inline(always)]
1906 fn inline_size(_context: fidl::encoding::Context) -> usize {
1907 std::mem::size_of::<u16>()
1908 }
1909
1910 #[inline(always)]
1911 fn encode_is_copy() -> bool {
1912 false
1913 }
1914
1915 #[inline(always)]
1916 fn decode_is_copy() -> bool {
1917 false
1918 }
1919 }
1920
1921 impl fidl::encoding::ValueTypeMarker for ProtocolIdentifier {
1922 type Borrowed<'a> = Self;
1923 #[inline(always)]
1924 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1925 *value
1926 }
1927 }
1928
1929 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1930 for ProtocolIdentifier
1931 {
1932 #[inline]
1933 unsafe fn encode(
1934 self,
1935 encoder: &mut fidl::encoding::Encoder<'_, D>,
1936 offset: usize,
1937 _depth: fidl::encoding::Depth,
1938 ) -> fidl::Result<()> {
1939 encoder.debug_check_bounds::<Self>(offset);
1940 encoder.write_num(self.into_primitive(), offset);
1941 Ok(())
1942 }
1943 }
1944
1945 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtocolIdentifier {
1946 #[inline(always)]
1947 fn new_empty() -> Self {
1948 Self::unknown()
1949 }
1950
1951 #[inline]
1952 unsafe fn decode(
1953 &mut self,
1954 decoder: &mut fidl::encoding::Decoder<'_, D>,
1955 offset: usize,
1956 _depth: fidl::encoding::Depth,
1957 ) -> fidl::Result<()> {
1958 decoder.debug_check_bounds::<Self>(offset);
1959 let prim = decoder.read_num::<u16>(offset);
1960
1961 *self = Self::from_primitive_allow_unknown(prim);
1962 Ok(())
1963 }
1964 }
1965 unsafe impl fidl::encoding::TypeMarker for RxPacketStatus {
1966 type Owned = Self;
1967
1968 #[inline(always)]
1969 fn inline_align(_context: fidl::encoding::Context) -> usize {
1970 std::mem::align_of::<u8>()
1971 }
1972
1973 #[inline(always)]
1974 fn inline_size(_context: fidl::encoding::Context) -> usize {
1975 std::mem::size_of::<u8>()
1976 }
1977
1978 #[inline(always)]
1979 fn encode_is_copy() -> bool {
1980 true
1981 }
1982
1983 #[inline(always)]
1984 fn decode_is_copy() -> bool {
1985 false
1986 }
1987 }
1988
1989 impl fidl::encoding::ValueTypeMarker for RxPacketStatus {
1990 type Borrowed<'a> = Self;
1991 #[inline(always)]
1992 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1993 *value
1994 }
1995 }
1996
1997 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RxPacketStatus {
1998 #[inline]
1999 unsafe fn encode(
2000 self,
2001 encoder: &mut fidl::encoding::Encoder<'_, D>,
2002 offset: usize,
2003 _depth: fidl::encoding::Depth,
2004 ) -> fidl::Result<()> {
2005 encoder.debug_check_bounds::<Self>(offset);
2006 encoder.write_num(self.into_primitive(), offset);
2007 Ok(())
2008 }
2009 }
2010
2011 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RxPacketStatus {
2012 #[inline(always)]
2013 fn new_empty() -> Self {
2014 Self::CorrectlyReceivedData
2015 }
2016
2017 #[inline]
2018 unsafe fn decode(
2019 &mut self,
2020 decoder: &mut fidl::encoding::Decoder<'_, D>,
2021 offset: usize,
2022 _depth: fidl::encoding::Depth,
2023 ) -> fidl::Result<()> {
2024 decoder.debug_check_bounds::<Self>(offset);
2025 let prim = decoder.read_num::<u8>(offset);
2026
2027 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2028 Ok(())
2029 }
2030 }
2031 unsafe impl fidl::encoding::TypeMarker for ScoErrorCode {
2032 type Owned = Self;
2033
2034 #[inline(always)]
2035 fn inline_align(_context: fidl::encoding::Context) -> usize {
2036 std::mem::align_of::<u32>()
2037 }
2038
2039 #[inline(always)]
2040 fn inline_size(_context: fidl::encoding::Context) -> usize {
2041 std::mem::size_of::<u32>()
2042 }
2043
2044 #[inline(always)]
2045 fn encode_is_copy() -> bool {
2046 false
2047 }
2048
2049 #[inline(always)]
2050 fn decode_is_copy() -> bool {
2051 false
2052 }
2053 }
2054
2055 impl fidl::encoding::ValueTypeMarker for ScoErrorCode {
2056 type Borrowed<'a> = Self;
2057 #[inline(always)]
2058 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2059 *value
2060 }
2061 }
2062
2063 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScoErrorCode {
2064 #[inline]
2065 unsafe fn encode(
2066 self,
2067 encoder: &mut fidl::encoding::Encoder<'_, D>,
2068 offset: usize,
2069 _depth: fidl::encoding::Depth,
2070 ) -> fidl::Result<()> {
2071 encoder.debug_check_bounds::<Self>(offset);
2072 encoder.write_num(self.into_primitive(), offset);
2073 Ok(())
2074 }
2075 }
2076
2077 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScoErrorCode {
2078 #[inline(always)]
2079 fn new_empty() -> Self {
2080 Self::unknown()
2081 }
2082
2083 #[inline]
2084 unsafe fn decode(
2085 &mut self,
2086 decoder: &mut fidl::encoding::Decoder<'_, D>,
2087 offset: usize,
2088 _depth: fidl::encoding::Depth,
2089 ) -> fidl::Result<()> {
2090 decoder.debug_check_bounds::<Self>(offset);
2091 let prim = decoder.read_num::<u32>(offset);
2092
2093 *self = Self::from_primitive_allow_unknown(prim);
2094 Ok(())
2095 }
2096 }
2097 unsafe impl fidl::encoding::TypeMarker for ServiceClassProfileIdentifier {
2098 type Owned = Self;
2099
2100 #[inline(always)]
2101 fn inline_align(_context: fidl::encoding::Context) -> usize {
2102 std::mem::align_of::<u16>()
2103 }
2104
2105 #[inline(always)]
2106 fn inline_size(_context: fidl::encoding::Context) -> usize {
2107 std::mem::size_of::<u16>()
2108 }
2109
2110 #[inline(always)]
2111 fn encode_is_copy() -> bool {
2112 false
2113 }
2114
2115 #[inline(always)]
2116 fn decode_is_copy() -> bool {
2117 false
2118 }
2119 }
2120
2121 impl fidl::encoding::ValueTypeMarker for ServiceClassProfileIdentifier {
2122 type Borrowed<'a> = Self;
2123 #[inline(always)]
2124 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2125 *value
2126 }
2127 }
2128
2129 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2130 for ServiceClassProfileIdentifier
2131 {
2132 #[inline]
2133 unsafe fn encode(
2134 self,
2135 encoder: &mut fidl::encoding::Encoder<'_, D>,
2136 offset: usize,
2137 _depth: fidl::encoding::Depth,
2138 ) -> fidl::Result<()> {
2139 encoder.debug_check_bounds::<Self>(offset);
2140 encoder.write_num(self.into_primitive(), offset);
2141 Ok(())
2142 }
2143 }
2144
2145 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2146 for ServiceClassProfileIdentifier
2147 {
2148 #[inline(always)]
2149 fn new_empty() -> Self {
2150 Self::unknown()
2151 }
2152
2153 #[inline]
2154 unsafe fn decode(
2155 &mut self,
2156 decoder: &mut fidl::encoding::Decoder<'_, D>,
2157 offset: usize,
2158 _depth: fidl::encoding::Depth,
2159 ) -> fidl::Result<()> {
2160 decoder.debug_check_bounds::<Self>(offset);
2161 let prim = decoder.read_num::<u16>(offset);
2162
2163 *self = Self::from_primitive_allow_unknown(prim);
2164 Ok(())
2165 }
2166 }
2167
2168 impl fidl::encoding::ValueTypeMarker for AudioDirectionExtSetPriorityRequest {
2169 type Borrowed<'a> = &'a Self;
2170 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2171 value
2172 }
2173 }
2174
2175 unsafe impl fidl::encoding::TypeMarker for AudioDirectionExtSetPriorityRequest {
2176 type Owned = Self;
2177
2178 #[inline(always)]
2179 fn inline_align(_context: fidl::encoding::Context) -> usize {
2180 4
2181 }
2182
2183 #[inline(always)]
2184 fn inline_size(_context: fidl::encoding::Context) -> usize {
2185 4
2186 }
2187 }
2188
2189 unsafe impl<D: fidl::encoding::ResourceDialect>
2190 fidl::encoding::Encode<AudioDirectionExtSetPriorityRequest, D>
2191 for &AudioDirectionExtSetPriorityRequest
2192 {
2193 #[inline]
2194 unsafe fn encode(
2195 self,
2196 encoder: &mut fidl::encoding::Encoder<'_, D>,
2197 offset: usize,
2198 _depth: fidl::encoding::Depth,
2199 ) -> fidl::Result<()> {
2200 encoder.debug_check_bounds::<AudioDirectionExtSetPriorityRequest>(offset);
2201 fidl::encoding::Encode::<AudioDirectionExtSetPriorityRequest, D>::encode(
2203 (<A2dpDirectionPriority as fidl::encoding::ValueTypeMarker>::borrow(
2204 &self.priority,
2205 ),),
2206 encoder,
2207 offset,
2208 _depth,
2209 )
2210 }
2211 }
2212 unsafe impl<
2213 D: fidl::encoding::ResourceDialect,
2214 T0: fidl::encoding::Encode<A2dpDirectionPriority, D>,
2215 > fidl::encoding::Encode<AudioDirectionExtSetPriorityRequest, D> for (T0,)
2216 {
2217 #[inline]
2218 unsafe fn encode(
2219 self,
2220 encoder: &mut fidl::encoding::Encoder<'_, D>,
2221 offset: usize,
2222 depth: fidl::encoding::Depth,
2223 ) -> fidl::Result<()> {
2224 encoder.debug_check_bounds::<AudioDirectionExtSetPriorityRequest>(offset);
2225 self.0.encode(encoder, offset + 0, depth)?;
2229 Ok(())
2230 }
2231 }
2232
2233 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2234 for AudioDirectionExtSetPriorityRequest
2235 {
2236 #[inline(always)]
2237 fn new_empty() -> Self {
2238 Self { priority: fidl::new_empty!(A2dpDirectionPriority, D) }
2239 }
2240
2241 #[inline]
2242 unsafe fn decode(
2243 &mut self,
2244 decoder: &mut fidl::encoding::Decoder<'_, D>,
2245 offset: usize,
2246 _depth: fidl::encoding::Depth,
2247 ) -> fidl::Result<()> {
2248 decoder.debug_check_bounds::<Self>(offset);
2249 fidl::decode!(
2251 A2dpDirectionPriority,
2252 D,
2253 &mut self.priority,
2254 decoder,
2255 offset + 0,
2256 _depth
2257 )?;
2258 Ok(())
2259 }
2260 }
2261
2262 impl fidl::encoding::ValueTypeMarker for L2capParametersExtRequestParametersRequest {
2263 type Borrowed<'a> = &'a Self;
2264 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2265 value
2266 }
2267 }
2268
2269 unsafe impl fidl::encoding::TypeMarker for L2capParametersExtRequestParametersRequest {
2270 type Owned = Self;
2271
2272 #[inline(always)]
2273 fn inline_align(_context: fidl::encoding::Context) -> usize {
2274 8
2275 }
2276
2277 #[inline(always)]
2278 fn inline_size(_context: fidl::encoding::Context) -> usize {
2279 16
2280 }
2281 }
2282
2283 unsafe impl<D: fidl::encoding::ResourceDialect>
2284 fidl::encoding::Encode<L2capParametersExtRequestParametersRequest, D>
2285 for &L2capParametersExtRequestParametersRequest
2286 {
2287 #[inline]
2288 unsafe fn encode(
2289 self,
2290 encoder: &mut fidl::encoding::Encoder<'_, D>,
2291 offset: usize,
2292 _depth: fidl::encoding::Depth,
2293 ) -> fidl::Result<()> {
2294 encoder.debug_check_bounds::<L2capParametersExtRequestParametersRequest>(offset);
2295 fidl::encoding::Encode::<L2capParametersExtRequestParametersRequest, D>::encode(
2297 (
2298 <fidl_fuchsia_bluetooth__common::ChannelParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.request),
2299 ),
2300 encoder, offset, _depth
2301 )
2302 }
2303 }
2304 unsafe impl<
2305 D: fidl::encoding::ResourceDialect,
2306 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::ChannelParameters, D>,
2307 > fidl::encoding::Encode<L2capParametersExtRequestParametersRequest, D> for (T0,)
2308 {
2309 #[inline]
2310 unsafe fn encode(
2311 self,
2312 encoder: &mut fidl::encoding::Encoder<'_, D>,
2313 offset: usize,
2314 depth: fidl::encoding::Depth,
2315 ) -> fidl::Result<()> {
2316 encoder.debug_check_bounds::<L2capParametersExtRequestParametersRequest>(offset);
2317 self.0.encode(encoder, offset + 0, depth)?;
2321 Ok(())
2322 }
2323 }
2324
2325 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2326 for L2capParametersExtRequestParametersRequest
2327 {
2328 #[inline(always)]
2329 fn new_empty() -> Self {
2330 Self { request: fidl::new_empty!(fidl_fuchsia_bluetooth__common::ChannelParameters, D) }
2331 }
2332
2333 #[inline]
2334 unsafe fn decode(
2335 &mut self,
2336 decoder: &mut fidl::encoding::Decoder<'_, D>,
2337 offset: usize,
2338 _depth: fidl::encoding::Depth,
2339 ) -> fidl::Result<()> {
2340 decoder.debug_check_bounds::<Self>(offset);
2341 fidl::decode!(
2343 fidl_fuchsia_bluetooth__common::ChannelParameters,
2344 D,
2345 &mut self.request,
2346 decoder,
2347 offset + 0,
2348 _depth
2349 )?;
2350 Ok(())
2351 }
2352 }
2353
2354 impl fidl::encoding::ValueTypeMarker for L2capParametersExtRequestParametersResponse {
2355 type Borrowed<'a> = &'a Self;
2356 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2357 value
2358 }
2359 }
2360
2361 unsafe impl fidl::encoding::TypeMarker for L2capParametersExtRequestParametersResponse {
2362 type Owned = Self;
2363
2364 #[inline(always)]
2365 fn inline_align(_context: fidl::encoding::Context) -> usize {
2366 8
2367 }
2368
2369 #[inline(always)]
2370 fn inline_size(_context: fidl::encoding::Context) -> usize {
2371 16
2372 }
2373 }
2374
2375 unsafe impl<D: fidl::encoding::ResourceDialect>
2376 fidl::encoding::Encode<L2capParametersExtRequestParametersResponse, D>
2377 for &L2capParametersExtRequestParametersResponse
2378 {
2379 #[inline]
2380 unsafe fn encode(
2381 self,
2382 encoder: &mut fidl::encoding::Encoder<'_, D>,
2383 offset: usize,
2384 _depth: fidl::encoding::Depth,
2385 ) -> fidl::Result<()> {
2386 encoder.debug_check_bounds::<L2capParametersExtRequestParametersResponse>(offset);
2387 fidl::encoding::Encode::<L2capParametersExtRequestParametersResponse, D>::encode(
2389 (
2390 <fidl_fuchsia_bluetooth__common::ChannelParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.new),
2391 ),
2392 encoder, offset, _depth
2393 )
2394 }
2395 }
2396 unsafe impl<
2397 D: fidl::encoding::ResourceDialect,
2398 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::ChannelParameters, D>,
2399 > fidl::encoding::Encode<L2capParametersExtRequestParametersResponse, D> for (T0,)
2400 {
2401 #[inline]
2402 unsafe fn encode(
2403 self,
2404 encoder: &mut fidl::encoding::Encoder<'_, D>,
2405 offset: usize,
2406 depth: fidl::encoding::Depth,
2407 ) -> fidl::Result<()> {
2408 encoder.debug_check_bounds::<L2capParametersExtRequestParametersResponse>(offset);
2409 self.0.encode(encoder, offset + 0, depth)?;
2413 Ok(())
2414 }
2415 }
2416
2417 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2418 for L2capParametersExtRequestParametersResponse
2419 {
2420 #[inline(always)]
2421 fn new_empty() -> Self {
2422 Self { new: fidl::new_empty!(fidl_fuchsia_bluetooth__common::ChannelParameters, D) }
2423 }
2424
2425 #[inline]
2426 unsafe fn decode(
2427 &mut self,
2428 decoder: &mut fidl::encoding::Decoder<'_, D>,
2429 offset: usize,
2430 _depth: fidl::encoding::Depth,
2431 ) -> fidl::Result<()> {
2432 decoder.debug_check_bounds::<Self>(offset);
2433 fidl::decode!(
2435 fidl_fuchsia_bluetooth__common::ChannelParameters,
2436 D,
2437 &mut self.new,
2438 decoder,
2439 offset + 0,
2440 _depth
2441 )?;
2442 Ok(())
2443 }
2444 }
2445
2446 impl fidl::encoding::ValueTypeMarker for ProfileConnectRequest {
2447 type Borrowed<'a> = &'a Self;
2448 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2449 value
2450 }
2451 }
2452
2453 unsafe impl fidl::encoding::TypeMarker for ProfileConnectRequest {
2454 type Owned = Self;
2455
2456 #[inline(always)]
2457 fn inline_align(_context: fidl::encoding::Context) -> usize {
2458 8
2459 }
2460
2461 #[inline(always)]
2462 fn inline_size(_context: fidl::encoding::Context) -> usize {
2463 24
2464 }
2465 }
2466
2467 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProfileConnectRequest, D>
2468 for &ProfileConnectRequest
2469 {
2470 #[inline]
2471 unsafe fn encode(
2472 self,
2473 encoder: &mut fidl::encoding::Encoder<'_, D>,
2474 offset: usize,
2475 _depth: fidl::encoding::Depth,
2476 ) -> fidl::Result<()> {
2477 encoder.debug_check_bounds::<ProfileConnectRequest>(offset);
2478 fidl::encoding::Encode::<ProfileConnectRequest, D>::encode(
2480 (
2481 <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_id),
2482 <ConnectParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.connection),
2483 ),
2484 encoder, offset, _depth
2485 )
2486 }
2487 }
2488 unsafe impl<
2489 D: fidl::encoding::ResourceDialect,
2490 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::PeerId, D>,
2491 T1: fidl::encoding::Encode<ConnectParameters, D>,
2492 > fidl::encoding::Encode<ProfileConnectRequest, D> for (T0, T1)
2493 {
2494 #[inline]
2495 unsafe fn encode(
2496 self,
2497 encoder: &mut fidl::encoding::Encoder<'_, D>,
2498 offset: usize,
2499 depth: fidl::encoding::Depth,
2500 ) -> fidl::Result<()> {
2501 encoder.debug_check_bounds::<ProfileConnectRequest>(offset);
2502 self.0.encode(encoder, offset + 0, depth)?;
2506 self.1.encode(encoder, offset + 8, depth)?;
2507 Ok(())
2508 }
2509 }
2510
2511 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProfileConnectRequest {
2512 #[inline(always)]
2513 fn new_empty() -> Self {
2514 Self {
2515 peer_id: fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D),
2516 connection: fidl::new_empty!(ConnectParameters, D),
2517 }
2518 }
2519
2520 #[inline]
2521 unsafe fn decode(
2522 &mut self,
2523 decoder: &mut fidl::encoding::Decoder<'_, D>,
2524 offset: usize,
2525 _depth: fidl::encoding::Depth,
2526 ) -> fidl::Result<()> {
2527 decoder.debug_check_bounds::<Self>(offset);
2528 fidl::decode!(
2530 fidl_fuchsia_bluetooth__common::PeerId,
2531 D,
2532 &mut self.peer_id,
2533 decoder,
2534 offset + 0,
2535 _depth
2536 )?;
2537 fidl::decode!(ConnectParameters, D, &mut self.connection, decoder, offset + 8, _depth)?;
2538 Ok(())
2539 }
2540 }
2541
2542 impl fidl::encoding::ValueTypeMarker for SearchResultsServiceFoundRequest {
2543 type Borrowed<'a> = &'a Self;
2544 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2545 value
2546 }
2547 }
2548
2549 unsafe impl fidl::encoding::TypeMarker for SearchResultsServiceFoundRequest {
2550 type Owned = Self;
2551
2552 #[inline(always)]
2553 fn inline_align(_context: fidl::encoding::Context) -> usize {
2554 8
2555 }
2556
2557 #[inline(always)]
2558 fn inline_size(_context: fidl::encoding::Context) -> usize {
2559 40
2560 }
2561 }
2562
2563 unsafe impl<D: fidl::encoding::ResourceDialect>
2564 fidl::encoding::Encode<SearchResultsServiceFoundRequest, D>
2565 for &SearchResultsServiceFoundRequest
2566 {
2567 #[inline]
2568 unsafe fn encode(
2569 self,
2570 encoder: &mut fidl::encoding::Encoder<'_, D>,
2571 offset: usize,
2572 _depth: fidl::encoding::Depth,
2573 ) -> fidl::Result<()> {
2574 encoder.debug_check_bounds::<SearchResultsServiceFoundRequest>(offset);
2575 fidl::encoding::Encode::<SearchResultsServiceFoundRequest, D>::encode(
2577 (
2578 <fidl_fuchsia_bluetooth__common::PeerId as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_id),
2579 <fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),
2580 <fidl::encoding::Vector<Attribute, 512> as fidl::encoding::ValueTypeMarker>::borrow(&self.attributes),
2581 ),
2582 encoder, offset, _depth
2583 )
2584 }
2585 }
2586 unsafe impl<
2587 D: fidl::encoding::ResourceDialect,
2588 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::PeerId, D>,
2589 T1: fidl::encoding::Encode<
2590 fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>>,
2591 D,
2592 >,
2593 T2: fidl::encoding::Encode<fidl::encoding::Vector<Attribute, 512>, D>,
2594 > fidl::encoding::Encode<SearchResultsServiceFoundRequest, D> for (T0, T1, T2)
2595 {
2596 #[inline]
2597 unsafe fn encode(
2598 self,
2599 encoder: &mut fidl::encoding::Encoder<'_, D>,
2600 offset: usize,
2601 depth: fidl::encoding::Depth,
2602 ) -> fidl::Result<()> {
2603 encoder.debug_check_bounds::<SearchResultsServiceFoundRequest>(offset);
2604 self.0.encode(encoder, offset + 0, depth)?;
2608 self.1.encode(encoder, offset + 8, depth)?;
2609 self.2.encode(encoder, offset + 24, depth)?;
2610 Ok(())
2611 }
2612 }
2613
2614 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2615 for SearchResultsServiceFoundRequest
2616 {
2617 #[inline(always)]
2618 fn new_empty() -> Self {
2619 Self {
2620 peer_id: fidl::new_empty!(fidl_fuchsia_bluetooth__common::PeerId, D),
2621 protocol: fidl::new_empty!(
2622 fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>>,
2623 D
2624 ),
2625 attributes: fidl::new_empty!(fidl::encoding::Vector<Attribute, 512>, D),
2626 }
2627 }
2628
2629 #[inline]
2630 unsafe fn decode(
2631 &mut self,
2632 decoder: &mut fidl::encoding::Decoder<'_, D>,
2633 offset: usize,
2634 _depth: fidl::encoding::Depth,
2635 ) -> fidl::Result<()> {
2636 decoder.debug_check_bounds::<Self>(offset);
2637 fidl::decode!(
2639 fidl_fuchsia_bluetooth__common::PeerId,
2640 D,
2641 &mut self.peer_id,
2642 decoder,
2643 offset + 0,
2644 _depth
2645 )?;
2646 fidl::decode!(
2647 fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>>,
2648 D,
2649 &mut self.protocol,
2650 decoder,
2651 offset + 8,
2652 _depth
2653 )?;
2654 fidl::decode!(fidl::encoding::Vector<Attribute, 512>, D, &mut self.attributes, decoder, offset + 24, _depth)?;
2655 Ok(())
2656 }
2657 }
2658
2659 impl Attribute {
2660 #[inline(always)]
2661 fn max_ordinal_present(&self) -> u64 {
2662 if let Some(_) = self.element {
2663 return 2;
2664 }
2665 if let Some(_) = self.id {
2666 return 1;
2667 }
2668 0
2669 }
2670 }
2671
2672 impl fidl::encoding::ValueTypeMarker for Attribute {
2673 type Borrowed<'a> = &'a Self;
2674 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2675 value
2676 }
2677 }
2678
2679 unsafe impl fidl::encoding::TypeMarker for Attribute {
2680 type Owned = Self;
2681
2682 #[inline(always)]
2683 fn inline_align(_context: fidl::encoding::Context) -> usize {
2684 8
2685 }
2686
2687 #[inline(always)]
2688 fn inline_size(_context: fidl::encoding::Context) -> usize {
2689 16
2690 }
2691 }
2692
2693 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Attribute, D>
2694 for &Attribute
2695 {
2696 unsafe fn encode(
2697 self,
2698 encoder: &mut fidl::encoding::Encoder<'_, D>,
2699 offset: usize,
2700 mut depth: fidl::encoding::Depth,
2701 ) -> fidl::Result<()> {
2702 encoder.debug_check_bounds::<Attribute>(offset);
2703 let max_ordinal: u64 = self.max_ordinal_present();
2705 encoder.write_num(max_ordinal, offset);
2706 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2707 if max_ordinal == 0 {
2709 return Ok(());
2710 }
2711 depth.increment()?;
2712 let envelope_size = 8;
2713 let bytes_len = max_ordinal as usize * envelope_size;
2714 #[allow(unused_variables)]
2715 let offset = encoder.out_of_line_offset(bytes_len);
2716 let mut _prev_end_offset: usize = 0;
2717 if 1 > max_ordinal {
2718 return Ok(());
2719 }
2720
2721 let cur_offset: usize = (1 - 1) * envelope_size;
2724
2725 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2727
2728 fidl::encoding::encode_in_envelope_optional::<u16, D>(
2733 self.id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
2734 encoder,
2735 offset + cur_offset,
2736 depth,
2737 )?;
2738
2739 _prev_end_offset = cur_offset + envelope_size;
2740 if 2 > max_ordinal {
2741 return Ok(());
2742 }
2743
2744 let cur_offset: usize = (2 - 1) * envelope_size;
2747
2748 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2750
2751 fidl::encoding::encode_in_envelope_optional::<DataElement, D>(
2756 self.element.as_ref().map(<DataElement as fidl::encoding::ValueTypeMarker>::borrow),
2757 encoder,
2758 offset + cur_offset,
2759 depth,
2760 )?;
2761
2762 _prev_end_offset = cur_offset + envelope_size;
2763
2764 Ok(())
2765 }
2766 }
2767
2768 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Attribute {
2769 #[inline(always)]
2770 fn new_empty() -> Self {
2771 Self::default()
2772 }
2773
2774 unsafe fn decode(
2775 &mut self,
2776 decoder: &mut fidl::encoding::Decoder<'_, D>,
2777 offset: usize,
2778 mut depth: fidl::encoding::Depth,
2779 ) -> fidl::Result<()> {
2780 decoder.debug_check_bounds::<Self>(offset);
2781 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2782 None => return Err(fidl::Error::NotNullable),
2783 Some(len) => len,
2784 };
2785 if len == 0 {
2787 return Ok(());
2788 };
2789 depth.increment()?;
2790 let envelope_size = 8;
2791 let bytes_len = len * envelope_size;
2792 let offset = decoder.out_of_line_offset(bytes_len)?;
2793 let mut _next_ordinal_to_read = 0;
2795 let mut next_offset = offset;
2796 let end_offset = offset + bytes_len;
2797 _next_ordinal_to_read += 1;
2798 if next_offset >= end_offset {
2799 return Ok(());
2800 }
2801
2802 while _next_ordinal_to_read < 1 {
2804 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2805 _next_ordinal_to_read += 1;
2806 next_offset += envelope_size;
2807 }
2808
2809 let next_out_of_line = decoder.next_out_of_line();
2810 let handles_before = decoder.remaining_handles();
2811 if let Some((inlined, num_bytes, num_handles)) =
2812 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2813 {
2814 let member_inline_size =
2815 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2816 if inlined != (member_inline_size <= 4) {
2817 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2818 }
2819 let inner_offset;
2820 let mut inner_depth = depth.clone();
2821 if inlined {
2822 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2823 inner_offset = next_offset;
2824 } else {
2825 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2826 inner_depth.increment()?;
2827 }
2828 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u16, D));
2829 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
2830 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2831 {
2832 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2833 }
2834 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2835 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2836 }
2837 }
2838
2839 next_offset += envelope_size;
2840 _next_ordinal_to_read += 1;
2841 if next_offset >= end_offset {
2842 return Ok(());
2843 }
2844
2845 while _next_ordinal_to_read < 2 {
2847 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2848 _next_ordinal_to_read += 1;
2849 next_offset += envelope_size;
2850 }
2851
2852 let next_out_of_line = decoder.next_out_of_line();
2853 let handles_before = decoder.remaining_handles();
2854 if let Some((inlined, num_bytes, num_handles)) =
2855 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2856 {
2857 let member_inline_size =
2858 <DataElement as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2859 if inlined != (member_inline_size <= 4) {
2860 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2861 }
2862 let inner_offset;
2863 let mut inner_depth = depth.clone();
2864 if inlined {
2865 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2866 inner_offset = next_offset;
2867 } else {
2868 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2869 inner_depth.increment()?;
2870 }
2871 let val_ref = self.element.get_or_insert_with(|| fidl::new_empty!(DataElement, D));
2872 fidl::decode!(DataElement, D, val_ref, decoder, inner_offset, inner_depth)?;
2873 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2874 {
2875 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2876 }
2877 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2878 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2879 }
2880 }
2881
2882 next_offset += envelope_size;
2883
2884 while next_offset < end_offset {
2886 _next_ordinal_to_read += 1;
2887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2888 next_offset += envelope_size;
2889 }
2890
2891 Ok(())
2892 }
2893 }
2894
2895 impl AudioAacSupport {
2896 #[inline(always)]
2897 fn max_ordinal_present(&self) -> u64 {
2898 0
2899 }
2900 }
2901
2902 impl fidl::encoding::ValueTypeMarker for AudioAacSupport {
2903 type Borrowed<'a> = &'a Self;
2904 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2905 value
2906 }
2907 }
2908
2909 unsafe impl fidl::encoding::TypeMarker for AudioAacSupport {
2910 type Owned = Self;
2911
2912 #[inline(always)]
2913 fn inline_align(_context: fidl::encoding::Context) -> usize {
2914 8
2915 }
2916
2917 #[inline(always)]
2918 fn inline_size(_context: fidl::encoding::Context) -> usize {
2919 16
2920 }
2921 }
2922
2923 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioAacSupport, D>
2924 for &AudioAacSupport
2925 {
2926 unsafe fn encode(
2927 self,
2928 encoder: &mut fidl::encoding::Encoder<'_, D>,
2929 offset: usize,
2930 mut depth: fidl::encoding::Depth,
2931 ) -> fidl::Result<()> {
2932 encoder.debug_check_bounds::<AudioAacSupport>(offset);
2933 let max_ordinal: u64 = self.max_ordinal_present();
2935 encoder.write_num(max_ordinal, offset);
2936 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2937 if max_ordinal == 0 {
2939 return Ok(());
2940 }
2941 depth.increment()?;
2942 let envelope_size = 8;
2943 let bytes_len = max_ordinal as usize * envelope_size;
2944 #[allow(unused_variables)]
2945 let offset = encoder.out_of_line_offset(bytes_len);
2946 let mut _prev_end_offset: usize = 0;
2947
2948 Ok(())
2949 }
2950 }
2951
2952 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioAacSupport {
2953 #[inline(always)]
2954 fn new_empty() -> Self {
2955 Self::default()
2956 }
2957
2958 unsafe fn decode(
2959 &mut self,
2960 decoder: &mut fidl::encoding::Decoder<'_, D>,
2961 offset: usize,
2962 mut depth: fidl::encoding::Depth,
2963 ) -> fidl::Result<()> {
2964 decoder.debug_check_bounds::<Self>(offset);
2965 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2966 None => return Err(fidl::Error::NotNullable),
2967 Some(len) => len,
2968 };
2969 if len == 0 {
2971 return Ok(());
2972 };
2973 depth.increment()?;
2974 let envelope_size = 8;
2975 let bytes_len = len * envelope_size;
2976 let offset = decoder.out_of_line_offset(bytes_len)?;
2977 let mut _next_ordinal_to_read = 0;
2979 let mut next_offset = offset;
2980 let end_offset = offset + bytes_len;
2981
2982 while next_offset < end_offset {
2984 _next_ordinal_to_read += 1;
2985 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2986 next_offset += envelope_size;
2987 }
2988
2989 Ok(())
2990 }
2991 }
2992
2993 impl AudioOffloadConfiguration {
2994 #[inline(always)]
2995 fn max_ordinal_present(&self) -> u64 {
2996 if let Some(_) = self.encoder_settings {
2997 return 8;
2998 }
2999 if let Some(_) = self.encoded_bit_rate {
3000 return 7;
3001 }
3002 if let Some(_) = self.channel_mode {
3003 return 6;
3004 }
3005 if let Some(_) = self.bits_per_sample {
3006 return 5;
3007 }
3008 if let Some(_) = self.sampling_frequency {
3009 return 4;
3010 }
3011 if let Some(_) = self.scms_t_enable {
3012 return 3;
3013 }
3014 if let Some(_) = self.max_latency {
3015 return 2;
3016 }
3017 if let Some(_) = self.codec {
3018 return 1;
3019 }
3020 0
3021 }
3022 }
3023
3024 impl fidl::encoding::ValueTypeMarker for AudioOffloadConfiguration {
3025 type Borrowed<'a> = &'a Self;
3026 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3027 value
3028 }
3029 }
3030
3031 unsafe impl fidl::encoding::TypeMarker for AudioOffloadConfiguration {
3032 type Owned = Self;
3033
3034 #[inline(always)]
3035 fn inline_align(_context: fidl::encoding::Context) -> usize {
3036 8
3037 }
3038
3039 #[inline(always)]
3040 fn inline_size(_context: fidl::encoding::Context) -> usize {
3041 16
3042 }
3043 }
3044
3045 unsafe impl<D: fidl::encoding::ResourceDialect>
3046 fidl::encoding::Encode<AudioOffloadConfiguration, D> for &AudioOffloadConfiguration
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::<AudioOffloadConfiguration>(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::<AudioOffloadFeatures, D>(
3085 self.codec
3086 .as_ref()
3087 .map(<AudioOffloadFeatures as fidl::encoding::ValueTypeMarker>::borrow),
3088 encoder,
3089 offset + cur_offset,
3090 depth,
3091 )?;
3092
3093 _prev_end_offset = cur_offset + envelope_size;
3094 if 2 > max_ordinal {
3095 return Ok(());
3096 }
3097
3098 let cur_offset: usize = (2 - 1) * envelope_size;
3101
3102 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3104
3105 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3110 self.max_latency.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3111 encoder,
3112 offset + cur_offset,
3113 depth,
3114 )?;
3115
3116 _prev_end_offset = cur_offset + envelope_size;
3117 if 3 > max_ordinal {
3118 return Ok(());
3119 }
3120
3121 let cur_offset: usize = (3 - 1) * envelope_size;
3124
3125 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3127
3128 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3133 self.scms_t_enable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3134 encoder,
3135 offset + cur_offset,
3136 depth,
3137 )?;
3138
3139 _prev_end_offset = cur_offset + envelope_size;
3140 if 4 > max_ordinal {
3141 return Ok(());
3142 }
3143
3144 let cur_offset: usize = (4 - 1) * envelope_size;
3147
3148 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3150
3151 fidl::encoding::encode_in_envelope_optional::<AudioSamplingFrequency, D>(
3156 self.sampling_frequency
3157 .as_ref()
3158 .map(<AudioSamplingFrequency as fidl::encoding::ValueTypeMarker>::borrow),
3159 encoder,
3160 offset + cur_offset,
3161 depth,
3162 )?;
3163
3164 _prev_end_offset = cur_offset + envelope_size;
3165 if 5 > max_ordinal {
3166 return Ok(());
3167 }
3168
3169 let cur_offset: usize = (5 - 1) * envelope_size;
3172
3173 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3175
3176 fidl::encoding::encode_in_envelope_optional::<AudioBitsPerSample, D>(
3181 self.bits_per_sample
3182 .as_ref()
3183 .map(<AudioBitsPerSample as fidl::encoding::ValueTypeMarker>::borrow),
3184 encoder,
3185 offset + cur_offset,
3186 depth,
3187 )?;
3188
3189 _prev_end_offset = cur_offset + envelope_size;
3190 if 6 > max_ordinal {
3191 return Ok(());
3192 }
3193
3194 let cur_offset: usize = (6 - 1) * envelope_size;
3197
3198 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3200
3201 fidl::encoding::encode_in_envelope_optional::<AudioChannelMode, D>(
3206 self.channel_mode
3207 .as_ref()
3208 .map(<AudioChannelMode as fidl::encoding::ValueTypeMarker>::borrow),
3209 encoder,
3210 offset + cur_offset,
3211 depth,
3212 )?;
3213
3214 _prev_end_offset = cur_offset + envelope_size;
3215 if 7 > max_ordinal {
3216 return Ok(());
3217 }
3218
3219 let cur_offset: usize = (7 - 1) * envelope_size;
3222
3223 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3225
3226 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3231 self.encoded_bit_rate
3232 .as_ref()
3233 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3234 encoder,
3235 offset + cur_offset,
3236 depth,
3237 )?;
3238
3239 _prev_end_offset = cur_offset + envelope_size;
3240 if 8 > max_ordinal {
3241 return Ok(());
3242 }
3243
3244 let cur_offset: usize = (8 - 1) * envelope_size;
3247
3248 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3250
3251 fidl::encoding::encode_in_envelope_optional::<AudioEncoderSettings, D>(
3256 self.encoder_settings
3257 .as_ref()
3258 .map(<AudioEncoderSettings as fidl::encoding::ValueTypeMarker>::borrow),
3259 encoder,
3260 offset + cur_offset,
3261 depth,
3262 )?;
3263
3264 _prev_end_offset = cur_offset + envelope_size;
3265
3266 Ok(())
3267 }
3268 }
3269
3270 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3271 for AudioOffloadConfiguration
3272 {
3273 #[inline(always)]
3274 fn new_empty() -> Self {
3275 Self::default()
3276 }
3277
3278 unsafe fn decode(
3279 &mut self,
3280 decoder: &mut fidl::encoding::Decoder<'_, D>,
3281 offset: usize,
3282 mut depth: fidl::encoding::Depth,
3283 ) -> fidl::Result<()> {
3284 decoder.debug_check_bounds::<Self>(offset);
3285 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3286 None => return Err(fidl::Error::NotNullable),
3287 Some(len) => len,
3288 };
3289 if len == 0 {
3291 return Ok(());
3292 };
3293 depth.increment()?;
3294 let envelope_size = 8;
3295 let bytes_len = len * envelope_size;
3296 let offset = decoder.out_of_line_offset(bytes_len)?;
3297 let mut _next_ordinal_to_read = 0;
3299 let mut next_offset = offset;
3300 let end_offset = offset + bytes_len;
3301 _next_ordinal_to_read += 1;
3302 if next_offset >= end_offset {
3303 return Ok(());
3304 }
3305
3306 while _next_ordinal_to_read < 1 {
3308 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3309 _next_ordinal_to_read += 1;
3310 next_offset += envelope_size;
3311 }
3312
3313 let next_out_of_line = decoder.next_out_of_line();
3314 let handles_before = decoder.remaining_handles();
3315 if let Some((inlined, num_bytes, num_handles)) =
3316 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3317 {
3318 let member_inline_size =
3319 <AudioOffloadFeatures as fidl::encoding::TypeMarker>::inline_size(
3320 decoder.context,
3321 );
3322 if inlined != (member_inline_size <= 4) {
3323 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3324 }
3325 let inner_offset;
3326 let mut inner_depth = depth.clone();
3327 if inlined {
3328 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3329 inner_offset = next_offset;
3330 } else {
3331 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3332 inner_depth.increment()?;
3333 }
3334 let val_ref =
3335 self.codec.get_or_insert_with(|| fidl::new_empty!(AudioOffloadFeatures, D));
3336 fidl::decode!(
3337 AudioOffloadFeatures,
3338 D,
3339 val_ref,
3340 decoder,
3341 inner_offset,
3342 inner_depth
3343 )?;
3344 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3345 {
3346 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3347 }
3348 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3349 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3350 }
3351 }
3352
3353 next_offset += envelope_size;
3354 _next_ordinal_to_read += 1;
3355 if next_offset >= end_offset {
3356 return Ok(());
3357 }
3358
3359 while _next_ordinal_to_read < 2 {
3361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3362 _next_ordinal_to_read += 1;
3363 next_offset += envelope_size;
3364 }
3365
3366 let next_out_of_line = decoder.next_out_of_line();
3367 let handles_before = decoder.remaining_handles();
3368 if let Some((inlined, num_bytes, num_handles)) =
3369 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3370 {
3371 let member_inline_size =
3372 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3373 if inlined != (member_inline_size <= 4) {
3374 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3375 }
3376 let inner_offset;
3377 let mut inner_depth = depth.clone();
3378 if inlined {
3379 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3380 inner_offset = next_offset;
3381 } else {
3382 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3383 inner_depth.increment()?;
3384 }
3385 let val_ref = self.max_latency.get_or_insert_with(|| fidl::new_empty!(u16, D));
3386 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3387 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3388 {
3389 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3390 }
3391 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3392 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3393 }
3394 }
3395
3396 next_offset += envelope_size;
3397 _next_ordinal_to_read += 1;
3398 if next_offset >= end_offset {
3399 return Ok(());
3400 }
3401
3402 while _next_ordinal_to_read < 3 {
3404 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3405 _next_ordinal_to_read += 1;
3406 next_offset += envelope_size;
3407 }
3408
3409 let next_out_of_line = decoder.next_out_of_line();
3410 let handles_before = decoder.remaining_handles();
3411 if let Some((inlined, num_bytes, num_handles)) =
3412 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3413 {
3414 let member_inline_size =
3415 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3416 if inlined != (member_inline_size <= 4) {
3417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3418 }
3419 let inner_offset;
3420 let mut inner_depth = depth.clone();
3421 if inlined {
3422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3423 inner_offset = next_offset;
3424 } else {
3425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3426 inner_depth.increment()?;
3427 }
3428 let val_ref = self.scms_t_enable.get_or_insert_with(|| fidl::new_empty!(bool, D));
3429 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3430 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3431 {
3432 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3433 }
3434 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3435 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3436 }
3437 }
3438
3439 next_offset += envelope_size;
3440 _next_ordinal_to_read += 1;
3441 if next_offset >= end_offset {
3442 return Ok(());
3443 }
3444
3445 while _next_ordinal_to_read < 4 {
3447 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3448 _next_ordinal_to_read += 1;
3449 next_offset += envelope_size;
3450 }
3451
3452 let next_out_of_line = decoder.next_out_of_line();
3453 let handles_before = decoder.remaining_handles();
3454 if let Some((inlined, num_bytes, num_handles)) =
3455 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3456 {
3457 let member_inline_size =
3458 <AudioSamplingFrequency as fidl::encoding::TypeMarker>::inline_size(
3459 decoder.context,
3460 );
3461 if inlined != (member_inline_size <= 4) {
3462 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3463 }
3464 let inner_offset;
3465 let mut inner_depth = depth.clone();
3466 if inlined {
3467 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3468 inner_offset = next_offset;
3469 } else {
3470 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3471 inner_depth.increment()?;
3472 }
3473 let val_ref = self
3474 .sampling_frequency
3475 .get_or_insert_with(|| fidl::new_empty!(AudioSamplingFrequency, D));
3476 fidl::decode!(
3477 AudioSamplingFrequency,
3478 D,
3479 val_ref,
3480 decoder,
3481 inner_offset,
3482 inner_depth
3483 )?;
3484 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3485 {
3486 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3487 }
3488 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3489 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3490 }
3491 }
3492
3493 next_offset += envelope_size;
3494 _next_ordinal_to_read += 1;
3495 if next_offset >= end_offset {
3496 return Ok(());
3497 }
3498
3499 while _next_ordinal_to_read < 5 {
3501 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3502 _next_ordinal_to_read += 1;
3503 next_offset += envelope_size;
3504 }
3505
3506 let next_out_of_line = decoder.next_out_of_line();
3507 let handles_before = decoder.remaining_handles();
3508 if let Some((inlined, num_bytes, num_handles)) =
3509 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3510 {
3511 let member_inline_size =
3512 <AudioBitsPerSample as fidl::encoding::TypeMarker>::inline_size(
3513 decoder.context,
3514 );
3515 if inlined != (member_inline_size <= 4) {
3516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3517 }
3518 let inner_offset;
3519 let mut inner_depth = depth.clone();
3520 if inlined {
3521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3522 inner_offset = next_offset;
3523 } else {
3524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3525 inner_depth.increment()?;
3526 }
3527 let val_ref = self
3528 .bits_per_sample
3529 .get_or_insert_with(|| fidl::new_empty!(AudioBitsPerSample, D));
3530 fidl::decode!(AudioBitsPerSample, D, val_ref, decoder, inner_offset, inner_depth)?;
3531 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3532 {
3533 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3534 }
3535 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3536 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3537 }
3538 }
3539
3540 next_offset += envelope_size;
3541 _next_ordinal_to_read += 1;
3542 if next_offset >= end_offset {
3543 return Ok(());
3544 }
3545
3546 while _next_ordinal_to_read < 6 {
3548 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3549 _next_ordinal_to_read += 1;
3550 next_offset += envelope_size;
3551 }
3552
3553 let next_out_of_line = decoder.next_out_of_line();
3554 let handles_before = decoder.remaining_handles();
3555 if let Some((inlined, num_bytes, num_handles)) =
3556 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3557 {
3558 let member_inline_size =
3559 <AudioChannelMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3560 if inlined != (member_inline_size <= 4) {
3561 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3562 }
3563 let inner_offset;
3564 let mut inner_depth = depth.clone();
3565 if inlined {
3566 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3567 inner_offset = next_offset;
3568 } else {
3569 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3570 inner_depth.increment()?;
3571 }
3572 let val_ref =
3573 self.channel_mode.get_or_insert_with(|| fidl::new_empty!(AudioChannelMode, D));
3574 fidl::decode!(AudioChannelMode, D, val_ref, decoder, inner_offset, inner_depth)?;
3575 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3576 {
3577 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3578 }
3579 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3580 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3581 }
3582 }
3583
3584 next_offset += envelope_size;
3585 _next_ordinal_to_read += 1;
3586 if next_offset >= end_offset {
3587 return Ok(());
3588 }
3589
3590 while _next_ordinal_to_read < 7 {
3592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3593 _next_ordinal_to_read += 1;
3594 next_offset += envelope_size;
3595 }
3596
3597 let next_out_of_line = decoder.next_out_of_line();
3598 let handles_before = decoder.remaining_handles();
3599 if let Some((inlined, num_bytes, num_handles)) =
3600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3601 {
3602 let member_inline_size =
3603 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3604 if inlined != (member_inline_size <= 4) {
3605 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3606 }
3607 let inner_offset;
3608 let mut inner_depth = depth.clone();
3609 if inlined {
3610 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3611 inner_offset = next_offset;
3612 } else {
3613 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3614 inner_depth.increment()?;
3615 }
3616 let val_ref = self.encoded_bit_rate.get_or_insert_with(|| fidl::new_empty!(u32, D));
3617 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3618 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3619 {
3620 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3621 }
3622 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3623 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3624 }
3625 }
3626
3627 next_offset += envelope_size;
3628 _next_ordinal_to_read += 1;
3629 if next_offset >= end_offset {
3630 return Ok(());
3631 }
3632
3633 while _next_ordinal_to_read < 8 {
3635 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3636 _next_ordinal_to_read += 1;
3637 next_offset += envelope_size;
3638 }
3639
3640 let next_out_of_line = decoder.next_out_of_line();
3641 let handles_before = decoder.remaining_handles();
3642 if let Some((inlined, num_bytes, num_handles)) =
3643 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3644 {
3645 let member_inline_size =
3646 <AudioEncoderSettings as fidl::encoding::TypeMarker>::inline_size(
3647 decoder.context,
3648 );
3649 if inlined != (member_inline_size <= 4) {
3650 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3651 }
3652 let inner_offset;
3653 let mut inner_depth = depth.clone();
3654 if inlined {
3655 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3656 inner_offset = next_offset;
3657 } else {
3658 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3659 inner_depth.increment()?;
3660 }
3661 let val_ref = self
3662 .encoder_settings
3663 .get_or_insert_with(|| fidl::new_empty!(AudioEncoderSettings, D));
3664 fidl::decode!(
3665 AudioEncoderSettings,
3666 D,
3667 val_ref,
3668 decoder,
3669 inner_offset,
3670 inner_depth
3671 )?;
3672 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3673 {
3674 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3675 }
3676 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3677 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3678 }
3679 }
3680
3681 next_offset += envelope_size;
3682
3683 while next_offset < end_offset {
3685 _next_ordinal_to_read += 1;
3686 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3687 next_offset += envelope_size;
3688 }
3689
3690 Ok(())
3691 }
3692 }
3693
3694 impl AudioOffloadExtGetSupportedFeaturesResponse {
3695 #[inline(always)]
3696 fn max_ordinal_present(&self) -> u64 {
3697 if let Some(_) = self.audio_offload_features {
3698 return 1;
3699 }
3700 0
3701 }
3702 }
3703
3704 impl fidl::encoding::ValueTypeMarker for AudioOffloadExtGetSupportedFeaturesResponse {
3705 type Borrowed<'a> = &'a Self;
3706 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3707 value
3708 }
3709 }
3710
3711 unsafe impl fidl::encoding::TypeMarker for AudioOffloadExtGetSupportedFeaturesResponse {
3712 type Owned = Self;
3713
3714 #[inline(always)]
3715 fn inline_align(_context: fidl::encoding::Context) -> usize {
3716 8
3717 }
3718
3719 #[inline(always)]
3720 fn inline_size(_context: fidl::encoding::Context) -> usize {
3721 16
3722 }
3723 }
3724
3725 unsafe impl<D: fidl::encoding::ResourceDialect>
3726 fidl::encoding::Encode<AudioOffloadExtGetSupportedFeaturesResponse, D>
3727 for &AudioOffloadExtGetSupportedFeaturesResponse
3728 {
3729 unsafe fn encode(
3730 self,
3731 encoder: &mut fidl::encoding::Encoder<'_, D>,
3732 offset: usize,
3733 mut depth: fidl::encoding::Depth,
3734 ) -> fidl::Result<()> {
3735 encoder.debug_check_bounds::<AudioOffloadExtGetSupportedFeaturesResponse>(offset);
3736 let max_ordinal: u64 = self.max_ordinal_present();
3738 encoder.write_num(max_ordinal, offset);
3739 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3740 if max_ordinal == 0 {
3742 return Ok(());
3743 }
3744 depth.increment()?;
3745 let envelope_size = 8;
3746 let bytes_len = max_ordinal as usize * envelope_size;
3747 #[allow(unused_variables)]
3748 let offset = encoder.out_of_line_offset(bytes_len);
3749 let mut _prev_end_offset: usize = 0;
3750 if 1 > max_ordinal {
3751 return Ok(());
3752 }
3753
3754 let cur_offset: usize = (1 - 1) * envelope_size;
3757
3758 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3760
3761 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AudioOffloadFeatures>, D>(
3766 self.audio_offload_features.as_ref().map(<fidl::encoding::UnboundedVector<AudioOffloadFeatures> as fidl::encoding::ValueTypeMarker>::borrow),
3767 encoder, offset + cur_offset, depth
3768 )?;
3769
3770 _prev_end_offset = cur_offset + envelope_size;
3771
3772 Ok(())
3773 }
3774 }
3775
3776 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3777 for AudioOffloadExtGetSupportedFeaturesResponse
3778 {
3779 #[inline(always)]
3780 fn new_empty() -> Self {
3781 Self::default()
3782 }
3783
3784 unsafe fn decode(
3785 &mut self,
3786 decoder: &mut fidl::encoding::Decoder<'_, D>,
3787 offset: usize,
3788 mut depth: fidl::encoding::Depth,
3789 ) -> fidl::Result<()> {
3790 decoder.debug_check_bounds::<Self>(offset);
3791 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3792 None => return Err(fidl::Error::NotNullable),
3793 Some(len) => len,
3794 };
3795 if len == 0 {
3797 return Ok(());
3798 };
3799 depth.increment()?;
3800 let envelope_size = 8;
3801 let bytes_len = len * envelope_size;
3802 let offset = decoder.out_of_line_offset(bytes_len)?;
3803 let mut _next_ordinal_to_read = 0;
3805 let mut next_offset = offset;
3806 let end_offset = offset + bytes_len;
3807 _next_ordinal_to_read += 1;
3808 if next_offset >= end_offset {
3809 return Ok(());
3810 }
3811
3812 while _next_ordinal_to_read < 1 {
3814 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3815 _next_ordinal_to_read += 1;
3816 next_offset += envelope_size;
3817 }
3818
3819 let next_out_of_line = decoder.next_out_of_line();
3820 let handles_before = decoder.remaining_handles();
3821 if let Some((inlined, num_bytes, num_handles)) =
3822 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3823 {
3824 let member_inline_size = <fidl::encoding::UnboundedVector<AudioOffloadFeatures> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3825 if inlined != (member_inline_size <= 4) {
3826 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3827 }
3828 let inner_offset;
3829 let mut inner_depth = depth.clone();
3830 if inlined {
3831 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3832 inner_offset = next_offset;
3833 } else {
3834 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3835 inner_depth.increment()?;
3836 }
3837 let val_ref = self.audio_offload_features.get_or_insert_with(|| {
3838 fidl::new_empty!(fidl::encoding::UnboundedVector<AudioOffloadFeatures>, D)
3839 });
3840 fidl::decode!(
3841 fidl::encoding::UnboundedVector<AudioOffloadFeatures>,
3842 D,
3843 val_ref,
3844 decoder,
3845 inner_offset,
3846 inner_depth
3847 )?;
3848 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3849 {
3850 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3851 }
3852 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3853 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3854 }
3855 }
3856
3857 next_offset += envelope_size;
3858
3859 while next_offset < end_offset {
3861 _next_ordinal_to_read += 1;
3862 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3863 next_offset += envelope_size;
3864 }
3865
3866 Ok(())
3867 }
3868 }
3869
3870 impl AudioSbcSupport {
3871 #[inline(always)]
3872 fn max_ordinal_present(&self) -> u64 {
3873 0
3874 }
3875 }
3876
3877 impl fidl::encoding::ValueTypeMarker for AudioSbcSupport {
3878 type Borrowed<'a> = &'a Self;
3879 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3880 value
3881 }
3882 }
3883
3884 unsafe impl fidl::encoding::TypeMarker for AudioSbcSupport {
3885 type Owned = Self;
3886
3887 #[inline(always)]
3888 fn inline_align(_context: fidl::encoding::Context) -> usize {
3889 8
3890 }
3891
3892 #[inline(always)]
3893 fn inline_size(_context: fidl::encoding::Context) -> usize {
3894 16
3895 }
3896 }
3897
3898 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioSbcSupport, D>
3899 for &AudioSbcSupport
3900 {
3901 unsafe fn encode(
3902 self,
3903 encoder: &mut fidl::encoding::Encoder<'_, D>,
3904 offset: usize,
3905 mut depth: fidl::encoding::Depth,
3906 ) -> fidl::Result<()> {
3907 encoder.debug_check_bounds::<AudioSbcSupport>(offset);
3908 let max_ordinal: u64 = self.max_ordinal_present();
3910 encoder.write_num(max_ordinal, offset);
3911 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3912 if max_ordinal == 0 {
3914 return Ok(());
3915 }
3916 depth.increment()?;
3917 let envelope_size = 8;
3918 let bytes_len = max_ordinal as usize * envelope_size;
3919 #[allow(unused_variables)]
3920 let offset = encoder.out_of_line_offset(bytes_len);
3921 let mut _prev_end_offset: usize = 0;
3922
3923 Ok(())
3924 }
3925 }
3926
3927 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioSbcSupport {
3928 #[inline(always)]
3929 fn new_empty() -> Self {
3930 Self::default()
3931 }
3932
3933 unsafe fn decode(
3934 &mut self,
3935 decoder: &mut fidl::encoding::Decoder<'_, D>,
3936 offset: usize,
3937 mut depth: fidl::encoding::Depth,
3938 ) -> fidl::Result<()> {
3939 decoder.debug_check_bounds::<Self>(offset);
3940 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3941 None => return Err(fidl::Error::NotNullable),
3942 Some(len) => len,
3943 };
3944 if len == 0 {
3946 return Ok(());
3947 };
3948 depth.increment()?;
3949 let envelope_size = 8;
3950 let bytes_len = len * envelope_size;
3951 let offset = decoder.out_of_line_offset(bytes_len)?;
3952 let mut _next_ordinal_to_read = 0;
3954 let mut next_offset = offset;
3955 let end_offset = offset + bytes_len;
3956
3957 while next_offset < end_offset {
3959 _next_ordinal_to_read += 1;
3960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3961 next_offset += envelope_size;
3962 }
3963
3964 Ok(())
3965 }
3966 }
3967
3968 impl Information {
3969 #[inline(always)]
3970 fn max_ordinal_present(&self) -> u64 {
3971 if let Some(_) = self.provider {
3972 return 4;
3973 }
3974 if let Some(_) = self.description {
3975 return 3;
3976 }
3977 if let Some(_) = self.name {
3978 return 2;
3979 }
3980 if let Some(_) = self.language {
3981 return 1;
3982 }
3983 0
3984 }
3985 }
3986
3987 impl fidl::encoding::ValueTypeMarker for Information {
3988 type Borrowed<'a> = &'a Self;
3989 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3990 value
3991 }
3992 }
3993
3994 unsafe impl fidl::encoding::TypeMarker for Information {
3995 type Owned = Self;
3996
3997 #[inline(always)]
3998 fn inline_align(_context: fidl::encoding::Context) -> usize {
3999 8
4000 }
4001
4002 #[inline(always)]
4003 fn inline_size(_context: fidl::encoding::Context) -> usize {
4004 16
4005 }
4006 }
4007
4008 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Information, D>
4009 for &Information
4010 {
4011 unsafe fn encode(
4012 self,
4013 encoder: &mut fidl::encoding::Encoder<'_, D>,
4014 offset: usize,
4015 mut depth: fidl::encoding::Depth,
4016 ) -> fidl::Result<()> {
4017 encoder.debug_check_bounds::<Information>(offset);
4018 let max_ordinal: u64 = self.max_ordinal_present();
4020 encoder.write_num(max_ordinal, offset);
4021 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4022 if max_ordinal == 0 {
4024 return Ok(());
4025 }
4026 depth.increment()?;
4027 let envelope_size = 8;
4028 let bytes_len = max_ordinal as usize * envelope_size;
4029 #[allow(unused_variables)]
4030 let offset = encoder.out_of_line_offset(bytes_len);
4031 let mut _prev_end_offset: usize = 0;
4032 if 1 > max_ordinal {
4033 return Ok(());
4034 }
4035
4036 let cur_offset: usize = (1 - 1) * envelope_size;
4039
4040 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4042
4043 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2>, D>(
4048 self.language.as_ref().map(
4049 <fidl::encoding::BoundedString<2> as fidl::encoding::ValueTypeMarker>::borrow,
4050 ),
4051 encoder,
4052 offset + cur_offset,
4053 depth,
4054 )?;
4055
4056 _prev_end_offset = cur_offset + envelope_size;
4057 if 2 > max_ordinal {
4058 return Ok(());
4059 }
4060
4061 let cur_offset: usize = (2 - 1) * envelope_size;
4064
4065 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4067
4068 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4073 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4074 encoder, offset + cur_offset, depth
4075 )?;
4076
4077 _prev_end_offset = cur_offset + envelope_size;
4078 if 3 > max_ordinal {
4079 return Ok(());
4080 }
4081
4082 let cur_offset: usize = (3 - 1) * envelope_size;
4085
4086 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4088
4089 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4094 self.description.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4095 encoder, offset + cur_offset, depth
4096 )?;
4097
4098 _prev_end_offset = cur_offset + envelope_size;
4099 if 4 > max_ordinal {
4100 return Ok(());
4101 }
4102
4103 let cur_offset: usize = (4 - 1) * envelope_size;
4106
4107 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4109
4110 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4115 self.provider.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4116 encoder, offset + cur_offset, depth
4117 )?;
4118
4119 _prev_end_offset = cur_offset + envelope_size;
4120
4121 Ok(())
4122 }
4123 }
4124
4125 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Information {
4126 #[inline(always)]
4127 fn new_empty() -> Self {
4128 Self::default()
4129 }
4130
4131 unsafe fn decode(
4132 &mut self,
4133 decoder: &mut fidl::encoding::Decoder<'_, D>,
4134 offset: usize,
4135 mut depth: fidl::encoding::Depth,
4136 ) -> fidl::Result<()> {
4137 decoder.debug_check_bounds::<Self>(offset);
4138 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4139 None => return Err(fidl::Error::NotNullable),
4140 Some(len) => len,
4141 };
4142 if len == 0 {
4144 return Ok(());
4145 };
4146 depth.increment()?;
4147 let envelope_size = 8;
4148 let bytes_len = len * envelope_size;
4149 let offset = decoder.out_of_line_offset(bytes_len)?;
4150 let mut _next_ordinal_to_read = 0;
4152 let mut next_offset = offset;
4153 let end_offset = offset + bytes_len;
4154 _next_ordinal_to_read += 1;
4155 if next_offset >= end_offset {
4156 return Ok(());
4157 }
4158
4159 while _next_ordinal_to_read < 1 {
4161 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4162 _next_ordinal_to_read += 1;
4163 next_offset += envelope_size;
4164 }
4165
4166 let next_out_of_line = decoder.next_out_of_line();
4167 let handles_before = decoder.remaining_handles();
4168 if let Some((inlined, num_bytes, num_handles)) =
4169 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4170 {
4171 let member_inline_size =
4172 <fidl::encoding::BoundedString<2> as fidl::encoding::TypeMarker>::inline_size(
4173 decoder.context,
4174 );
4175 if inlined != (member_inline_size <= 4) {
4176 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4177 }
4178 let inner_offset;
4179 let mut inner_depth = depth.clone();
4180 if inlined {
4181 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4182 inner_offset = next_offset;
4183 } else {
4184 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4185 inner_depth.increment()?;
4186 }
4187 let val_ref = self
4188 .language
4189 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<2>, D));
4190 fidl::decode!(
4191 fidl::encoding::BoundedString<2>,
4192 D,
4193 val_ref,
4194 decoder,
4195 inner_offset,
4196 inner_depth
4197 )?;
4198 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4199 {
4200 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4201 }
4202 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4203 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4204 }
4205 }
4206
4207 next_offset += envelope_size;
4208 _next_ordinal_to_read += 1;
4209 if next_offset >= end_offset {
4210 return Ok(());
4211 }
4212
4213 while _next_ordinal_to_read < 2 {
4215 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4216 _next_ordinal_to_read += 1;
4217 next_offset += envelope_size;
4218 }
4219
4220 let next_out_of_line = decoder.next_out_of_line();
4221 let handles_before = decoder.remaining_handles();
4222 if let Some((inlined, num_bytes, num_handles)) =
4223 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4224 {
4225 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4226 if inlined != (member_inline_size <= 4) {
4227 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4228 }
4229 let inner_offset;
4230 let mut inner_depth = depth.clone();
4231 if inlined {
4232 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4233 inner_offset = next_offset;
4234 } else {
4235 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4236 inner_depth.increment()?;
4237 }
4238 let val_ref = self.name.get_or_insert_with(|| {
4239 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4240 });
4241 fidl::decode!(
4242 fidl::encoding::BoundedString<1024>,
4243 D,
4244 val_ref,
4245 decoder,
4246 inner_offset,
4247 inner_depth
4248 )?;
4249 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4250 {
4251 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4252 }
4253 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4254 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4255 }
4256 }
4257
4258 next_offset += envelope_size;
4259 _next_ordinal_to_read += 1;
4260 if next_offset >= end_offset {
4261 return Ok(());
4262 }
4263
4264 while _next_ordinal_to_read < 3 {
4266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4267 _next_ordinal_to_read += 1;
4268 next_offset += envelope_size;
4269 }
4270
4271 let next_out_of_line = decoder.next_out_of_line();
4272 let handles_before = decoder.remaining_handles();
4273 if let Some((inlined, num_bytes, num_handles)) =
4274 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4275 {
4276 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4277 if inlined != (member_inline_size <= 4) {
4278 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4279 }
4280 let inner_offset;
4281 let mut inner_depth = depth.clone();
4282 if inlined {
4283 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4284 inner_offset = next_offset;
4285 } else {
4286 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4287 inner_depth.increment()?;
4288 }
4289 let val_ref = self.description.get_or_insert_with(|| {
4290 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4291 });
4292 fidl::decode!(
4293 fidl::encoding::BoundedString<1024>,
4294 D,
4295 val_ref,
4296 decoder,
4297 inner_offset,
4298 inner_depth
4299 )?;
4300 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4301 {
4302 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4303 }
4304 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4305 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4306 }
4307 }
4308
4309 next_offset += envelope_size;
4310 _next_ordinal_to_read += 1;
4311 if next_offset >= end_offset {
4312 return Ok(());
4313 }
4314
4315 while _next_ordinal_to_read < 4 {
4317 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4318 _next_ordinal_to_read += 1;
4319 next_offset += envelope_size;
4320 }
4321
4322 let next_out_of_line = decoder.next_out_of_line();
4323 let handles_before = decoder.remaining_handles();
4324 if let Some((inlined, num_bytes, num_handles)) =
4325 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4326 {
4327 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4328 if inlined != (member_inline_size <= 4) {
4329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4330 }
4331 let inner_offset;
4332 let mut inner_depth = depth.clone();
4333 if inlined {
4334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4335 inner_offset = next_offset;
4336 } else {
4337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4338 inner_depth.increment()?;
4339 }
4340 let val_ref = self.provider.get_or_insert_with(|| {
4341 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4342 });
4343 fidl::decode!(
4344 fidl::encoding::BoundedString<1024>,
4345 D,
4346 val_ref,
4347 decoder,
4348 inner_offset,
4349 inner_depth
4350 )?;
4351 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4352 {
4353 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4354 }
4355 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4356 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4357 }
4358 }
4359
4360 next_offset += envelope_size;
4361
4362 while next_offset < end_offset {
4364 _next_ordinal_to_read += 1;
4365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4366 next_offset += envelope_size;
4367 }
4368
4369 Ok(())
4370 }
4371 }
4372
4373 impl L2capParameters {
4374 #[inline(always)]
4375 fn max_ordinal_present(&self) -> u64 {
4376 if let Some(_) = self.parameters {
4377 return 2;
4378 }
4379 if let Some(_) = self.psm {
4380 return 1;
4381 }
4382 0
4383 }
4384 }
4385
4386 impl fidl::encoding::ValueTypeMarker for L2capParameters {
4387 type Borrowed<'a> = &'a Self;
4388 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4389 value
4390 }
4391 }
4392
4393 unsafe impl fidl::encoding::TypeMarker for L2capParameters {
4394 type Owned = Self;
4395
4396 #[inline(always)]
4397 fn inline_align(_context: fidl::encoding::Context) -> usize {
4398 8
4399 }
4400
4401 #[inline(always)]
4402 fn inline_size(_context: fidl::encoding::Context) -> usize {
4403 16
4404 }
4405 }
4406
4407 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<L2capParameters, D>
4408 for &L2capParameters
4409 {
4410 unsafe fn encode(
4411 self,
4412 encoder: &mut fidl::encoding::Encoder<'_, D>,
4413 offset: usize,
4414 mut depth: fidl::encoding::Depth,
4415 ) -> fidl::Result<()> {
4416 encoder.debug_check_bounds::<L2capParameters>(offset);
4417 let max_ordinal: u64 = self.max_ordinal_present();
4419 encoder.write_num(max_ordinal, offset);
4420 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4421 if max_ordinal == 0 {
4423 return Ok(());
4424 }
4425 depth.increment()?;
4426 let envelope_size = 8;
4427 let bytes_len = max_ordinal as usize * envelope_size;
4428 #[allow(unused_variables)]
4429 let offset = encoder.out_of_line_offset(bytes_len);
4430 let mut _prev_end_offset: usize = 0;
4431 if 1 > max_ordinal {
4432 return Ok(());
4433 }
4434
4435 let cur_offset: usize = (1 - 1) * envelope_size;
4438
4439 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4441
4442 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4447 self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4448 encoder,
4449 offset + cur_offset,
4450 depth,
4451 )?;
4452
4453 _prev_end_offset = cur_offset + envelope_size;
4454 if 2 > max_ordinal {
4455 return Ok(());
4456 }
4457
4458 let cur_offset: usize = (2 - 1) * envelope_size;
4461
4462 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4464
4465 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::ChannelParameters, D>(
4470 self.parameters.as_ref().map(<fidl_fuchsia_bluetooth__common::ChannelParameters as fidl::encoding::ValueTypeMarker>::borrow),
4471 encoder, offset + cur_offset, depth
4472 )?;
4473
4474 _prev_end_offset = cur_offset + envelope_size;
4475
4476 Ok(())
4477 }
4478 }
4479
4480 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for L2capParameters {
4481 #[inline(always)]
4482 fn new_empty() -> Self {
4483 Self::default()
4484 }
4485
4486 unsafe fn decode(
4487 &mut self,
4488 decoder: &mut fidl::encoding::Decoder<'_, D>,
4489 offset: usize,
4490 mut depth: fidl::encoding::Depth,
4491 ) -> fidl::Result<()> {
4492 decoder.debug_check_bounds::<Self>(offset);
4493 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4494 None => return Err(fidl::Error::NotNullable),
4495 Some(len) => len,
4496 };
4497 if len == 0 {
4499 return Ok(());
4500 };
4501 depth.increment()?;
4502 let envelope_size = 8;
4503 let bytes_len = len * envelope_size;
4504 let offset = decoder.out_of_line_offset(bytes_len)?;
4505 let mut _next_ordinal_to_read = 0;
4507 let mut next_offset = offset;
4508 let end_offset = offset + bytes_len;
4509 _next_ordinal_to_read += 1;
4510 if next_offset >= end_offset {
4511 return Ok(());
4512 }
4513
4514 while _next_ordinal_to_read < 1 {
4516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4517 _next_ordinal_to_read += 1;
4518 next_offset += envelope_size;
4519 }
4520
4521 let next_out_of_line = decoder.next_out_of_line();
4522 let handles_before = decoder.remaining_handles();
4523 if let Some((inlined, num_bytes, num_handles)) =
4524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4525 {
4526 let member_inline_size =
4527 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4528 if inlined != (member_inline_size <= 4) {
4529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4530 }
4531 let inner_offset;
4532 let mut inner_depth = depth.clone();
4533 if inlined {
4534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4535 inner_offset = next_offset;
4536 } else {
4537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4538 inner_depth.increment()?;
4539 }
4540 let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
4541 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4542 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4543 {
4544 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4545 }
4546 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4547 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4548 }
4549 }
4550
4551 next_offset += envelope_size;
4552 _next_ordinal_to_read += 1;
4553 if next_offset >= end_offset {
4554 return Ok(());
4555 }
4556
4557 while _next_ordinal_to_read < 2 {
4559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4560 _next_ordinal_to_read += 1;
4561 next_offset += envelope_size;
4562 }
4563
4564 let next_out_of_line = decoder.next_out_of_line();
4565 let handles_before = decoder.remaining_handles();
4566 if let Some((inlined, num_bytes, num_handles)) =
4567 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4568 {
4569 let member_inline_size = <fidl_fuchsia_bluetooth__common::ChannelParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4570 if inlined != (member_inline_size <= 4) {
4571 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4572 }
4573 let inner_offset;
4574 let mut inner_depth = depth.clone();
4575 if inlined {
4576 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4577 inner_offset = next_offset;
4578 } else {
4579 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4580 inner_depth.increment()?;
4581 }
4582 let val_ref = self.parameters.get_or_insert_with(|| {
4583 fidl::new_empty!(fidl_fuchsia_bluetooth__common::ChannelParameters, D)
4584 });
4585 fidl::decode!(
4586 fidl_fuchsia_bluetooth__common::ChannelParameters,
4587 D,
4588 val_ref,
4589 decoder,
4590 inner_offset,
4591 inner_depth
4592 )?;
4593 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4594 {
4595 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4596 }
4597 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4598 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4599 }
4600 }
4601
4602 next_offset += envelope_size;
4603
4604 while next_offset < end_offset {
4606 _next_ordinal_to_read += 1;
4607 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4608 next_offset += envelope_size;
4609 }
4610
4611 Ok(())
4612 }
4613 }
4614
4615 impl ProfileDescriptor {
4616 #[inline(always)]
4617 fn max_ordinal_present(&self) -> u64 {
4618 if let Some(_) = self.minor_version {
4619 return 3;
4620 }
4621 if let Some(_) = self.major_version {
4622 return 2;
4623 }
4624 if let Some(_) = self.profile_id {
4625 return 1;
4626 }
4627 0
4628 }
4629 }
4630
4631 impl fidl::encoding::ValueTypeMarker for ProfileDescriptor {
4632 type Borrowed<'a> = &'a Self;
4633 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4634 value
4635 }
4636 }
4637
4638 unsafe impl fidl::encoding::TypeMarker for ProfileDescriptor {
4639 type Owned = Self;
4640
4641 #[inline(always)]
4642 fn inline_align(_context: fidl::encoding::Context) -> usize {
4643 8
4644 }
4645
4646 #[inline(always)]
4647 fn inline_size(_context: fidl::encoding::Context) -> usize {
4648 16
4649 }
4650 }
4651
4652 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProfileDescriptor, D>
4653 for &ProfileDescriptor
4654 {
4655 unsafe fn encode(
4656 self,
4657 encoder: &mut fidl::encoding::Encoder<'_, D>,
4658 offset: usize,
4659 mut depth: fidl::encoding::Depth,
4660 ) -> fidl::Result<()> {
4661 encoder.debug_check_bounds::<ProfileDescriptor>(offset);
4662 let max_ordinal: u64 = self.max_ordinal_present();
4664 encoder.write_num(max_ordinal, offset);
4665 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4666 if max_ordinal == 0 {
4668 return Ok(());
4669 }
4670 depth.increment()?;
4671 let envelope_size = 8;
4672 let bytes_len = max_ordinal as usize * envelope_size;
4673 #[allow(unused_variables)]
4674 let offset = encoder.out_of_line_offset(bytes_len);
4675 let mut _prev_end_offset: usize = 0;
4676 if 1 > max_ordinal {
4677 return Ok(());
4678 }
4679
4680 let cur_offset: usize = (1 - 1) * envelope_size;
4683
4684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4686
4687 fidl::encoding::encode_in_envelope_optional::<ServiceClassProfileIdentifier, D>(
4692 self.profile_id.as_ref().map(
4693 <ServiceClassProfileIdentifier as fidl::encoding::ValueTypeMarker>::borrow,
4694 ),
4695 encoder,
4696 offset + cur_offset,
4697 depth,
4698 )?;
4699
4700 _prev_end_offset = cur_offset + envelope_size;
4701 if 2 > max_ordinal {
4702 return Ok(());
4703 }
4704
4705 let cur_offset: usize = (2 - 1) * envelope_size;
4708
4709 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4711
4712 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4717 self.major_version.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4718 encoder,
4719 offset + cur_offset,
4720 depth,
4721 )?;
4722
4723 _prev_end_offset = cur_offset + envelope_size;
4724 if 3 > max_ordinal {
4725 return Ok(());
4726 }
4727
4728 let cur_offset: usize = (3 - 1) * envelope_size;
4731
4732 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4734
4735 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4740 self.minor_version.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4741 encoder,
4742 offset + cur_offset,
4743 depth,
4744 )?;
4745
4746 _prev_end_offset = cur_offset + envelope_size;
4747
4748 Ok(())
4749 }
4750 }
4751
4752 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProfileDescriptor {
4753 #[inline(always)]
4754 fn new_empty() -> Self {
4755 Self::default()
4756 }
4757
4758 unsafe fn decode(
4759 &mut self,
4760 decoder: &mut fidl::encoding::Decoder<'_, D>,
4761 offset: usize,
4762 mut depth: fidl::encoding::Depth,
4763 ) -> fidl::Result<()> {
4764 decoder.debug_check_bounds::<Self>(offset);
4765 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4766 None => return Err(fidl::Error::NotNullable),
4767 Some(len) => len,
4768 };
4769 if len == 0 {
4771 return Ok(());
4772 };
4773 depth.increment()?;
4774 let envelope_size = 8;
4775 let bytes_len = len * envelope_size;
4776 let offset = decoder.out_of_line_offset(bytes_len)?;
4777 let mut _next_ordinal_to_read = 0;
4779 let mut next_offset = offset;
4780 let end_offset = offset + bytes_len;
4781 _next_ordinal_to_read += 1;
4782 if next_offset >= end_offset {
4783 return Ok(());
4784 }
4785
4786 while _next_ordinal_to_read < 1 {
4788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4789 _next_ordinal_to_read += 1;
4790 next_offset += envelope_size;
4791 }
4792
4793 let next_out_of_line = decoder.next_out_of_line();
4794 let handles_before = decoder.remaining_handles();
4795 if let Some((inlined, num_bytes, num_handles)) =
4796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4797 {
4798 let member_inline_size =
4799 <ServiceClassProfileIdentifier as fidl::encoding::TypeMarker>::inline_size(
4800 decoder.context,
4801 );
4802 if inlined != (member_inline_size <= 4) {
4803 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4804 }
4805 let inner_offset;
4806 let mut inner_depth = depth.clone();
4807 if inlined {
4808 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4809 inner_offset = next_offset;
4810 } else {
4811 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4812 inner_depth.increment()?;
4813 }
4814 let val_ref = self
4815 .profile_id
4816 .get_or_insert_with(|| fidl::new_empty!(ServiceClassProfileIdentifier, D));
4817 fidl::decode!(
4818 ServiceClassProfileIdentifier,
4819 D,
4820 val_ref,
4821 decoder,
4822 inner_offset,
4823 inner_depth
4824 )?;
4825 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4826 {
4827 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4828 }
4829 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4830 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4831 }
4832 }
4833
4834 next_offset += envelope_size;
4835 _next_ordinal_to_read += 1;
4836 if next_offset >= end_offset {
4837 return Ok(());
4838 }
4839
4840 while _next_ordinal_to_read < 2 {
4842 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4843 _next_ordinal_to_read += 1;
4844 next_offset += envelope_size;
4845 }
4846
4847 let next_out_of_line = decoder.next_out_of_line();
4848 let handles_before = decoder.remaining_handles();
4849 if let Some((inlined, num_bytes, num_handles)) =
4850 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4851 {
4852 let member_inline_size =
4853 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4854 if inlined != (member_inline_size <= 4) {
4855 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4856 }
4857 let inner_offset;
4858 let mut inner_depth = depth.clone();
4859 if inlined {
4860 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4861 inner_offset = next_offset;
4862 } else {
4863 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4864 inner_depth.increment()?;
4865 }
4866 let val_ref = self.major_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4867 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4869 {
4870 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4871 }
4872 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4873 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4874 }
4875 }
4876
4877 next_offset += envelope_size;
4878 _next_ordinal_to_read += 1;
4879 if next_offset >= end_offset {
4880 return Ok(());
4881 }
4882
4883 while _next_ordinal_to_read < 3 {
4885 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4886 _next_ordinal_to_read += 1;
4887 next_offset += envelope_size;
4888 }
4889
4890 let next_out_of_line = decoder.next_out_of_line();
4891 let handles_before = decoder.remaining_handles();
4892 if let Some((inlined, num_bytes, num_handles)) =
4893 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4894 {
4895 let member_inline_size =
4896 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4897 if inlined != (member_inline_size <= 4) {
4898 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4899 }
4900 let inner_offset;
4901 let mut inner_depth = depth.clone();
4902 if inlined {
4903 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4904 inner_offset = next_offset;
4905 } else {
4906 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4907 inner_depth.increment()?;
4908 }
4909 let val_ref = self.minor_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4910 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4911 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4912 {
4913 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4914 }
4915 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4916 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4917 }
4918 }
4919
4920 next_offset += envelope_size;
4921
4922 while next_offset < end_offset {
4924 _next_ordinal_to_read += 1;
4925 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4926 next_offset += envelope_size;
4927 }
4928
4929 Ok(())
4930 }
4931 }
4932
4933 impl ProfileAdvertiseResponse {
4934 #[inline(always)]
4935 fn max_ordinal_present(&self) -> u64 {
4936 if let Some(_) = self.services {
4937 return 1;
4938 }
4939 0
4940 }
4941 }
4942
4943 impl fidl::encoding::ValueTypeMarker for ProfileAdvertiseResponse {
4944 type Borrowed<'a> = &'a Self;
4945 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4946 value
4947 }
4948 }
4949
4950 unsafe impl fidl::encoding::TypeMarker for ProfileAdvertiseResponse {
4951 type Owned = Self;
4952
4953 #[inline(always)]
4954 fn inline_align(_context: fidl::encoding::Context) -> usize {
4955 8
4956 }
4957
4958 #[inline(always)]
4959 fn inline_size(_context: fidl::encoding::Context) -> usize {
4960 16
4961 }
4962 }
4963
4964 unsafe impl<D: fidl::encoding::ResourceDialect>
4965 fidl::encoding::Encode<ProfileAdvertiseResponse, D> for &ProfileAdvertiseResponse
4966 {
4967 unsafe fn encode(
4968 self,
4969 encoder: &mut fidl::encoding::Encoder<'_, D>,
4970 offset: usize,
4971 mut depth: fidl::encoding::Depth,
4972 ) -> fidl::Result<()> {
4973 encoder.debug_check_bounds::<ProfileAdvertiseResponse>(offset);
4974 let max_ordinal: u64 = self.max_ordinal_present();
4976 encoder.write_num(max_ordinal, offset);
4977 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4978 if max_ordinal == 0 {
4980 return Ok(());
4981 }
4982 depth.increment()?;
4983 let envelope_size = 8;
4984 let bytes_len = max_ordinal as usize * envelope_size;
4985 #[allow(unused_variables)]
4986 let offset = encoder.out_of_line_offset(bytes_len);
4987 let mut _prev_end_offset: usize = 0;
4988 if 1 > max_ordinal {
4989 return Ok(());
4990 }
4991
4992 let cur_offset: usize = (1 - 1) * envelope_size;
4995
4996 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4998
4999 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ServiceDefinition, 32>, D>(
5004 self.services.as_ref().map(<fidl::encoding::Vector<ServiceDefinition, 32> as fidl::encoding::ValueTypeMarker>::borrow),
5005 encoder, offset + cur_offset, depth
5006 )?;
5007
5008 _prev_end_offset = cur_offset + envelope_size;
5009
5010 Ok(())
5011 }
5012 }
5013
5014 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5015 for ProfileAdvertiseResponse
5016 {
5017 #[inline(always)]
5018 fn new_empty() -> Self {
5019 Self::default()
5020 }
5021
5022 unsafe fn decode(
5023 &mut self,
5024 decoder: &mut fidl::encoding::Decoder<'_, D>,
5025 offset: usize,
5026 mut depth: fidl::encoding::Depth,
5027 ) -> fidl::Result<()> {
5028 decoder.debug_check_bounds::<Self>(offset);
5029 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5030 None => return Err(fidl::Error::NotNullable),
5031 Some(len) => len,
5032 };
5033 if len == 0 {
5035 return Ok(());
5036 };
5037 depth.increment()?;
5038 let envelope_size = 8;
5039 let bytes_len = len * envelope_size;
5040 let offset = decoder.out_of_line_offset(bytes_len)?;
5041 let mut _next_ordinal_to_read = 0;
5043 let mut next_offset = offset;
5044 let end_offset = offset + bytes_len;
5045 _next_ordinal_to_read += 1;
5046 if next_offset >= end_offset {
5047 return Ok(());
5048 }
5049
5050 while _next_ordinal_to_read < 1 {
5052 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5053 _next_ordinal_to_read += 1;
5054 next_offset += envelope_size;
5055 }
5056
5057 let next_out_of_line = decoder.next_out_of_line();
5058 let handles_before = decoder.remaining_handles();
5059 if let Some((inlined, num_bytes, num_handles)) =
5060 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5061 {
5062 let member_inline_size = <fidl::encoding::Vector<ServiceDefinition, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5063 if inlined != (member_inline_size <= 4) {
5064 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5065 }
5066 let inner_offset;
5067 let mut inner_depth = depth.clone();
5068 if inlined {
5069 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5070 inner_offset = next_offset;
5071 } else {
5072 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5073 inner_depth.increment()?;
5074 }
5075 let val_ref = self.services.get_or_insert_with(
5076 || fidl::new_empty!(fidl::encoding::Vector<ServiceDefinition, 32>, D),
5077 );
5078 fidl::decode!(fidl::encoding::Vector<ServiceDefinition, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5079 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5080 {
5081 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5082 }
5083 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5084 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5085 }
5086 }
5087
5088 next_offset += envelope_size;
5089
5090 while next_offset < end_offset {
5092 _next_ordinal_to_read += 1;
5093 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5094 next_offset += envelope_size;
5095 }
5096
5097 Ok(())
5098 }
5099 }
5100
5101 impl ProtocolDescriptor {
5102 #[inline(always)]
5103 fn max_ordinal_present(&self) -> u64 {
5104 if let Some(_) = self.params {
5105 return 2;
5106 }
5107 if let Some(_) = self.protocol {
5108 return 1;
5109 }
5110 0
5111 }
5112 }
5113
5114 impl fidl::encoding::ValueTypeMarker for ProtocolDescriptor {
5115 type Borrowed<'a> = &'a Self;
5116 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5117 value
5118 }
5119 }
5120
5121 unsafe impl fidl::encoding::TypeMarker for ProtocolDescriptor {
5122 type Owned = Self;
5123
5124 #[inline(always)]
5125 fn inline_align(_context: fidl::encoding::Context) -> usize {
5126 8
5127 }
5128
5129 #[inline(always)]
5130 fn inline_size(_context: fidl::encoding::Context) -> usize {
5131 16
5132 }
5133 }
5134
5135 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProtocolDescriptor, D>
5136 for &ProtocolDescriptor
5137 {
5138 unsafe fn encode(
5139 self,
5140 encoder: &mut fidl::encoding::Encoder<'_, D>,
5141 offset: usize,
5142 mut depth: fidl::encoding::Depth,
5143 ) -> fidl::Result<()> {
5144 encoder.debug_check_bounds::<ProtocolDescriptor>(offset);
5145 let max_ordinal: u64 = self.max_ordinal_present();
5147 encoder.write_num(max_ordinal, offset);
5148 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5149 if max_ordinal == 0 {
5151 return Ok(());
5152 }
5153 depth.increment()?;
5154 let envelope_size = 8;
5155 let bytes_len = max_ordinal as usize * envelope_size;
5156 #[allow(unused_variables)]
5157 let offset = encoder.out_of_line_offset(bytes_len);
5158 let mut _prev_end_offset: usize = 0;
5159 if 1 > max_ordinal {
5160 return Ok(());
5161 }
5162
5163 let cur_offset: usize = (1 - 1) * envelope_size;
5166
5167 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5169
5170 fidl::encoding::encode_in_envelope_optional::<ProtocolIdentifier, D>(
5175 self.protocol
5176 .as_ref()
5177 .map(<ProtocolIdentifier as fidl::encoding::ValueTypeMarker>::borrow),
5178 encoder,
5179 offset + cur_offset,
5180 depth,
5181 )?;
5182
5183 _prev_end_offset = cur_offset + envelope_size;
5184 if 2 > max_ordinal {
5185 return Ok(());
5186 }
5187
5188 let cur_offset: usize = (2 - 1) * envelope_size;
5191
5192 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5194
5195 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DataElement, 255>, D>(
5200 self.params.as_ref().map(<fidl::encoding::Vector<DataElement, 255> as fidl::encoding::ValueTypeMarker>::borrow),
5201 encoder, offset + cur_offset, depth
5202 )?;
5203
5204 _prev_end_offset = cur_offset + envelope_size;
5205
5206 Ok(())
5207 }
5208 }
5209
5210 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtocolDescriptor {
5211 #[inline(always)]
5212 fn new_empty() -> Self {
5213 Self::default()
5214 }
5215
5216 unsafe fn decode(
5217 &mut self,
5218 decoder: &mut fidl::encoding::Decoder<'_, D>,
5219 offset: usize,
5220 mut depth: fidl::encoding::Depth,
5221 ) -> fidl::Result<()> {
5222 decoder.debug_check_bounds::<Self>(offset);
5223 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5224 None => return Err(fidl::Error::NotNullable),
5225 Some(len) => len,
5226 };
5227 if len == 0 {
5229 return Ok(());
5230 };
5231 depth.increment()?;
5232 let envelope_size = 8;
5233 let bytes_len = len * envelope_size;
5234 let offset = decoder.out_of_line_offset(bytes_len)?;
5235 let mut _next_ordinal_to_read = 0;
5237 let mut next_offset = offset;
5238 let end_offset = offset + bytes_len;
5239 _next_ordinal_to_read += 1;
5240 if next_offset >= end_offset {
5241 return Ok(());
5242 }
5243
5244 while _next_ordinal_to_read < 1 {
5246 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5247 _next_ordinal_to_read += 1;
5248 next_offset += envelope_size;
5249 }
5250
5251 let next_out_of_line = decoder.next_out_of_line();
5252 let handles_before = decoder.remaining_handles();
5253 if let Some((inlined, num_bytes, num_handles)) =
5254 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5255 {
5256 let member_inline_size =
5257 <ProtocolIdentifier as fidl::encoding::TypeMarker>::inline_size(
5258 decoder.context,
5259 );
5260 if inlined != (member_inline_size <= 4) {
5261 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5262 }
5263 let inner_offset;
5264 let mut inner_depth = depth.clone();
5265 if inlined {
5266 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5267 inner_offset = next_offset;
5268 } else {
5269 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5270 inner_depth.increment()?;
5271 }
5272 let val_ref =
5273 self.protocol.get_or_insert_with(|| fidl::new_empty!(ProtocolIdentifier, D));
5274 fidl::decode!(ProtocolIdentifier, D, val_ref, decoder, inner_offset, inner_depth)?;
5275 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5276 {
5277 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5278 }
5279 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5280 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5281 }
5282 }
5283
5284 next_offset += envelope_size;
5285 _next_ordinal_to_read += 1;
5286 if next_offset >= end_offset {
5287 return Ok(());
5288 }
5289
5290 while _next_ordinal_to_read < 2 {
5292 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5293 _next_ordinal_to_read += 1;
5294 next_offset += envelope_size;
5295 }
5296
5297 let next_out_of_line = decoder.next_out_of_line();
5298 let handles_before = decoder.remaining_handles();
5299 if let Some((inlined, num_bytes, num_handles)) =
5300 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5301 {
5302 let member_inline_size = <fidl::encoding::Vector<DataElement, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5303 if inlined != (member_inline_size <= 4) {
5304 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5305 }
5306 let inner_offset;
5307 let mut inner_depth = depth.clone();
5308 if inlined {
5309 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5310 inner_offset = next_offset;
5311 } else {
5312 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5313 inner_depth.increment()?;
5314 }
5315 let val_ref = self.params.get_or_insert_with(
5316 || fidl::new_empty!(fidl::encoding::Vector<DataElement, 255>, D),
5317 );
5318 fidl::decode!(fidl::encoding::Vector<DataElement, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
5319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5320 {
5321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5322 }
5323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5325 }
5326 }
5327
5328 next_offset += envelope_size;
5329
5330 while next_offset < end_offset {
5332 _next_ordinal_to_read += 1;
5333 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5334 next_offset += envelope_size;
5335 }
5336
5337 Ok(())
5338 }
5339 }
5340
5341 impl RfcommParameters {
5342 #[inline(always)]
5343 fn max_ordinal_present(&self) -> u64 {
5344 if let Some(_) = self.channel {
5345 return 1;
5346 }
5347 0
5348 }
5349 }
5350
5351 impl fidl::encoding::ValueTypeMarker for RfcommParameters {
5352 type Borrowed<'a> = &'a Self;
5353 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5354 value
5355 }
5356 }
5357
5358 unsafe impl fidl::encoding::TypeMarker for RfcommParameters {
5359 type Owned = Self;
5360
5361 #[inline(always)]
5362 fn inline_align(_context: fidl::encoding::Context) -> usize {
5363 8
5364 }
5365
5366 #[inline(always)]
5367 fn inline_size(_context: fidl::encoding::Context) -> usize {
5368 16
5369 }
5370 }
5371
5372 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RfcommParameters, D>
5373 for &RfcommParameters
5374 {
5375 unsafe fn encode(
5376 self,
5377 encoder: &mut fidl::encoding::Encoder<'_, D>,
5378 offset: usize,
5379 mut depth: fidl::encoding::Depth,
5380 ) -> fidl::Result<()> {
5381 encoder.debug_check_bounds::<RfcommParameters>(offset);
5382 let max_ordinal: u64 = self.max_ordinal_present();
5384 encoder.write_num(max_ordinal, offset);
5385 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5386 if max_ordinal == 0 {
5388 return Ok(());
5389 }
5390 depth.increment()?;
5391 let envelope_size = 8;
5392 let bytes_len = max_ordinal as usize * envelope_size;
5393 #[allow(unused_variables)]
5394 let offset = encoder.out_of_line_offset(bytes_len);
5395 let mut _prev_end_offset: usize = 0;
5396 if 1 > max_ordinal {
5397 return Ok(());
5398 }
5399
5400 let cur_offset: usize = (1 - 1) * envelope_size;
5403
5404 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5406
5407 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5412 self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5413 encoder,
5414 offset + cur_offset,
5415 depth,
5416 )?;
5417
5418 _prev_end_offset = cur_offset + envelope_size;
5419
5420 Ok(())
5421 }
5422 }
5423
5424 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RfcommParameters {
5425 #[inline(always)]
5426 fn new_empty() -> Self {
5427 Self::default()
5428 }
5429
5430 unsafe fn decode(
5431 &mut self,
5432 decoder: &mut fidl::encoding::Decoder<'_, D>,
5433 offset: usize,
5434 mut depth: fidl::encoding::Depth,
5435 ) -> fidl::Result<()> {
5436 decoder.debug_check_bounds::<Self>(offset);
5437 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5438 None => return Err(fidl::Error::NotNullable),
5439 Some(len) => len,
5440 };
5441 if len == 0 {
5443 return Ok(());
5444 };
5445 depth.increment()?;
5446 let envelope_size = 8;
5447 let bytes_len = len * envelope_size;
5448 let offset = decoder.out_of_line_offset(bytes_len)?;
5449 let mut _next_ordinal_to_read = 0;
5451 let mut next_offset = offset;
5452 let end_offset = offset + bytes_len;
5453 _next_ordinal_to_read += 1;
5454 if next_offset >= end_offset {
5455 return Ok(());
5456 }
5457
5458 while _next_ordinal_to_read < 1 {
5460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5461 _next_ordinal_to_read += 1;
5462 next_offset += envelope_size;
5463 }
5464
5465 let next_out_of_line = decoder.next_out_of_line();
5466 let handles_before = decoder.remaining_handles();
5467 if let Some((inlined, num_bytes, num_handles)) =
5468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5469 {
5470 let member_inline_size =
5471 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5472 if inlined != (member_inline_size <= 4) {
5473 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5474 }
5475 let inner_offset;
5476 let mut inner_depth = depth.clone();
5477 if inlined {
5478 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5479 inner_offset = next_offset;
5480 } else {
5481 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5482 inner_depth.increment()?;
5483 }
5484 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
5485 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5486 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5487 {
5488 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5489 }
5490 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5491 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5492 }
5493 }
5494
5495 next_offset += envelope_size;
5496
5497 while next_offset < end_offset {
5499 _next_ordinal_to_read += 1;
5500 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5501 next_offset += envelope_size;
5502 }
5503
5504 Ok(())
5505 }
5506 }
5507
5508 impl ScoConnectionParameters {
5509 #[inline(always)]
5510 fn max_ordinal_present(&self) -> u64 {
5511 if let Some(_) = self.max_tx_data_size {
5512 return 10;
5513 }
5514 if let Some(_) = self.path {
5515 return 9;
5516 }
5517 if let Some(_) = self.io_pcm_sample_payload_msb_position {
5518 return 8;
5519 }
5520 if let Some(_) = self.io_pcm_data_format {
5521 return 7;
5522 }
5523 if let Some(_) = self.io_frame_size {
5524 return 6;
5525 }
5526 if let Some(_) = self.io_coding_format {
5527 return 5;
5528 }
5529 if let Some(_) = self.io_bandwidth {
5530 return 4;
5531 }
5532 if let Some(_) = self.air_frame_size {
5533 return 3;
5534 }
5535 if let Some(_) = self.air_coding_format {
5536 return 2;
5537 }
5538 if let Some(_) = self.parameter_set {
5539 return 1;
5540 }
5541 0
5542 }
5543 }
5544
5545 impl fidl::encoding::ValueTypeMarker for ScoConnectionParameters {
5546 type Borrowed<'a> = &'a Self;
5547 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5548 value
5549 }
5550 }
5551
5552 unsafe impl fidl::encoding::TypeMarker for ScoConnectionParameters {
5553 type Owned = Self;
5554
5555 #[inline(always)]
5556 fn inline_align(_context: fidl::encoding::Context) -> usize {
5557 8
5558 }
5559
5560 #[inline(always)]
5561 fn inline_size(_context: fidl::encoding::Context) -> usize {
5562 16
5563 }
5564 }
5565
5566 unsafe impl<D: fidl::encoding::ResourceDialect>
5567 fidl::encoding::Encode<ScoConnectionParameters, D> for &ScoConnectionParameters
5568 {
5569 unsafe fn encode(
5570 self,
5571 encoder: &mut fidl::encoding::Encoder<'_, D>,
5572 offset: usize,
5573 mut depth: fidl::encoding::Depth,
5574 ) -> fidl::Result<()> {
5575 encoder.debug_check_bounds::<ScoConnectionParameters>(offset);
5576 let max_ordinal: u64 = self.max_ordinal_present();
5578 encoder.write_num(max_ordinal, offset);
5579 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5580 if max_ordinal == 0 {
5582 return Ok(());
5583 }
5584 depth.increment()?;
5585 let envelope_size = 8;
5586 let bytes_len = max_ordinal as usize * envelope_size;
5587 #[allow(unused_variables)]
5588 let offset = encoder.out_of_line_offset(bytes_len);
5589 let mut _prev_end_offset: usize = 0;
5590 if 1 > max_ordinal {
5591 return Ok(());
5592 }
5593
5594 let cur_offset: usize = (1 - 1) * envelope_size;
5597
5598 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5600
5601 fidl::encoding::encode_in_envelope_optional::<HfpParameterSet, D>(
5606 self.parameter_set
5607 .as_ref()
5608 .map(<HfpParameterSet as fidl::encoding::ValueTypeMarker>::borrow),
5609 encoder,
5610 offset + cur_offset,
5611 depth,
5612 )?;
5613
5614 _prev_end_offset = cur_offset + envelope_size;
5615 if 2 > max_ordinal {
5616 return Ok(());
5617 }
5618
5619 let cur_offset: usize = (2 - 1) * envelope_size;
5622
5623 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5625
5626 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AssignedCodingFormat, D>(
5631 self.air_coding_format.as_ref().map(<fidl_fuchsia_bluetooth__common::AssignedCodingFormat as fidl::encoding::ValueTypeMarker>::borrow),
5632 encoder, offset + cur_offset, depth
5633 )?;
5634
5635 _prev_end_offset = cur_offset + envelope_size;
5636 if 3 > max_ordinal {
5637 return Ok(());
5638 }
5639
5640 let cur_offset: usize = (3 - 1) * envelope_size;
5643
5644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5646
5647 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5652 self.air_frame_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5653 encoder,
5654 offset + cur_offset,
5655 depth,
5656 )?;
5657
5658 _prev_end_offset = cur_offset + envelope_size;
5659 if 4 > max_ordinal {
5660 return Ok(());
5661 }
5662
5663 let cur_offset: usize = (4 - 1) * envelope_size;
5666
5667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5669
5670 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5675 self.io_bandwidth.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5676 encoder,
5677 offset + cur_offset,
5678 depth,
5679 )?;
5680
5681 _prev_end_offset = cur_offset + envelope_size;
5682 if 5 > max_ordinal {
5683 return Ok(());
5684 }
5685
5686 let cur_offset: usize = (5 - 1) * envelope_size;
5689
5690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5692
5693 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AssignedCodingFormat, D>(
5698 self.io_coding_format.as_ref().map(<fidl_fuchsia_bluetooth__common::AssignedCodingFormat as fidl::encoding::ValueTypeMarker>::borrow),
5699 encoder, offset + cur_offset, depth
5700 )?;
5701
5702 _prev_end_offset = cur_offset + envelope_size;
5703 if 6 > max_ordinal {
5704 return Ok(());
5705 }
5706
5707 let cur_offset: usize = (6 - 1) * envelope_size;
5710
5711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5713
5714 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5719 self.io_frame_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5720 encoder,
5721 offset + cur_offset,
5722 depth,
5723 )?;
5724
5725 _prev_end_offset = cur_offset + envelope_size;
5726 if 7 > max_ordinal {
5727 return Ok(());
5728 }
5729
5730 let cur_offset: usize = (7 - 1) * envelope_size;
5733
5734 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5736
5737 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::SampleFormat, D>(
5742 self.io_pcm_data_format.as_ref().map(<fidl_fuchsia_hardware_audio__common::SampleFormat as fidl::encoding::ValueTypeMarker>::borrow),
5743 encoder, offset + cur_offset, depth
5744 )?;
5745
5746 _prev_end_offset = cur_offset + envelope_size;
5747 if 8 > max_ordinal {
5748 return Ok(());
5749 }
5750
5751 let cur_offset: usize = (8 - 1) * envelope_size;
5754
5755 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5757
5758 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5763 self.io_pcm_sample_payload_msb_position
5764 .as_ref()
5765 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5766 encoder,
5767 offset + cur_offset,
5768 depth,
5769 )?;
5770
5771 _prev_end_offset = cur_offset + envelope_size;
5772 if 9 > max_ordinal {
5773 return Ok(());
5774 }
5775
5776 let cur_offset: usize = (9 - 1) * envelope_size;
5779
5780 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5782
5783 fidl::encoding::encode_in_envelope_optional::<DataPath, D>(
5788 self.path.as_ref().map(<DataPath as fidl::encoding::ValueTypeMarker>::borrow),
5789 encoder,
5790 offset + cur_offset,
5791 depth,
5792 )?;
5793
5794 _prev_end_offset = cur_offset + envelope_size;
5795 if 10 > max_ordinal {
5796 return Ok(());
5797 }
5798
5799 let cur_offset: usize = (10 - 1) * envelope_size;
5802
5803 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5805
5806 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5811 self.max_tx_data_size
5812 .as_ref()
5813 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5814 encoder,
5815 offset + cur_offset,
5816 depth,
5817 )?;
5818
5819 _prev_end_offset = cur_offset + envelope_size;
5820
5821 Ok(())
5822 }
5823 }
5824
5825 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5826 for ScoConnectionParameters
5827 {
5828 #[inline(always)]
5829 fn new_empty() -> Self {
5830 Self::default()
5831 }
5832
5833 unsafe fn decode(
5834 &mut self,
5835 decoder: &mut fidl::encoding::Decoder<'_, D>,
5836 offset: usize,
5837 mut depth: fidl::encoding::Depth,
5838 ) -> fidl::Result<()> {
5839 decoder.debug_check_bounds::<Self>(offset);
5840 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5841 None => return Err(fidl::Error::NotNullable),
5842 Some(len) => len,
5843 };
5844 if len == 0 {
5846 return Ok(());
5847 };
5848 depth.increment()?;
5849 let envelope_size = 8;
5850 let bytes_len = len * envelope_size;
5851 let offset = decoder.out_of_line_offset(bytes_len)?;
5852 let mut _next_ordinal_to_read = 0;
5854 let mut next_offset = offset;
5855 let end_offset = offset + bytes_len;
5856 _next_ordinal_to_read += 1;
5857 if next_offset >= end_offset {
5858 return Ok(());
5859 }
5860
5861 while _next_ordinal_to_read < 1 {
5863 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5864 _next_ordinal_to_read += 1;
5865 next_offset += envelope_size;
5866 }
5867
5868 let next_out_of_line = decoder.next_out_of_line();
5869 let handles_before = decoder.remaining_handles();
5870 if let Some((inlined, num_bytes, num_handles)) =
5871 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5872 {
5873 let member_inline_size =
5874 <HfpParameterSet as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5875 if inlined != (member_inline_size <= 4) {
5876 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5877 }
5878 let inner_offset;
5879 let mut inner_depth = depth.clone();
5880 if inlined {
5881 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5882 inner_offset = next_offset;
5883 } else {
5884 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5885 inner_depth.increment()?;
5886 }
5887 let val_ref =
5888 self.parameter_set.get_or_insert_with(|| fidl::new_empty!(HfpParameterSet, D));
5889 fidl::decode!(HfpParameterSet, D, val_ref, decoder, inner_offset, inner_depth)?;
5890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5891 {
5892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5893 }
5894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5896 }
5897 }
5898
5899 next_offset += envelope_size;
5900 _next_ordinal_to_read += 1;
5901 if next_offset >= end_offset {
5902 return Ok(());
5903 }
5904
5905 while _next_ordinal_to_read < 2 {
5907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5908 _next_ordinal_to_read += 1;
5909 next_offset += envelope_size;
5910 }
5911
5912 let next_out_of_line = decoder.next_out_of_line();
5913 let handles_before = decoder.remaining_handles();
5914 if let Some((inlined, num_bytes, num_handles)) =
5915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5916 {
5917 let member_inline_size = <fidl_fuchsia_bluetooth__common::AssignedCodingFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5918 if inlined != (member_inline_size <= 4) {
5919 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5920 }
5921 let inner_offset;
5922 let mut inner_depth = depth.clone();
5923 if inlined {
5924 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5925 inner_offset = next_offset;
5926 } else {
5927 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5928 inner_depth.increment()?;
5929 }
5930 let val_ref = self.air_coding_format.get_or_insert_with(|| {
5931 fidl::new_empty!(fidl_fuchsia_bluetooth__common::AssignedCodingFormat, D)
5932 });
5933 fidl::decode!(
5934 fidl_fuchsia_bluetooth__common::AssignedCodingFormat,
5935 D,
5936 val_ref,
5937 decoder,
5938 inner_offset,
5939 inner_depth
5940 )?;
5941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5942 {
5943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5944 }
5945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5947 }
5948 }
5949
5950 next_offset += envelope_size;
5951 _next_ordinal_to_read += 1;
5952 if next_offset >= end_offset {
5953 return Ok(());
5954 }
5955
5956 while _next_ordinal_to_read < 3 {
5958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5959 _next_ordinal_to_read += 1;
5960 next_offset += envelope_size;
5961 }
5962
5963 let next_out_of_line = decoder.next_out_of_line();
5964 let handles_before = decoder.remaining_handles();
5965 if let Some((inlined, num_bytes, num_handles)) =
5966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5967 {
5968 let member_inline_size =
5969 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5970 if inlined != (member_inline_size <= 4) {
5971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5972 }
5973 let inner_offset;
5974 let mut inner_depth = depth.clone();
5975 if inlined {
5976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5977 inner_offset = next_offset;
5978 } else {
5979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5980 inner_depth.increment()?;
5981 }
5982 let val_ref = self.air_frame_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
5983 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5985 {
5986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5987 }
5988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5990 }
5991 }
5992
5993 next_offset += envelope_size;
5994 _next_ordinal_to_read += 1;
5995 if next_offset >= end_offset {
5996 return Ok(());
5997 }
5998
5999 while _next_ordinal_to_read < 4 {
6001 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6002 _next_ordinal_to_read += 1;
6003 next_offset += envelope_size;
6004 }
6005
6006 let next_out_of_line = decoder.next_out_of_line();
6007 let handles_before = decoder.remaining_handles();
6008 if let Some((inlined, num_bytes, num_handles)) =
6009 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6010 {
6011 let member_inline_size =
6012 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6013 if inlined != (member_inline_size <= 4) {
6014 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6015 }
6016 let inner_offset;
6017 let mut inner_depth = depth.clone();
6018 if inlined {
6019 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6020 inner_offset = next_offset;
6021 } else {
6022 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6023 inner_depth.increment()?;
6024 }
6025 let val_ref = self.io_bandwidth.get_or_insert_with(|| fidl::new_empty!(u32, D));
6026 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6028 {
6029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6030 }
6031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6033 }
6034 }
6035
6036 next_offset += envelope_size;
6037 _next_ordinal_to_read += 1;
6038 if next_offset >= end_offset {
6039 return Ok(());
6040 }
6041
6042 while _next_ordinal_to_read < 5 {
6044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6045 _next_ordinal_to_read += 1;
6046 next_offset += envelope_size;
6047 }
6048
6049 let next_out_of_line = decoder.next_out_of_line();
6050 let handles_before = decoder.remaining_handles();
6051 if let Some((inlined, num_bytes, num_handles)) =
6052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6053 {
6054 let member_inline_size = <fidl_fuchsia_bluetooth__common::AssignedCodingFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6055 if inlined != (member_inline_size <= 4) {
6056 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6057 }
6058 let inner_offset;
6059 let mut inner_depth = depth.clone();
6060 if inlined {
6061 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6062 inner_offset = next_offset;
6063 } else {
6064 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6065 inner_depth.increment()?;
6066 }
6067 let val_ref = self.io_coding_format.get_or_insert_with(|| {
6068 fidl::new_empty!(fidl_fuchsia_bluetooth__common::AssignedCodingFormat, D)
6069 });
6070 fidl::decode!(
6071 fidl_fuchsia_bluetooth__common::AssignedCodingFormat,
6072 D,
6073 val_ref,
6074 decoder,
6075 inner_offset,
6076 inner_depth
6077 )?;
6078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6079 {
6080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6081 }
6082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6084 }
6085 }
6086
6087 next_offset += envelope_size;
6088 _next_ordinal_to_read += 1;
6089 if next_offset >= end_offset {
6090 return Ok(());
6091 }
6092
6093 while _next_ordinal_to_read < 6 {
6095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6096 _next_ordinal_to_read += 1;
6097 next_offset += envelope_size;
6098 }
6099
6100 let next_out_of_line = decoder.next_out_of_line();
6101 let handles_before = decoder.remaining_handles();
6102 if let Some((inlined, num_bytes, num_handles)) =
6103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6104 {
6105 let member_inline_size =
6106 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6107 if inlined != (member_inline_size <= 4) {
6108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6109 }
6110 let inner_offset;
6111 let mut inner_depth = depth.clone();
6112 if inlined {
6113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6114 inner_offset = next_offset;
6115 } else {
6116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6117 inner_depth.increment()?;
6118 }
6119 let val_ref = self.io_frame_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6120 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6122 {
6123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6124 }
6125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6127 }
6128 }
6129
6130 next_offset += envelope_size;
6131 _next_ordinal_to_read += 1;
6132 if next_offset >= end_offset {
6133 return Ok(());
6134 }
6135
6136 while _next_ordinal_to_read < 7 {
6138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6139 _next_ordinal_to_read += 1;
6140 next_offset += envelope_size;
6141 }
6142
6143 let next_out_of_line = decoder.next_out_of_line();
6144 let handles_before = decoder.remaining_handles();
6145 if let Some((inlined, num_bytes, num_handles)) =
6146 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6147 {
6148 let member_inline_size = <fidl_fuchsia_hardware_audio__common::SampleFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6149 if inlined != (member_inline_size <= 4) {
6150 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6151 }
6152 let inner_offset;
6153 let mut inner_depth = depth.clone();
6154 if inlined {
6155 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6156 inner_offset = next_offset;
6157 } else {
6158 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6159 inner_depth.increment()?;
6160 }
6161 let val_ref = self.io_pcm_data_format.get_or_insert_with(|| {
6162 fidl::new_empty!(fidl_fuchsia_hardware_audio__common::SampleFormat, D)
6163 });
6164 fidl::decode!(
6165 fidl_fuchsia_hardware_audio__common::SampleFormat,
6166 D,
6167 val_ref,
6168 decoder,
6169 inner_offset,
6170 inner_depth
6171 )?;
6172 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6173 {
6174 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6175 }
6176 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6177 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6178 }
6179 }
6180
6181 next_offset += envelope_size;
6182 _next_ordinal_to_read += 1;
6183 if next_offset >= end_offset {
6184 return Ok(());
6185 }
6186
6187 while _next_ordinal_to_read < 8 {
6189 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6190 _next_ordinal_to_read += 1;
6191 next_offset += envelope_size;
6192 }
6193
6194 let next_out_of_line = decoder.next_out_of_line();
6195 let handles_before = decoder.remaining_handles();
6196 if let Some((inlined, num_bytes, num_handles)) =
6197 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6198 {
6199 let member_inline_size =
6200 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6201 if inlined != (member_inline_size <= 4) {
6202 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6203 }
6204 let inner_offset;
6205 let mut inner_depth = depth.clone();
6206 if inlined {
6207 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6208 inner_offset = next_offset;
6209 } else {
6210 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6211 inner_depth.increment()?;
6212 }
6213 let val_ref = self
6214 .io_pcm_sample_payload_msb_position
6215 .get_or_insert_with(|| fidl::new_empty!(u8, D));
6216 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6217 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6218 {
6219 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6220 }
6221 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6222 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6223 }
6224 }
6225
6226 next_offset += envelope_size;
6227 _next_ordinal_to_read += 1;
6228 if next_offset >= end_offset {
6229 return Ok(());
6230 }
6231
6232 while _next_ordinal_to_read < 9 {
6234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6235 _next_ordinal_to_read += 1;
6236 next_offset += envelope_size;
6237 }
6238
6239 let next_out_of_line = decoder.next_out_of_line();
6240 let handles_before = decoder.remaining_handles();
6241 if let Some((inlined, num_bytes, num_handles)) =
6242 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6243 {
6244 let member_inline_size =
6245 <DataPath as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6246 if inlined != (member_inline_size <= 4) {
6247 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6248 }
6249 let inner_offset;
6250 let mut inner_depth = depth.clone();
6251 if inlined {
6252 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6253 inner_offset = next_offset;
6254 } else {
6255 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6256 inner_depth.increment()?;
6257 }
6258 let val_ref = self.path.get_or_insert_with(|| fidl::new_empty!(DataPath, D));
6259 fidl::decode!(DataPath, D, val_ref, decoder, inner_offset, inner_depth)?;
6260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6261 {
6262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6263 }
6264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6266 }
6267 }
6268
6269 next_offset += envelope_size;
6270 _next_ordinal_to_read += 1;
6271 if next_offset >= end_offset {
6272 return Ok(());
6273 }
6274
6275 while _next_ordinal_to_read < 10 {
6277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6278 _next_ordinal_to_read += 1;
6279 next_offset += envelope_size;
6280 }
6281
6282 let next_out_of_line = decoder.next_out_of_line();
6283 let handles_before = decoder.remaining_handles();
6284 if let Some((inlined, num_bytes, num_handles)) =
6285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6286 {
6287 let member_inline_size =
6288 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6289 if inlined != (member_inline_size <= 4) {
6290 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6291 }
6292 let inner_offset;
6293 let mut inner_depth = depth.clone();
6294 if inlined {
6295 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6296 inner_offset = next_offset;
6297 } else {
6298 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6299 inner_depth.increment()?;
6300 }
6301 let val_ref = self.max_tx_data_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6302 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6303 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6304 {
6305 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6306 }
6307 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6308 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6309 }
6310 }
6311
6312 next_offset += envelope_size;
6313
6314 while next_offset < end_offset {
6316 _next_ordinal_to_read += 1;
6317 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6318 next_offset += envelope_size;
6319 }
6320
6321 Ok(())
6322 }
6323 }
6324
6325 impl ScoConnectionWriteRequest {
6326 #[inline(always)]
6327 fn max_ordinal_present(&self) -> u64 {
6328 if let Some(_) = self.data {
6329 return 1;
6330 }
6331 0
6332 }
6333 }
6334
6335 impl fidl::encoding::ValueTypeMarker for ScoConnectionWriteRequest {
6336 type Borrowed<'a> = &'a Self;
6337 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6338 value
6339 }
6340 }
6341
6342 unsafe impl fidl::encoding::TypeMarker for ScoConnectionWriteRequest {
6343 type Owned = Self;
6344
6345 #[inline(always)]
6346 fn inline_align(_context: fidl::encoding::Context) -> usize {
6347 8
6348 }
6349
6350 #[inline(always)]
6351 fn inline_size(_context: fidl::encoding::Context) -> usize {
6352 16
6353 }
6354 }
6355
6356 unsafe impl<D: fidl::encoding::ResourceDialect>
6357 fidl::encoding::Encode<ScoConnectionWriteRequest, D> for &ScoConnectionWriteRequest
6358 {
6359 unsafe fn encode(
6360 self,
6361 encoder: &mut fidl::encoding::Encoder<'_, D>,
6362 offset: usize,
6363 mut depth: fidl::encoding::Depth,
6364 ) -> fidl::Result<()> {
6365 encoder.debug_check_bounds::<ScoConnectionWriteRequest>(offset);
6366 let max_ordinal: u64 = self.max_ordinal_present();
6368 encoder.write_num(max_ordinal, offset);
6369 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6370 if max_ordinal == 0 {
6372 return Ok(());
6373 }
6374 depth.increment()?;
6375 let envelope_size = 8;
6376 let bytes_len = max_ordinal as usize * envelope_size;
6377 #[allow(unused_variables)]
6378 let offset = encoder.out_of_line_offset(bytes_len);
6379 let mut _prev_end_offset: usize = 0;
6380 if 1 > max_ordinal {
6381 return Ok(());
6382 }
6383
6384 let cur_offset: usize = (1 - 1) * envelope_size;
6387
6388 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6390
6391 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6396 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6397 encoder, offset + cur_offset, depth
6398 )?;
6399
6400 _prev_end_offset = cur_offset + envelope_size;
6401
6402 Ok(())
6403 }
6404 }
6405
6406 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6407 for ScoConnectionWriteRequest
6408 {
6409 #[inline(always)]
6410 fn new_empty() -> Self {
6411 Self::default()
6412 }
6413
6414 unsafe fn decode(
6415 &mut self,
6416 decoder: &mut fidl::encoding::Decoder<'_, D>,
6417 offset: usize,
6418 mut depth: fidl::encoding::Depth,
6419 ) -> fidl::Result<()> {
6420 decoder.debug_check_bounds::<Self>(offset);
6421 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6422 None => return Err(fidl::Error::NotNullable),
6423 Some(len) => len,
6424 };
6425 if len == 0 {
6427 return Ok(());
6428 };
6429 depth.increment()?;
6430 let envelope_size = 8;
6431 let bytes_len = len * envelope_size;
6432 let offset = decoder.out_of_line_offset(bytes_len)?;
6433 let mut _next_ordinal_to_read = 0;
6435 let mut next_offset = offset;
6436 let end_offset = offset + bytes_len;
6437 _next_ordinal_to_read += 1;
6438 if next_offset >= end_offset {
6439 return Ok(());
6440 }
6441
6442 while _next_ordinal_to_read < 1 {
6444 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6445 _next_ordinal_to_read += 1;
6446 next_offset += envelope_size;
6447 }
6448
6449 let next_out_of_line = decoder.next_out_of_line();
6450 let handles_before = decoder.remaining_handles();
6451 if let Some((inlined, num_bytes, num_handles)) =
6452 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6453 {
6454 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6455 if inlined != (member_inline_size <= 4) {
6456 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6457 }
6458 let inner_offset;
6459 let mut inner_depth = depth.clone();
6460 if inlined {
6461 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6462 inner_offset = next_offset;
6463 } else {
6464 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6465 inner_depth.increment()?;
6466 }
6467 let val_ref = self.data.get_or_insert_with(|| {
6468 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6469 });
6470 fidl::decode!(
6471 fidl::encoding::UnboundedVector<u8>,
6472 D,
6473 val_ref,
6474 decoder,
6475 inner_offset,
6476 inner_depth
6477 )?;
6478 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6479 {
6480 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6481 }
6482 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6483 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6484 }
6485 }
6486
6487 next_offset += envelope_size;
6488
6489 while next_offset < end_offset {
6491 _next_ordinal_to_read += 1;
6492 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6493 next_offset += envelope_size;
6494 }
6495
6496 Ok(())
6497 }
6498 }
6499
6500 impl ScoConnectionReadResponse {
6501 #[inline(always)]
6502 fn max_ordinal_present(&self) -> u64 {
6503 if let Some(_) = self.data {
6504 return 2;
6505 }
6506 if let Some(_) = self.status_flag {
6507 return 1;
6508 }
6509 0
6510 }
6511 }
6512
6513 impl fidl::encoding::ValueTypeMarker for ScoConnectionReadResponse {
6514 type Borrowed<'a> = &'a Self;
6515 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6516 value
6517 }
6518 }
6519
6520 unsafe impl fidl::encoding::TypeMarker for ScoConnectionReadResponse {
6521 type Owned = Self;
6522
6523 #[inline(always)]
6524 fn inline_align(_context: fidl::encoding::Context) -> usize {
6525 8
6526 }
6527
6528 #[inline(always)]
6529 fn inline_size(_context: fidl::encoding::Context) -> usize {
6530 16
6531 }
6532 }
6533
6534 unsafe impl<D: fidl::encoding::ResourceDialect>
6535 fidl::encoding::Encode<ScoConnectionReadResponse, D> for &ScoConnectionReadResponse
6536 {
6537 unsafe fn encode(
6538 self,
6539 encoder: &mut fidl::encoding::Encoder<'_, D>,
6540 offset: usize,
6541 mut depth: fidl::encoding::Depth,
6542 ) -> fidl::Result<()> {
6543 encoder.debug_check_bounds::<ScoConnectionReadResponse>(offset);
6544 let max_ordinal: u64 = self.max_ordinal_present();
6546 encoder.write_num(max_ordinal, offset);
6547 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6548 if max_ordinal == 0 {
6550 return Ok(());
6551 }
6552 depth.increment()?;
6553 let envelope_size = 8;
6554 let bytes_len = max_ordinal as usize * envelope_size;
6555 #[allow(unused_variables)]
6556 let offset = encoder.out_of_line_offset(bytes_len);
6557 let mut _prev_end_offset: usize = 0;
6558 if 1 > max_ordinal {
6559 return Ok(());
6560 }
6561
6562 let cur_offset: usize = (1 - 1) * envelope_size;
6565
6566 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6568
6569 fidl::encoding::encode_in_envelope_optional::<RxPacketStatus, D>(
6574 self.status_flag
6575 .as_ref()
6576 .map(<RxPacketStatus as fidl::encoding::ValueTypeMarker>::borrow),
6577 encoder,
6578 offset + cur_offset,
6579 depth,
6580 )?;
6581
6582 _prev_end_offset = cur_offset + envelope_size;
6583 if 2 > max_ordinal {
6584 return Ok(());
6585 }
6586
6587 let cur_offset: usize = (2 - 1) * envelope_size;
6590
6591 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6593
6594 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6599 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6600 encoder, offset + cur_offset, depth
6601 )?;
6602
6603 _prev_end_offset = cur_offset + envelope_size;
6604
6605 Ok(())
6606 }
6607 }
6608
6609 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6610 for ScoConnectionReadResponse
6611 {
6612 #[inline(always)]
6613 fn new_empty() -> Self {
6614 Self::default()
6615 }
6616
6617 unsafe fn decode(
6618 &mut self,
6619 decoder: &mut fidl::encoding::Decoder<'_, D>,
6620 offset: usize,
6621 mut depth: fidl::encoding::Depth,
6622 ) -> fidl::Result<()> {
6623 decoder.debug_check_bounds::<Self>(offset);
6624 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6625 None => return Err(fidl::Error::NotNullable),
6626 Some(len) => len,
6627 };
6628 if len == 0 {
6630 return Ok(());
6631 };
6632 depth.increment()?;
6633 let envelope_size = 8;
6634 let bytes_len = len * envelope_size;
6635 let offset = decoder.out_of_line_offset(bytes_len)?;
6636 let mut _next_ordinal_to_read = 0;
6638 let mut next_offset = offset;
6639 let end_offset = offset + bytes_len;
6640 _next_ordinal_to_read += 1;
6641 if next_offset >= end_offset {
6642 return Ok(());
6643 }
6644
6645 while _next_ordinal_to_read < 1 {
6647 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6648 _next_ordinal_to_read += 1;
6649 next_offset += envelope_size;
6650 }
6651
6652 let next_out_of_line = decoder.next_out_of_line();
6653 let handles_before = decoder.remaining_handles();
6654 if let Some((inlined, num_bytes, num_handles)) =
6655 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6656 {
6657 let member_inline_size =
6658 <RxPacketStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6659 if inlined != (member_inline_size <= 4) {
6660 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6661 }
6662 let inner_offset;
6663 let mut inner_depth = depth.clone();
6664 if inlined {
6665 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6666 inner_offset = next_offset;
6667 } else {
6668 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6669 inner_depth.increment()?;
6670 }
6671 let val_ref =
6672 self.status_flag.get_or_insert_with(|| fidl::new_empty!(RxPacketStatus, D));
6673 fidl::decode!(RxPacketStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
6674 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6675 {
6676 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6677 }
6678 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6679 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6680 }
6681 }
6682
6683 next_offset += envelope_size;
6684 _next_ordinal_to_read += 1;
6685 if next_offset >= end_offset {
6686 return Ok(());
6687 }
6688
6689 while _next_ordinal_to_read < 2 {
6691 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6692 _next_ordinal_to_read += 1;
6693 next_offset += envelope_size;
6694 }
6695
6696 let next_out_of_line = decoder.next_out_of_line();
6697 let handles_before = decoder.remaining_handles();
6698 if let Some((inlined, num_bytes, num_handles)) =
6699 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6700 {
6701 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6702 if inlined != (member_inline_size <= 4) {
6703 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6704 }
6705 let inner_offset;
6706 let mut inner_depth = depth.clone();
6707 if inlined {
6708 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6709 inner_offset = next_offset;
6710 } else {
6711 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6712 inner_depth.increment()?;
6713 }
6714 let val_ref = self.data.get_or_insert_with(|| {
6715 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6716 });
6717 fidl::decode!(
6718 fidl::encoding::UnboundedVector<u8>,
6719 D,
6720 val_ref,
6721 decoder,
6722 inner_offset,
6723 inner_depth
6724 )?;
6725 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6726 {
6727 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6728 }
6729 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6730 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6731 }
6732 }
6733
6734 next_offset += envelope_size;
6735
6736 while next_offset < end_offset {
6738 _next_ordinal_to_read += 1;
6739 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6740 next_offset += envelope_size;
6741 }
6742
6743 Ok(())
6744 }
6745 }
6746
6747 impl ServiceDefinition {
6748 #[inline(always)]
6749 fn max_ordinal_present(&self) -> u64 {
6750 if let Some(_) = self.additional_attributes {
6751 return 6;
6752 }
6753 if let Some(_) = self.information {
6754 return 5;
6755 }
6756 if let Some(_) = self.profile_descriptors {
6757 return 4;
6758 }
6759 if let Some(_) = self.additional_protocol_descriptor_lists {
6760 return 3;
6761 }
6762 if let Some(_) = self.protocol_descriptor_list {
6763 return 2;
6764 }
6765 if let Some(_) = self.service_class_uuids {
6766 return 1;
6767 }
6768 0
6769 }
6770 }
6771
6772 impl fidl::encoding::ValueTypeMarker for ServiceDefinition {
6773 type Borrowed<'a> = &'a Self;
6774 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6775 value
6776 }
6777 }
6778
6779 unsafe impl fidl::encoding::TypeMarker for ServiceDefinition {
6780 type Owned = Self;
6781
6782 #[inline(always)]
6783 fn inline_align(_context: fidl::encoding::Context) -> usize {
6784 8
6785 }
6786
6787 #[inline(always)]
6788 fn inline_size(_context: fidl::encoding::Context) -> usize {
6789 16
6790 }
6791 }
6792
6793 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceDefinition, D>
6794 for &ServiceDefinition
6795 {
6796 unsafe fn encode(
6797 self,
6798 encoder: &mut fidl::encoding::Encoder<'_, D>,
6799 offset: usize,
6800 mut depth: fidl::encoding::Depth,
6801 ) -> fidl::Result<()> {
6802 encoder.debug_check_bounds::<ServiceDefinition>(offset);
6803 let max_ordinal: u64 = self.max_ordinal_present();
6805 encoder.write_num(max_ordinal, offset);
6806 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6807 if max_ordinal == 0 {
6809 return Ok(());
6810 }
6811 depth.increment()?;
6812 let envelope_size = 8;
6813 let bytes_len = max_ordinal as usize * envelope_size;
6814 #[allow(unused_variables)]
6815 let offset = encoder.out_of_line_offset(bytes_len);
6816 let mut _prev_end_offset: usize = 0;
6817 if 1 > max_ordinal {
6818 return Ok(());
6819 }
6820
6821 let cur_offset: usize = (1 - 1) * envelope_size;
6824
6825 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6827
6828 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_bluetooth__common::Uuid, 255>, D>(
6833 self.service_class_uuids.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_bluetooth__common::Uuid, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6834 encoder, offset + cur_offset, depth
6835 )?;
6836
6837 _prev_end_offset = cur_offset + envelope_size;
6838 if 2 > max_ordinal {
6839 return Ok(());
6840 }
6841
6842 let cur_offset: usize = (2 - 1) * envelope_size;
6845
6846 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6848
6849 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProtocolDescriptor, 255>, D>(
6854 self.protocol_descriptor_list.as_ref().map(<fidl::encoding::Vector<ProtocolDescriptor, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6855 encoder, offset + cur_offset, depth
6856 )?;
6857
6858 _prev_end_offset = cur_offset + envelope_size;
6859 if 3 > max_ordinal {
6860 return Ok(());
6861 }
6862
6863 let cur_offset: usize = (3 - 1) * envelope_size;
6866
6867 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6869
6870 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::Vector<ProtocolDescriptor, 255>, 255>, D>(
6875 self.additional_protocol_descriptor_lists.as_ref().map(<fidl::encoding::Vector<fidl::encoding::Vector<ProtocolDescriptor, 255>, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6876 encoder, offset + cur_offset, depth
6877 )?;
6878
6879 _prev_end_offset = cur_offset + envelope_size;
6880 if 4 > max_ordinal {
6881 return Ok(());
6882 }
6883
6884 let cur_offset: usize = (4 - 1) * envelope_size;
6887
6888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6890
6891 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProfileDescriptor, 255>, D>(
6896 self.profile_descriptors.as_ref().map(<fidl::encoding::Vector<ProfileDescriptor, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6897 encoder, offset + cur_offset, depth
6898 )?;
6899
6900 _prev_end_offset = cur_offset + envelope_size;
6901 if 5 > max_ordinal {
6902 return Ok(());
6903 }
6904
6905 let cur_offset: usize = (5 - 1) * envelope_size;
6908
6909 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6911
6912 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Information, 85>, D>(
6917 self.information.as_ref().map(<fidl::encoding::Vector<Information, 85> as fidl::encoding::ValueTypeMarker>::borrow),
6918 encoder, offset + cur_offset, depth
6919 )?;
6920
6921 _prev_end_offset = cur_offset + envelope_size;
6922 if 6 > max_ordinal {
6923 return Ok(());
6924 }
6925
6926 let cur_offset: usize = (6 - 1) * envelope_size;
6929
6930 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6932
6933 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Attribute, 65023>, D>(
6938 self.additional_attributes.as_ref().map(<fidl::encoding::Vector<Attribute, 65023> as fidl::encoding::ValueTypeMarker>::borrow),
6939 encoder, offset + cur_offset, depth
6940 )?;
6941
6942 _prev_end_offset = cur_offset + envelope_size;
6943
6944 Ok(())
6945 }
6946 }
6947
6948 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceDefinition {
6949 #[inline(always)]
6950 fn new_empty() -> Self {
6951 Self::default()
6952 }
6953
6954 unsafe fn decode(
6955 &mut self,
6956 decoder: &mut fidl::encoding::Decoder<'_, D>,
6957 offset: usize,
6958 mut depth: fidl::encoding::Depth,
6959 ) -> fidl::Result<()> {
6960 decoder.debug_check_bounds::<Self>(offset);
6961 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6962 None => return Err(fidl::Error::NotNullable),
6963 Some(len) => len,
6964 };
6965 if len == 0 {
6967 return Ok(());
6968 };
6969 depth.increment()?;
6970 let envelope_size = 8;
6971 let bytes_len = len * envelope_size;
6972 let offset = decoder.out_of_line_offset(bytes_len)?;
6973 let mut _next_ordinal_to_read = 0;
6975 let mut next_offset = offset;
6976 let end_offset = offset + bytes_len;
6977 _next_ordinal_to_read += 1;
6978 if next_offset >= end_offset {
6979 return Ok(());
6980 }
6981
6982 while _next_ordinal_to_read < 1 {
6984 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6985 _next_ordinal_to_read += 1;
6986 next_offset += envelope_size;
6987 }
6988
6989 let next_out_of_line = decoder.next_out_of_line();
6990 let handles_before = decoder.remaining_handles();
6991 if let Some((inlined, num_bytes, num_handles)) =
6992 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6993 {
6994 let member_inline_size = <fidl::encoding::Vector<
6995 fidl_fuchsia_bluetooth__common::Uuid,
6996 255,
6997 > as fidl::encoding::TypeMarker>::inline_size(
6998 decoder.context
6999 );
7000 if inlined != (member_inline_size <= 4) {
7001 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7002 }
7003 let inner_offset;
7004 let mut inner_depth = depth.clone();
7005 if inlined {
7006 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7007 inner_offset = next_offset;
7008 } else {
7009 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7010 inner_depth.increment()?;
7011 }
7012 let val_ref =
7013 self.service_class_uuids.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_bluetooth__common::Uuid, 255>, D));
7014 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_bluetooth__common::Uuid, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
7015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7016 {
7017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7018 }
7019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7021 }
7022 }
7023
7024 next_offset += envelope_size;
7025 _next_ordinal_to_read += 1;
7026 if next_offset >= end_offset {
7027 return Ok(());
7028 }
7029
7030 while _next_ordinal_to_read < 2 {
7032 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7033 _next_ordinal_to_read += 1;
7034 next_offset += envelope_size;
7035 }
7036
7037 let next_out_of_line = decoder.next_out_of_line();
7038 let handles_before = decoder.remaining_handles();
7039 if let Some((inlined, num_bytes, num_handles)) =
7040 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7041 {
7042 let member_inline_size = <fidl::encoding::Vector<ProtocolDescriptor, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7043 if inlined != (member_inline_size <= 4) {
7044 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7045 }
7046 let inner_offset;
7047 let mut inner_depth = depth.clone();
7048 if inlined {
7049 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7050 inner_offset = next_offset;
7051 } else {
7052 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7053 inner_depth.increment()?;
7054 }
7055 let val_ref = self.protocol_descriptor_list.get_or_insert_with(
7056 || fidl::new_empty!(fidl::encoding::Vector<ProtocolDescriptor, 255>, D),
7057 );
7058 fidl::decode!(fidl::encoding::Vector<ProtocolDescriptor, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
7059 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7060 {
7061 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7062 }
7063 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7064 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7065 }
7066 }
7067
7068 next_offset += envelope_size;
7069 _next_ordinal_to_read += 1;
7070 if next_offset >= end_offset {
7071 return Ok(());
7072 }
7073
7074 while _next_ordinal_to_read < 3 {
7076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7077 _next_ordinal_to_read += 1;
7078 next_offset += envelope_size;
7079 }
7080
7081 let next_out_of_line = decoder.next_out_of_line();
7082 let handles_before = decoder.remaining_handles();
7083 if let Some((inlined, num_bytes, num_handles)) =
7084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7085 {
7086 let member_inline_size = <fidl::encoding::Vector<
7087 fidl::encoding::Vector<ProtocolDescriptor, 255>,
7088 255,
7089 > as fidl::encoding::TypeMarker>::inline_size(
7090 decoder.context
7091 );
7092 if inlined != (member_inline_size <= 4) {
7093 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7094 }
7095 let inner_offset;
7096 let mut inner_depth = depth.clone();
7097 if inlined {
7098 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7099 inner_offset = next_offset;
7100 } else {
7101 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7102 inner_depth.increment()?;
7103 }
7104 let val_ref = self.additional_protocol_descriptor_lists.get_or_insert_with(|| {
7105 fidl::new_empty!(
7106 fidl::encoding::Vector<
7107 fidl::encoding::Vector<ProtocolDescriptor, 255>,
7108 255,
7109 >,
7110 D
7111 )
7112 });
7113 fidl::decode!(
7114 fidl::encoding::Vector<fidl::encoding::Vector<ProtocolDescriptor, 255>, 255>,
7115 D,
7116 val_ref,
7117 decoder,
7118 inner_offset,
7119 inner_depth
7120 )?;
7121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7122 {
7123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7124 }
7125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7127 }
7128 }
7129
7130 next_offset += envelope_size;
7131 _next_ordinal_to_read += 1;
7132 if next_offset >= end_offset {
7133 return Ok(());
7134 }
7135
7136 while _next_ordinal_to_read < 4 {
7138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7139 _next_ordinal_to_read += 1;
7140 next_offset += envelope_size;
7141 }
7142
7143 let next_out_of_line = decoder.next_out_of_line();
7144 let handles_before = decoder.remaining_handles();
7145 if let Some((inlined, num_bytes, num_handles)) =
7146 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7147 {
7148 let member_inline_size = <fidl::encoding::Vector<ProfileDescriptor, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7149 if inlined != (member_inline_size <= 4) {
7150 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7151 }
7152 let inner_offset;
7153 let mut inner_depth = depth.clone();
7154 if inlined {
7155 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7156 inner_offset = next_offset;
7157 } else {
7158 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7159 inner_depth.increment()?;
7160 }
7161 let val_ref = self.profile_descriptors.get_or_insert_with(
7162 || fidl::new_empty!(fidl::encoding::Vector<ProfileDescriptor, 255>, D),
7163 );
7164 fidl::decode!(fidl::encoding::Vector<ProfileDescriptor, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
7165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7166 {
7167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7168 }
7169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7171 }
7172 }
7173
7174 next_offset += envelope_size;
7175 _next_ordinal_to_read += 1;
7176 if next_offset >= end_offset {
7177 return Ok(());
7178 }
7179
7180 while _next_ordinal_to_read < 5 {
7182 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7183 _next_ordinal_to_read += 1;
7184 next_offset += envelope_size;
7185 }
7186
7187 let next_out_of_line = decoder.next_out_of_line();
7188 let handles_before = decoder.remaining_handles();
7189 if let Some((inlined, num_bytes, num_handles)) =
7190 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7191 {
7192 let member_inline_size = <fidl::encoding::Vector<Information, 85> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7193 if inlined != (member_inline_size <= 4) {
7194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7195 }
7196 let inner_offset;
7197 let mut inner_depth = depth.clone();
7198 if inlined {
7199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7200 inner_offset = next_offset;
7201 } else {
7202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7203 inner_depth.increment()?;
7204 }
7205 let val_ref = self.information.get_or_insert_with(
7206 || fidl::new_empty!(fidl::encoding::Vector<Information, 85>, D),
7207 );
7208 fidl::decode!(fidl::encoding::Vector<Information, 85>, D, val_ref, decoder, inner_offset, inner_depth)?;
7209 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7210 {
7211 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7212 }
7213 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7214 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7215 }
7216 }
7217
7218 next_offset += envelope_size;
7219 _next_ordinal_to_read += 1;
7220 if next_offset >= end_offset {
7221 return Ok(());
7222 }
7223
7224 while _next_ordinal_to_read < 6 {
7226 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7227 _next_ordinal_to_read += 1;
7228 next_offset += envelope_size;
7229 }
7230
7231 let next_out_of_line = decoder.next_out_of_line();
7232 let handles_before = decoder.remaining_handles();
7233 if let Some((inlined, num_bytes, num_handles)) =
7234 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7235 {
7236 let member_inline_size = <fidl::encoding::Vector<Attribute, 65023> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7237 if inlined != (member_inline_size <= 4) {
7238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7239 }
7240 let inner_offset;
7241 let mut inner_depth = depth.clone();
7242 if inlined {
7243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7244 inner_offset = next_offset;
7245 } else {
7246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7247 inner_depth.increment()?;
7248 }
7249 let val_ref = self.additional_attributes.get_or_insert_with(
7250 || fidl::new_empty!(fidl::encoding::Vector<Attribute, 65023>, D),
7251 );
7252 fidl::decode!(fidl::encoding::Vector<Attribute, 65023>, D, val_ref, decoder, inner_offset, inner_depth)?;
7253 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7254 {
7255 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7256 }
7257 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7258 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7259 }
7260 }
7261
7262 next_offset += envelope_size;
7263
7264 while next_offset < end_offset {
7266 _next_ordinal_to_read += 1;
7267 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7268 next_offset += envelope_size;
7269 }
7270
7271 Ok(())
7272 }
7273 }
7274
7275 impl fidl::encoding::ValueTypeMarker for AudioEncoderSettings {
7276 type Borrowed<'a> = &'a Self;
7277 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7278 value
7279 }
7280 }
7281
7282 unsafe impl fidl::encoding::TypeMarker for AudioEncoderSettings {
7283 type Owned = Self;
7284
7285 #[inline(always)]
7286 fn inline_align(_context: fidl::encoding::Context) -> usize {
7287 8
7288 }
7289
7290 #[inline(always)]
7291 fn inline_size(_context: fidl::encoding::Context) -> usize {
7292 16
7293 }
7294 }
7295
7296 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioEncoderSettings, D>
7297 for &AudioEncoderSettings
7298 {
7299 #[inline]
7300 unsafe fn encode(
7301 self,
7302 encoder: &mut fidl::encoding::Encoder<'_, D>,
7303 offset: usize,
7304 _depth: fidl::encoding::Depth,
7305 ) -> fidl::Result<()> {
7306 encoder.debug_check_bounds::<AudioEncoderSettings>(offset);
7307 encoder.write_num::<u64>(self.ordinal(), offset);
7308 match self {
7309 AudioEncoderSettings::Sbc(ref val) => {
7310 fidl::encoding::encode_in_envelope::<fidl_fuchsia_media__common::SbcEncoderSettings, D>(
7311 <fidl_fuchsia_media__common::SbcEncoderSettings as fidl::encoding::ValueTypeMarker>::borrow(val),
7312 encoder, offset + 8, _depth
7313 )
7314 }
7315 AudioEncoderSettings::Aac(ref val) => {
7316 fidl::encoding::encode_in_envelope::<fidl_fuchsia_media__common::AacEncoderSettings, D>(
7317 <fidl_fuchsia_media__common::AacEncoderSettings as fidl::encoding::ValueTypeMarker>::borrow(val),
7318 encoder, offset + 8, _depth
7319 )
7320 }
7321 AudioEncoderSettings::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7322 }
7323 }
7324 }
7325
7326 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioEncoderSettings {
7327 #[inline(always)]
7328 fn new_empty() -> Self {
7329 Self::__SourceBreaking { unknown_ordinal: 0 }
7330 }
7331
7332 #[inline]
7333 unsafe fn decode(
7334 &mut self,
7335 decoder: &mut fidl::encoding::Decoder<'_, D>,
7336 offset: usize,
7337 mut depth: fidl::encoding::Depth,
7338 ) -> fidl::Result<()> {
7339 decoder.debug_check_bounds::<Self>(offset);
7340 #[allow(unused_variables)]
7341 let next_out_of_line = decoder.next_out_of_line();
7342 let handles_before = decoder.remaining_handles();
7343 let (ordinal, inlined, num_bytes, num_handles) =
7344 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7345
7346 let member_inline_size = match ordinal {
7347 1 => <fidl_fuchsia_media__common::SbcEncoderSettings as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7348 2 => <fidl_fuchsia_media__common::AacEncoderSettings as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7349 0 => return Err(fidl::Error::UnknownUnionTag),
7350 _ => num_bytes as usize,
7351 };
7352
7353 if inlined != (member_inline_size <= 4) {
7354 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7355 }
7356 let _inner_offset;
7357 if inlined {
7358 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7359 _inner_offset = offset + 8;
7360 } else {
7361 depth.increment()?;
7362 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7363 }
7364 match ordinal {
7365 1 => {
7366 #[allow(irrefutable_let_patterns)]
7367 if let AudioEncoderSettings::Sbc(_) = self {
7368 } else {
7370 *self = AudioEncoderSettings::Sbc(fidl::new_empty!(
7372 fidl_fuchsia_media__common::SbcEncoderSettings,
7373 D
7374 ));
7375 }
7376 #[allow(irrefutable_let_patterns)]
7377 if let AudioEncoderSettings::Sbc(ref mut val) = self {
7378 fidl::decode!(
7379 fidl_fuchsia_media__common::SbcEncoderSettings,
7380 D,
7381 val,
7382 decoder,
7383 _inner_offset,
7384 depth
7385 )?;
7386 } else {
7387 unreachable!()
7388 }
7389 }
7390 2 => {
7391 #[allow(irrefutable_let_patterns)]
7392 if let AudioEncoderSettings::Aac(_) = self {
7393 } else {
7395 *self = AudioEncoderSettings::Aac(fidl::new_empty!(
7397 fidl_fuchsia_media__common::AacEncoderSettings,
7398 D
7399 ));
7400 }
7401 #[allow(irrefutable_let_patterns)]
7402 if let AudioEncoderSettings::Aac(ref mut val) = self {
7403 fidl::decode!(
7404 fidl_fuchsia_media__common::AacEncoderSettings,
7405 D,
7406 val,
7407 decoder,
7408 _inner_offset,
7409 depth
7410 )?;
7411 } else {
7412 unreachable!()
7413 }
7414 }
7415 #[allow(deprecated)]
7416 ordinal => {
7417 for _ in 0..num_handles {
7418 decoder.drop_next_handle()?;
7419 }
7420 *self = AudioEncoderSettings::__SourceBreaking { unknown_ordinal: ordinal };
7421 }
7422 }
7423 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7424 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7425 }
7426 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7427 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7428 }
7429 Ok(())
7430 }
7431 }
7432
7433 impl fidl::encoding::ValueTypeMarker for AudioOffloadFeatures {
7434 type Borrowed<'a> = &'a Self;
7435 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7436 value
7437 }
7438 }
7439
7440 unsafe impl fidl::encoding::TypeMarker for AudioOffloadFeatures {
7441 type Owned = Self;
7442
7443 #[inline(always)]
7444 fn inline_align(_context: fidl::encoding::Context) -> usize {
7445 8
7446 }
7447
7448 #[inline(always)]
7449 fn inline_size(_context: fidl::encoding::Context) -> usize {
7450 16
7451 }
7452 }
7453
7454 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioOffloadFeatures, D>
7455 for &AudioOffloadFeatures
7456 {
7457 #[inline]
7458 unsafe fn encode(
7459 self,
7460 encoder: &mut fidl::encoding::Encoder<'_, D>,
7461 offset: usize,
7462 _depth: fidl::encoding::Depth,
7463 ) -> fidl::Result<()> {
7464 encoder.debug_check_bounds::<AudioOffloadFeatures>(offset);
7465 encoder.write_num::<u64>(self.ordinal(), offset);
7466 match self {
7467 AudioOffloadFeatures::Sbc(ref val) => {
7468 fidl::encoding::encode_in_envelope::<AudioSbcSupport, D>(
7469 <AudioSbcSupport as fidl::encoding::ValueTypeMarker>::borrow(val),
7470 encoder,
7471 offset + 8,
7472 _depth,
7473 )
7474 }
7475 AudioOffloadFeatures::Aac(ref val) => {
7476 fidl::encoding::encode_in_envelope::<AudioAacSupport, D>(
7477 <AudioAacSupport as fidl::encoding::ValueTypeMarker>::borrow(val),
7478 encoder,
7479 offset + 8,
7480 _depth,
7481 )
7482 }
7483 AudioOffloadFeatures::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7484 }
7485 }
7486 }
7487
7488 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioOffloadFeatures {
7489 #[inline(always)]
7490 fn new_empty() -> Self {
7491 Self::__SourceBreaking { unknown_ordinal: 0 }
7492 }
7493
7494 #[inline]
7495 unsafe fn decode(
7496 &mut self,
7497 decoder: &mut fidl::encoding::Decoder<'_, D>,
7498 offset: usize,
7499 mut depth: fidl::encoding::Depth,
7500 ) -> fidl::Result<()> {
7501 decoder.debug_check_bounds::<Self>(offset);
7502 #[allow(unused_variables)]
7503 let next_out_of_line = decoder.next_out_of_line();
7504 let handles_before = decoder.remaining_handles();
7505 let (ordinal, inlined, num_bytes, num_handles) =
7506 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7507
7508 let member_inline_size = match ordinal {
7509 1 => <AudioSbcSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7510 2 => <AudioAacSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7511 0 => return Err(fidl::Error::UnknownUnionTag),
7512 _ => num_bytes as usize,
7513 };
7514
7515 if inlined != (member_inline_size <= 4) {
7516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7517 }
7518 let _inner_offset;
7519 if inlined {
7520 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7521 _inner_offset = offset + 8;
7522 } else {
7523 depth.increment()?;
7524 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7525 }
7526 match ordinal {
7527 1 => {
7528 #[allow(irrefutable_let_patterns)]
7529 if let AudioOffloadFeatures::Sbc(_) = self {
7530 } else {
7532 *self = AudioOffloadFeatures::Sbc(fidl::new_empty!(AudioSbcSupport, D));
7534 }
7535 #[allow(irrefutable_let_patterns)]
7536 if let AudioOffloadFeatures::Sbc(ref mut val) = self {
7537 fidl::decode!(AudioSbcSupport, D, val, decoder, _inner_offset, depth)?;
7538 } else {
7539 unreachable!()
7540 }
7541 }
7542 2 => {
7543 #[allow(irrefutable_let_patterns)]
7544 if let AudioOffloadFeatures::Aac(_) = self {
7545 } else {
7547 *self = AudioOffloadFeatures::Aac(fidl::new_empty!(AudioAacSupport, D));
7549 }
7550 #[allow(irrefutable_let_patterns)]
7551 if let AudioOffloadFeatures::Aac(ref mut val) = self {
7552 fidl::decode!(AudioAacSupport, D, val, decoder, _inner_offset, depth)?;
7553 } else {
7554 unreachable!()
7555 }
7556 }
7557 #[allow(deprecated)]
7558 ordinal => {
7559 for _ in 0..num_handles {
7560 decoder.drop_next_handle()?;
7561 }
7562 *self = AudioOffloadFeatures::__SourceBreaking { unknown_ordinal: ordinal };
7563 }
7564 }
7565 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7566 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7567 }
7568 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7569 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7570 }
7571 Ok(())
7572 }
7573 }
7574
7575 impl fidl::encoding::ValueTypeMarker for ConnectParameters {
7576 type Borrowed<'a> = &'a Self;
7577 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7578 value
7579 }
7580 }
7581
7582 unsafe impl fidl::encoding::TypeMarker for ConnectParameters {
7583 type Owned = Self;
7584
7585 #[inline(always)]
7586 fn inline_align(_context: fidl::encoding::Context) -> usize {
7587 8
7588 }
7589
7590 #[inline(always)]
7591 fn inline_size(_context: fidl::encoding::Context) -> usize {
7592 16
7593 }
7594 }
7595
7596 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectParameters, D>
7597 for &ConnectParameters
7598 {
7599 #[inline]
7600 unsafe fn encode(
7601 self,
7602 encoder: &mut fidl::encoding::Encoder<'_, D>,
7603 offset: usize,
7604 _depth: fidl::encoding::Depth,
7605 ) -> fidl::Result<()> {
7606 encoder.debug_check_bounds::<ConnectParameters>(offset);
7607 encoder.write_num::<u64>(self.ordinal(), offset);
7608 match self {
7609 ConnectParameters::L2cap(ref val) => {
7610 fidl::encoding::encode_in_envelope::<L2capParameters, D>(
7611 <L2capParameters as fidl::encoding::ValueTypeMarker>::borrow(val),
7612 encoder,
7613 offset + 8,
7614 _depth,
7615 )
7616 }
7617 ConnectParameters::Rfcomm(ref val) => {
7618 fidl::encoding::encode_in_envelope::<RfcommParameters, D>(
7619 <RfcommParameters as fidl::encoding::ValueTypeMarker>::borrow(val),
7620 encoder,
7621 offset + 8,
7622 _depth,
7623 )
7624 }
7625 }
7626 }
7627 }
7628
7629 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectParameters {
7630 #[inline(always)]
7631 fn new_empty() -> Self {
7632 Self::L2cap(fidl::new_empty!(L2capParameters, D))
7633 }
7634
7635 #[inline]
7636 unsafe fn decode(
7637 &mut self,
7638 decoder: &mut fidl::encoding::Decoder<'_, D>,
7639 offset: usize,
7640 mut depth: fidl::encoding::Depth,
7641 ) -> fidl::Result<()> {
7642 decoder.debug_check_bounds::<Self>(offset);
7643 #[allow(unused_variables)]
7644 let next_out_of_line = decoder.next_out_of_line();
7645 let handles_before = decoder.remaining_handles();
7646 let (ordinal, inlined, num_bytes, num_handles) =
7647 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7648
7649 let member_inline_size = match ordinal {
7650 1 => <L2capParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7651 2 => <RfcommParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7652 _ => return Err(fidl::Error::UnknownUnionTag),
7653 };
7654
7655 if inlined != (member_inline_size <= 4) {
7656 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7657 }
7658 let _inner_offset;
7659 if inlined {
7660 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7661 _inner_offset = offset + 8;
7662 } else {
7663 depth.increment()?;
7664 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7665 }
7666 match ordinal {
7667 1 => {
7668 #[allow(irrefutable_let_patterns)]
7669 if let ConnectParameters::L2cap(_) = self {
7670 } else {
7672 *self = ConnectParameters::L2cap(fidl::new_empty!(L2capParameters, D));
7674 }
7675 #[allow(irrefutable_let_patterns)]
7676 if let ConnectParameters::L2cap(ref mut val) = self {
7677 fidl::decode!(L2capParameters, D, val, decoder, _inner_offset, depth)?;
7678 } else {
7679 unreachable!()
7680 }
7681 }
7682 2 => {
7683 #[allow(irrefutable_let_patterns)]
7684 if let ConnectParameters::Rfcomm(_) = self {
7685 } else {
7687 *self = ConnectParameters::Rfcomm(fidl::new_empty!(RfcommParameters, D));
7689 }
7690 #[allow(irrefutable_let_patterns)]
7691 if let ConnectParameters::Rfcomm(ref mut val) = self {
7692 fidl::decode!(RfcommParameters, D, val, decoder, _inner_offset, depth)?;
7693 } else {
7694 unreachable!()
7695 }
7696 }
7697 ordinal => panic!("unexpected ordinal {:?}", ordinal),
7698 }
7699 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7700 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7701 }
7702 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7703 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7704 }
7705 Ok(())
7706 }
7707 }
7708
7709 impl fidl::encoding::ValueTypeMarker for DataElement {
7710 type Borrowed<'a> = &'a Self;
7711 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7712 value
7713 }
7714 }
7715
7716 unsafe impl fidl::encoding::TypeMarker for DataElement {
7717 type Owned = Self;
7718
7719 #[inline(always)]
7720 fn inline_align(_context: fidl::encoding::Context) -> usize {
7721 8
7722 }
7723
7724 #[inline(always)]
7725 fn inline_size(_context: fidl::encoding::Context) -> usize {
7726 16
7727 }
7728 }
7729
7730 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataElement, D>
7731 for &DataElement
7732 {
7733 #[inline]
7734 unsafe fn encode(
7735 self,
7736 encoder: &mut fidl::encoding::Encoder<'_, D>,
7737 offset: usize,
7738 _depth: fidl::encoding::Depth,
7739 ) -> fidl::Result<()> {
7740 encoder.debug_check_bounds::<DataElement>(offset);
7741 encoder.write_num::<u64>(self.ordinal(), offset);
7742 match self {
7743 DataElement::Int8(ref val) => {
7744 fidl::encoding::encode_in_envelope::<i8, D>(
7745 <i8 as fidl::encoding::ValueTypeMarker>::borrow(val),
7746 encoder, offset + 8, _depth
7747 )
7748 }
7749 DataElement::Int16(ref val) => {
7750 fidl::encoding::encode_in_envelope::<i16, D>(
7751 <i16 as fidl::encoding::ValueTypeMarker>::borrow(val),
7752 encoder, offset + 8, _depth
7753 )
7754 }
7755 DataElement::Int32(ref val) => {
7756 fidl::encoding::encode_in_envelope::<i32, D>(
7757 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7758 encoder, offset + 8, _depth
7759 )
7760 }
7761 DataElement::Int64(ref val) => {
7762 fidl::encoding::encode_in_envelope::<i64, D>(
7763 <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
7764 encoder, offset + 8, _depth
7765 )
7766 }
7767 DataElement::Uint8(ref val) => {
7768 fidl::encoding::encode_in_envelope::<u8, D>(
7769 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
7770 encoder, offset + 8, _depth
7771 )
7772 }
7773 DataElement::Uint16(ref val) => {
7774 fidl::encoding::encode_in_envelope::<u16, D>(
7775 <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
7776 encoder, offset + 8, _depth
7777 )
7778 }
7779 DataElement::Uint32(ref val) => {
7780 fidl::encoding::encode_in_envelope::<u32, D>(
7781 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7782 encoder, offset + 8, _depth
7783 )
7784 }
7785 DataElement::Uint64(ref val) => {
7786 fidl::encoding::encode_in_envelope::<u64, D>(
7787 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
7788 encoder, offset + 8, _depth
7789 )
7790 }
7791 DataElement::Str(ref val) => {
7792 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 1024>, D>(
7793 <fidl::encoding::Vector<u8, 1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
7794 encoder, offset + 8, _depth
7795 )
7796 }
7797 DataElement::Url(ref val) => {
7798 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, D>(
7799 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
7800 encoder, offset + 8, _depth
7801 )
7802 }
7803 DataElement::Uuid(ref val) => {
7804 fidl::encoding::encode_in_envelope::<fidl_fuchsia_bluetooth__common::Uuid, D>(
7805 <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::ValueTypeMarker>::borrow(val),
7806 encoder, offset + 8, _depth
7807 )
7808 }
7809 DataElement::B(ref val) => {
7810 fidl::encoding::encode_in_envelope::<bool, D>(
7811 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
7812 encoder, offset + 8, _depth
7813 )
7814 }
7815 DataElement::Sequence(ref val) => {
7816 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>, D>(
7817 <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::ValueTypeMarker>::borrow(val),
7818 encoder, offset + 8, _depth
7819 )
7820 }
7821 DataElement::Alternatives(ref val) => {
7822 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>, D>(
7823 <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::ValueTypeMarker>::borrow(val),
7824 encoder, offset + 8, _depth
7825 )
7826 }
7827 DataElement::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7828 }
7829 }
7830 }
7831
7832 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataElement {
7833 #[inline(always)]
7834 fn new_empty() -> Self {
7835 Self::__SourceBreaking { unknown_ordinal: 0 }
7836 }
7837
7838 #[inline]
7839 unsafe fn decode(
7840 &mut self,
7841 decoder: &mut fidl::encoding::Decoder<'_, D>,
7842 offset: usize,
7843 mut depth: fidl::encoding::Depth,
7844 ) -> fidl::Result<()> {
7845 decoder.debug_check_bounds::<Self>(offset);
7846 #[allow(unused_variables)]
7847 let next_out_of_line = decoder.next_out_of_line();
7848 let handles_before = decoder.remaining_handles();
7849 let (ordinal, inlined, num_bytes, num_handles) =
7850 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7851
7852 let member_inline_size = match ordinal {
7853 1 => <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7854 2 => <i16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7855 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7856 4 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7857 5 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7858 6 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7859 7 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7860 8 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7861 9 => <fidl::encoding::Vector<u8, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7862 10 => <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7863 11 => <fidl_fuchsia_bluetooth__common::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7864 12 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7865 13 => <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7866 14 => <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7867 0 => return Err(fidl::Error::UnknownUnionTag),
7868 _ => num_bytes as usize,
7869 };
7870
7871 if inlined != (member_inline_size <= 4) {
7872 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7873 }
7874 let _inner_offset;
7875 if inlined {
7876 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7877 _inner_offset = offset + 8;
7878 } else {
7879 depth.increment()?;
7880 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7881 }
7882 match ordinal {
7883 1 => {
7884 #[allow(irrefutable_let_patterns)]
7885 if let DataElement::Int8(_) = self {
7886 } else {
7888 *self = DataElement::Int8(fidl::new_empty!(i8, D));
7890 }
7891 #[allow(irrefutable_let_patterns)]
7892 if let DataElement::Int8(ref mut val) = self {
7893 fidl::decode!(i8, D, val, decoder, _inner_offset, depth)?;
7894 } else {
7895 unreachable!()
7896 }
7897 }
7898 2 => {
7899 #[allow(irrefutable_let_patterns)]
7900 if let DataElement::Int16(_) = self {
7901 } else {
7903 *self = DataElement::Int16(fidl::new_empty!(i16, D));
7905 }
7906 #[allow(irrefutable_let_patterns)]
7907 if let DataElement::Int16(ref mut val) = self {
7908 fidl::decode!(i16, D, val, decoder, _inner_offset, depth)?;
7909 } else {
7910 unreachable!()
7911 }
7912 }
7913 3 => {
7914 #[allow(irrefutable_let_patterns)]
7915 if let DataElement::Int32(_) = self {
7916 } else {
7918 *self = DataElement::Int32(fidl::new_empty!(i32, D));
7920 }
7921 #[allow(irrefutable_let_patterns)]
7922 if let DataElement::Int32(ref mut val) = self {
7923 fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
7924 } else {
7925 unreachable!()
7926 }
7927 }
7928 4 => {
7929 #[allow(irrefutable_let_patterns)]
7930 if let DataElement::Int64(_) = self {
7931 } else {
7933 *self = DataElement::Int64(fidl::new_empty!(i64, D));
7935 }
7936 #[allow(irrefutable_let_patterns)]
7937 if let DataElement::Int64(ref mut val) = self {
7938 fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
7939 } else {
7940 unreachable!()
7941 }
7942 }
7943 5 => {
7944 #[allow(irrefutable_let_patterns)]
7945 if let DataElement::Uint8(_) = self {
7946 } else {
7948 *self = DataElement::Uint8(fidl::new_empty!(u8, D));
7950 }
7951 #[allow(irrefutable_let_patterns)]
7952 if let DataElement::Uint8(ref mut val) = self {
7953 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
7954 } else {
7955 unreachable!()
7956 }
7957 }
7958 6 => {
7959 #[allow(irrefutable_let_patterns)]
7960 if let DataElement::Uint16(_) = self {
7961 } else {
7963 *self = DataElement::Uint16(fidl::new_empty!(u16, D));
7965 }
7966 #[allow(irrefutable_let_patterns)]
7967 if let DataElement::Uint16(ref mut val) = self {
7968 fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
7969 } else {
7970 unreachable!()
7971 }
7972 }
7973 7 => {
7974 #[allow(irrefutable_let_patterns)]
7975 if let DataElement::Uint32(_) = self {
7976 } else {
7978 *self = DataElement::Uint32(fidl::new_empty!(u32, D));
7980 }
7981 #[allow(irrefutable_let_patterns)]
7982 if let DataElement::Uint32(ref mut val) = self {
7983 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
7984 } else {
7985 unreachable!()
7986 }
7987 }
7988 8 => {
7989 #[allow(irrefutable_let_patterns)]
7990 if let DataElement::Uint64(_) = self {
7991 } else {
7993 *self = DataElement::Uint64(fidl::new_empty!(u64, D));
7995 }
7996 #[allow(irrefutable_let_patterns)]
7997 if let DataElement::Uint64(ref mut val) = self {
7998 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
7999 } else {
8000 unreachable!()
8001 }
8002 }
8003 9 => {
8004 #[allow(irrefutable_let_patterns)]
8005 if let DataElement::Str(_) = self {
8006 } else {
8008 *self =
8010 DataElement::Str(fidl::new_empty!(fidl::encoding::Vector<u8, 1024>, D));
8011 }
8012 #[allow(irrefutable_let_patterns)]
8013 if let DataElement::Str(ref mut val) = self {
8014 fidl::decode!(fidl::encoding::Vector<u8, 1024>, D, val, decoder, _inner_offset, depth)?;
8015 } else {
8016 unreachable!()
8017 }
8018 }
8019 10 => {
8020 #[allow(irrefutable_let_patterns)]
8021 if let DataElement::Url(_) = self {
8022 } else {
8024 *self = DataElement::Url(fidl::new_empty!(
8026 fidl::encoding::BoundedString<4096>,
8027 D
8028 ));
8029 }
8030 #[allow(irrefutable_let_patterns)]
8031 if let DataElement::Url(ref mut val) = self {
8032 fidl::decode!(
8033 fidl::encoding::BoundedString<4096>,
8034 D,
8035 val,
8036 decoder,
8037 _inner_offset,
8038 depth
8039 )?;
8040 } else {
8041 unreachable!()
8042 }
8043 }
8044 11 => {
8045 #[allow(irrefutable_let_patterns)]
8046 if let DataElement::Uuid(_) = self {
8047 } else {
8049 *self = DataElement::Uuid(fidl::new_empty!(
8051 fidl_fuchsia_bluetooth__common::Uuid,
8052 D
8053 ));
8054 }
8055 #[allow(irrefutable_let_patterns)]
8056 if let DataElement::Uuid(ref mut val) = self {
8057 fidl::decode!(
8058 fidl_fuchsia_bluetooth__common::Uuid,
8059 D,
8060 val,
8061 decoder,
8062 _inner_offset,
8063 depth
8064 )?;
8065 } else {
8066 unreachable!()
8067 }
8068 }
8069 12 => {
8070 #[allow(irrefutable_let_patterns)]
8071 if let DataElement::B(_) = self {
8072 } else {
8074 *self = DataElement::B(fidl::new_empty!(bool, D));
8076 }
8077 #[allow(irrefutable_let_patterns)]
8078 if let DataElement::B(ref mut val) = self {
8079 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
8080 } else {
8081 unreachable!()
8082 }
8083 }
8084 13 => {
8085 #[allow(irrefutable_let_patterns)]
8086 if let DataElement::Sequence(_) = self {
8087 } else {
8089 *self = DataElement::Sequence(fidl::new_empty!(
8091 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8092 D
8093 ));
8094 }
8095 #[allow(irrefutable_let_patterns)]
8096 if let DataElement::Sequence(ref mut val) = self {
8097 fidl::decode!(
8098 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8099 D,
8100 val,
8101 decoder,
8102 _inner_offset,
8103 depth
8104 )?;
8105 } else {
8106 unreachable!()
8107 }
8108 }
8109 14 => {
8110 #[allow(irrefutable_let_patterns)]
8111 if let DataElement::Alternatives(_) = self {
8112 } else {
8114 *self = DataElement::Alternatives(fidl::new_empty!(
8116 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8117 D
8118 ));
8119 }
8120 #[allow(irrefutable_let_patterns)]
8121 if let DataElement::Alternatives(ref mut val) = self {
8122 fidl::decode!(
8123 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8124 D,
8125 val,
8126 decoder,
8127 _inner_offset,
8128 depth
8129 )?;
8130 } else {
8131 unreachable!()
8132 }
8133 }
8134 #[allow(deprecated)]
8135 ordinal => {
8136 for _ in 0..num_handles {
8137 decoder.drop_next_handle()?;
8138 }
8139 *self = DataElement::__SourceBreaking { unknown_ordinal: ordinal };
8140 }
8141 }
8142 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8143 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8144 }
8145 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8146 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8147 }
8148 Ok(())
8149 }
8150 }
8151
8152 impl fidl::encoding::ValueTypeMarker for ScoConnectionOnConnectionCompleteRequest {
8153 type Borrowed<'a> = &'a Self;
8154 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8155 value
8156 }
8157 }
8158
8159 unsafe impl fidl::encoding::TypeMarker for ScoConnectionOnConnectionCompleteRequest {
8160 type Owned = Self;
8161
8162 #[inline(always)]
8163 fn inline_align(_context: fidl::encoding::Context) -> usize {
8164 8
8165 }
8166
8167 #[inline(always)]
8168 fn inline_size(_context: fidl::encoding::Context) -> usize {
8169 16
8170 }
8171 }
8172
8173 unsafe impl<D: fidl::encoding::ResourceDialect>
8174 fidl::encoding::Encode<ScoConnectionOnConnectionCompleteRequest, D>
8175 for &ScoConnectionOnConnectionCompleteRequest
8176 {
8177 #[inline]
8178 unsafe fn encode(
8179 self,
8180 encoder: &mut fidl::encoding::Encoder<'_, D>,
8181 offset: usize,
8182 _depth: fidl::encoding::Depth,
8183 ) -> fidl::Result<()> {
8184 encoder.debug_check_bounds::<ScoConnectionOnConnectionCompleteRequest>(offset);
8185 encoder.write_num::<u64>(self.ordinal(), offset);
8186 match self {
8187 ScoConnectionOnConnectionCompleteRequest::ConnectedParams(ref val) => {
8188 fidl::encoding::encode_in_envelope::<ScoConnectionParameters, D>(
8189 <ScoConnectionParameters as fidl::encoding::ValueTypeMarker>::borrow(val),
8190 encoder,
8191 offset + 8,
8192 _depth,
8193 )
8194 }
8195 ScoConnectionOnConnectionCompleteRequest::Error(ref val) => {
8196 fidl::encoding::encode_in_envelope::<ScoErrorCode, D>(
8197 <ScoErrorCode as fidl::encoding::ValueTypeMarker>::borrow(val),
8198 encoder,
8199 offset + 8,
8200 _depth,
8201 )
8202 }
8203 ScoConnectionOnConnectionCompleteRequest::__SourceBreaking { .. } => {
8204 Err(fidl::Error::UnknownUnionTag)
8205 }
8206 }
8207 }
8208 }
8209
8210 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8211 for ScoConnectionOnConnectionCompleteRequest
8212 {
8213 #[inline(always)]
8214 fn new_empty() -> Self {
8215 Self::__SourceBreaking { unknown_ordinal: 0 }
8216 }
8217
8218 #[inline]
8219 unsafe fn decode(
8220 &mut self,
8221 decoder: &mut fidl::encoding::Decoder<'_, D>,
8222 offset: usize,
8223 mut depth: fidl::encoding::Depth,
8224 ) -> fidl::Result<()> {
8225 decoder.debug_check_bounds::<Self>(offset);
8226 #[allow(unused_variables)]
8227 let next_out_of_line = decoder.next_out_of_line();
8228 let handles_before = decoder.remaining_handles();
8229 let (ordinal, inlined, num_bytes, num_handles) =
8230 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8231
8232 let member_inline_size = match ordinal {
8233 1 => <ScoConnectionParameters as fidl::encoding::TypeMarker>::inline_size(
8234 decoder.context,
8235 ),
8236 2 => <ScoErrorCode as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8237 0 => return Err(fidl::Error::UnknownUnionTag),
8238 _ => num_bytes as usize,
8239 };
8240
8241 if inlined != (member_inline_size <= 4) {
8242 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8243 }
8244 let _inner_offset;
8245 if inlined {
8246 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8247 _inner_offset = offset + 8;
8248 } else {
8249 depth.increment()?;
8250 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8251 }
8252 match ordinal {
8253 1 => {
8254 #[allow(irrefutable_let_patterns)]
8255 if let ScoConnectionOnConnectionCompleteRequest::ConnectedParams(_) = self {
8256 } else {
8258 *self = ScoConnectionOnConnectionCompleteRequest::ConnectedParams(
8260 fidl::new_empty!(ScoConnectionParameters, D),
8261 );
8262 }
8263 #[allow(irrefutable_let_patterns)]
8264 if let ScoConnectionOnConnectionCompleteRequest::ConnectedParams(ref mut val) =
8265 self
8266 {
8267 fidl::decode!(
8268 ScoConnectionParameters,
8269 D,
8270 val,
8271 decoder,
8272 _inner_offset,
8273 depth
8274 )?;
8275 } else {
8276 unreachable!()
8277 }
8278 }
8279 2 => {
8280 #[allow(irrefutable_let_patterns)]
8281 if let ScoConnectionOnConnectionCompleteRequest::Error(_) = self {
8282 } else {
8284 *self = ScoConnectionOnConnectionCompleteRequest::Error(fidl::new_empty!(
8286 ScoErrorCode,
8287 D
8288 ));
8289 }
8290 #[allow(irrefutable_let_patterns)]
8291 if let ScoConnectionOnConnectionCompleteRequest::Error(ref mut val) = self {
8292 fidl::decode!(ScoErrorCode, D, val, decoder, _inner_offset, depth)?;
8293 } else {
8294 unreachable!()
8295 }
8296 }
8297 #[allow(deprecated)]
8298 ordinal => {
8299 for _ in 0..num_handles {
8300 decoder.drop_next_handle()?;
8301 }
8302 *self = ScoConnectionOnConnectionCompleteRequest::__SourceBreaking {
8303 unknown_ordinal: ordinal,
8304 };
8305 }
8306 }
8307 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8308 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8309 }
8310 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8311 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8312 }
8313 Ok(())
8314 }
8315 }
8316}