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::ChannelMode;
12
13pub type ChannelParameters = fidl_fuchsia_bluetooth::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::ChannelParameters,
900}
901
902impl fidl::Persistable for L2capParametersExtRequestParametersRequest {}
903
904#[derive(Clone, Debug, PartialEq)]
905pub struct L2capParametersExtRequestParametersResponse {
906 pub new: fidl_fuchsia_bluetooth::ChannelParameters,
907}
908
909impl fidl::Persistable for L2capParametersExtRequestParametersResponse {}
910
911#[derive(Clone, Debug, PartialEq)]
912pub struct ProfileConnectRequest {
913 pub peer_id: fidl_fuchsia_bluetooth::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::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::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::AssignedCodingFormat>,
1077 pub air_frame_size: Option<u16>,
1080 pub io_bandwidth: Option<u32>,
1083 pub io_coding_format: Option<fidl_fuchsia_bluetooth::AssignedCodingFormat>,
1086 pub io_frame_size: Option<u16>,
1089 pub io_pcm_data_format: Option<fidl_fuchsia_hardware_audio::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::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::SbcEncoderSettings),
1164 Aac(fidl_fuchsia_media::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::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
1441mod internal {
1442 use super::*;
1443 unsafe impl fidl::encoding::TypeMarker for A2dpDirectionPriority {
1444 type Owned = Self;
1445
1446 #[inline(always)]
1447 fn inline_align(_context: fidl::encoding::Context) -> usize {
1448 std::mem::align_of::<u32>()
1449 }
1450
1451 #[inline(always)]
1452 fn inline_size(_context: fidl::encoding::Context) -> usize {
1453 std::mem::size_of::<u32>()
1454 }
1455
1456 #[inline(always)]
1457 fn encode_is_copy() -> bool {
1458 true
1459 }
1460
1461 #[inline(always)]
1462 fn decode_is_copy() -> bool {
1463 false
1464 }
1465 }
1466
1467 impl fidl::encoding::ValueTypeMarker for A2dpDirectionPriority {
1468 type Borrowed<'a> = Self;
1469 #[inline(always)]
1470 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1471 *value
1472 }
1473 }
1474
1475 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1476 for A2dpDirectionPriority
1477 {
1478 #[inline]
1479 unsafe fn encode(
1480 self,
1481 encoder: &mut fidl::encoding::Encoder<'_, D>,
1482 offset: usize,
1483 _depth: fidl::encoding::Depth,
1484 ) -> fidl::Result<()> {
1485 encoder.debug_check_bounds::<Self>(offset);
1486 encoder.write_num(self.into_primitive(), offset);
1487 Ok(())
1488 }
1489 }
1490
1491 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for A2dpDirectionPriority {
1492 #[inline(always)]
1493 fn new_empty() -> Self {
1494 Self::Normal
1495 }
1496
1497 #[inline]
1498 unsafe fn decode(
1499 &mut self,
1500 decoder: &mut fidl::encoding::Decoder<'_, D>,
1501 offset: usize,
1502 _depth: fidl::encoding::Depth,
1503 ) -> fidl::Result<()> {
1504 decoder.debug_check_bounds::<Self>(offset);
1505 let prim = decoder.read_num::<u32>(offset);
1506
1507 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1508 Ok(())
1509 }
1510 }
1511 unsafe impl fidl::encoding::TypeMarker for AudioBitsPerSample {
1512 type Owned = Self;
1513
1514 #[inline(always)]
1515 fn inline_align(_context: fidl::encoding::Context) -> usize {
1516 std::mem::align_of::<u8>()
1517 }
1518
1519 #[inline(always)]
1520 fn inline_size(_context: fidl::encoding::Context) -> usize {
1521 std::mem::size_of::<u8>()
1522 }
1523
1524 #[inline(always)]
1525 fn encode_is_copy() -> bool {
1526 false
1527 }
1528
1529 #[inline(always)]
1530 fn decode_is_copy() -> bool {
1531 false
1532 }
1533 }
1534
1535 impl fidl::encoding::ValueTypeMarker for AudioBitsPerSample {
1536 type Borrowed<'a> = Self;
1537 #[inline(always)]
1538 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1539 *value
1540 }
1541 }
1542
1543 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1544 for AudioBitsPerSample
1545 {
1546 #[inline]
1547 unsafe fn encode(
1548 self,
1549 encoder: &mut fidl::encoding::Encoder<'_, D>,
1550 offset: usize,
1551 _depth: fidl::encoding::Depth,
1552 ) -> fidl::Result<()> {
1553 encoder.debug_check_bounds::<Self>(offset);
1554 encoder.write_num(self.into_primitive(), offset);
1555 Ok(())
1556 }
1557 }
1558
1559 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioBitsPerSample {
1560 #[inline(always)]
1561 fn new_empty() -> Self {
1562 Self::unknown()
1563 }
1564
1565 #[inline]
1566 unsafe fn decode(
1567 &mut self,
1568 decoder: &mut fidl::encoding::Decoder<'_, D>,
1569 offset: usize,
1570 _depth: fidl::encoding::Depth,
1571 ) -> fidl::Result<()> {
1572 decoder.debug_check_bounds::<Self>(offset);
1573 let prim = decoder.read_num::<u8>(offset);
1574
1575 *self = Self::from_primitive_allow_unknown(prim);
1576 Ok(())
1577 }
1578 }
1579 unsafe impl fidl::encoding::TypeMarker for AudioChannelMode {
1580 type Owned = Self;
1581
1582 #[inline(always)]
1583 fn inline_align(_context: fidl::encoding::Context) -> usize {
1584 std::mem::align_of::<u8>()
1585 }
1586
1587 #[inline(always)]
1588 fn inline_size(_context: fidl::encoding::Context) -> usize {
1589 std::mem::size_of::<u8>()
1590 }
1591
1592 #[inline(always)]
1593 fn encode_is_copy() -> bool {
1594 false
1595 }
1596
1597 #[inline(always)]
1598 fn decode_is_copy() -> bool {
1599 false
1600 }
1601 }
1602
1603 impl fidl::encoding::ValueTypeMarker for AudioChannelMode {
1604 type Borrowed<'a> = Self;
1605 #[inline(always)]
1606 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1607 *value
1608 }
1609 }
1610
1611 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1612 for AudioChannelMode
1613 {
1614 #[inline]
1615 unsafe fn encode(
1616 self,
1617 encoder: &mut fidl::encoding::Encoder<'_, D>,
1618 offset: usize,
1619 _depth: fidl::encoding::Depth,
1620 ) -> fidl::Result<()> {
1621 encoder.debug_check_bounds::<Self>(offset);
1622 encoder.write_num(self.into_primitive(), offset);
1623 Ok(())
1624 }
1625 }
1626
1627 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioChannelMode {
1628 #[inline(always)]
1629 fn new_empty() -> Self {
1630 Self::unknown()
1631 }
1632
1633 #[inline]
1634 unsafe fn decode(
1635 &mut self,
1636 decoder: &mut fidl::encoding::Decoder<'_, D>,
1637 offset: usize,
1638 _depth: fidl::encoding::Depth,
1639 ) -> fidl::Result<()> {
1640 decoder.debug_check_bounds::<Self>(offset);
1641 let prim = decoder.read_num::<u8>(offset);
1642
1643 *self = Self::from_primitive_allow_unknown(prim);
1644 Ok(())
1645 }
1646 }
1647 unsafe impl fidl::encoding::TypeMarker for AudioSamplingFrequency {
1648 type Owned = Self;
1649
1650 #[inline(always)]
1651 fn inline_align(_context: fidl::encoding::Context) -> usize {
1652 std::mem::align_of::<u8>()
1653 }
1654
1655 #[inline(always)]
1656 fn inline_size(_context: fidl::encoding::Context) -> usize {
1657 std::mem::size_of::<u8>()
1658 }
1659
1660 #[inline(always)]
1661 fn encode_is_copy() -> bool {
1662 false
1663 }
1664
1665 #[inline(always)]
1666 fn decode_is_copy() -> bool {
1667 false
1668 }
1669 }
1670
1671 impl fidl::encoding::ValueTypeMarker for AudioSamplingFrequency {
1672 type Borrowed<'a> = Self;
1673 #[inline(always)]
1674 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1675 *value
1676 }
1677 }
1678
1679 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1680 for AudioSamplingFrequency
1681 {
1682 #[inline]
1683 unsafe fn encode(
1684 self,
1685 encoder: &mut fidl::encoding::Encoder<'_, D>,
1686 offset: usize,
1687 _depth: fidl::encoding::Depth,
1688 ) -> fidl::Result<()> {
1689 encoder.debug_check_bounds::<Self>(offset);
1690 encoder.write_num(self.into_primitive(), offset);
1691 Ok(())
1692 }
1693 }
1694
1695 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1696 for AudioSamplingFrequency
1697 {
1698 #[inline(always)]
1699 fn new_empty() -> Self {
1700 Self::unknown()
1701 }
1702
1703 #[inline]
1704 unsafe fn decode(
1705 &mut self,
1706 decoder: &mut fidl::encoding::Decoder<'_, D>,
1707 offset: usize,
1708 _depth: fidl::encoding::Depth,
1709 ) -> fidl::Result<()> {
1710 decoder.debug_check_bounds::<Self>(offset);
1711 let prim = decoder.read_num::<u8>(offset);
1712
1713 *self = Self::from_primitive_allow_unknown(prim);
1714 Ok(())
1715 }
1716 }
1717 unsafe impl fidl::encoding::TypeMarker for DataPath {
1718 type Owned = Self;
1719
1720 #[inline(always)]
1721 fn inline_align(_context: fidl::encoding::Context) -> usize {
1722 std::mem::align_of::<u8>()
1723 }
1724
1725 #[inline(always)]
1726 fn inline_size(_context: fidl::encoding::Context) -> usize {
1727 std::mem::size_of::<u8>()
1728 }
1729
1730 #[inline(always)]
1731 fn encode_is_copy() -> bool {
1732 true
1733 }
1734
1735 #[inline(always)]
1736 fn decode_is_copy() -> bool {
1737 false
1738 }
1739 }
1740
1741 impl fidl::encoding::ValueTypeMarker for DataPath {
1742 type Borrowed<'a> = Self;
1743 #[inline(always)]
1744 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1745 *value
1746 }
1747 }
1748
1749 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPath {
1750 #[inline]
1751 unsafe fn encode(
1752 self,
1753 encoder: &mut fidl::encoding::Encoder<'_, D>,
1754 offset: usize,
1755 _depth: fidl::encoding::Depth,
1756 ) -> fidl::Result<()> {
1757 encoder.debug_check_bounds::<Self>(offset);
1758 encoder.write_num(self.into_primitive(), offset);
1759 Ok(())
1760 }
1761 }
1762
1763 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPath {
1764 #[inline(always)]
1765 fn new_empty() -> Self {
1766 Self::Host
1767 }
1768
1769 #[inline]
1770 unsafe fn decode(
1771 &mut self,
1772 decoder: &mut fidl::encoding::Decoder<'_, D>,
1773 offset: usize,
1774 _depth: fidl::encoding::Depth,
1775 ) -> fidl::Result<()> {
1776 decoder.debug_check_bounds::<Self>(offset);
1777 let prim = decoder.read_num::<u8>(offset);
1778
1779 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1780 Ok(())
1781 }
1782 }
1783 unsafe impl fidl::encoding::TypeMarker for HfpParameterSet {
1784 type Owned = Self;
1785
1786 #[inline(always)]
1787 fn inline_align(_context: fidl::encoding::Context) -> usize {
1788 std::mem::align_of::<u8>()
1789 }
1790
1791 #[inline(always)]
1792 fn inline_size(_context: fidl::encoding::Context) -> usize {
1793 std::mem::size_of::<u8>()
1794 }
1795
1796 #[inline(always)]
1797 fn encode_is_copy() -> bool {
1798 false
1799 }
1800
1801 #[inline(always)]
1802 fn decode_is_copy() -> bool {
1803 false
1804 }
1805 }
1806
1807 impl fidl::encoding::ValueTypeMarker for HfpParameterSet {
1808 type Borrowed<'a> = Self;
1809 #[inline(always)]
1810 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1811 *value
1812 }
1813 }
1814
1815 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1816 for HfpParameterSet
1817 {
1818 #[inline]
1819 unsafe fn encode(
1820 self,
1821 encoder: &mut fidl::encoding::Encoder<'_, D>,
1822 offset: usize,
1823 _depth: fidl::encoding::Depth,
1824 ) -> fidl::Result<()> {
1825 encoder.debug_check_bounds::<Self>(offset);
1826 encoder.write_num(self.into_primitive(), offset);
1827 Ok(())
1828 }
1829 }
1830
1831 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HfpParameterSet {
1832 #[inline(always)]
1833 fn new_empty() -> Self {
1834 Self::unknown()
1835 }
1836
1837 #[inline]
1838 unsafe fn decode(
1839 &mut self,
1840 decoder: &mut fidl::encoding::Decoder<'_, D>,
1841 offset: usize,
1842 _depth: fidl::encoding::Depth,
1843 ) -> fidl::Result<()> {
1844 decoder.debug_check_bounds::<Self>(offset);
1845 let prim = decoder.read_num::<u8>(offset);
1846
1847 *self = Self::from_primitive_allow_unknown(prim);
1848 Ok(())
1849 }
1850 }
1851 unsafe impl fidl::encoding::TypeMarker for ProtocolIdentifier {
1852 type Owned = Self;
1853
1854 #[inline(always)]
1855 fn inline_align(_context: fidl::encoding::Context) -> usize {
1856 std::mem::align_of::<u16>()
1857 }
1858
1859 #[inline(always)]
1860 fn inline_size(_context: fidl::encoding::Context) -> usize {
1861 std::mem::size_of::<u16>()
1862 }
1863
1864 #[inline(always)]
1865 fn encode_is_copy() -> bool {
1866 false
1867 }
1868
1869 #[inline(always)]
1870 fn decode_is_copy() -> bool {
1871 false
1872 }
1873 }
1874
1875 impl fidl::encoding::ValueTypeMarker for ProtocolIdentifier {
1876 type Borrowed<'a> = Self;
1877 #[inline(always)]
1878 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1879 *value
1880 }
1881 }
1882
1883 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1884 for ProtocolIdentifier
1885 {
1886 #[inline]
1887 unsafe fn encode(
1888 self,
1889 encoder: &mut fidl::encoding::Encoder<'_, D>,
1890 offset: usize,
1891 _depth: fidl::encoding::Depth,
1892 ) -> fidl::Result<()> {
1893 encoder.debug_check_bounds::<Self>(offset);
1894 encoder.write_num(self.into_primitive(), offset);
1895 Ok(())
1896 }
1897 }
1898
1899 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtocolIdentifier {
1900 #[inline(always)]
1901 fn new_empty() -> Self {
1902 Self::unknown()
1903 }
1904
1905 #[inline]
1906 unsafe fn decode(
1907 &mut self,
1908 decoder: &mut fidl::encoding::Decoder<'_, D>,
1909 offset: usize,
1910 _depth: fidl::encoding::Depth,
1911 ) -> fidl::Result<()> {
1912 decoder.debug_check_bounds::<Self>(offset);
1913 let prim = decoder.read_num::<u16>(offset);
1914
1915 *self = Self::from_primitive_allow_unknown(prim);
1916 Ok(())
1917 }
1918 }
1919 unsafe impl fidl::encoding::TypeMarker for RxPacketStatus {
1920 type Owned = Self;
1921
1922 #[inline(always)]
1923 fn inline_align(_context: fidl::encoding::Context) -> usize {
1924 std::mem::align_of::<u8>()
1925 }
1926
1927 #[inline(always)]
1928 fn inline_size(_context: fidl::encoding::Context) -> usize {
1929 std::mem::size_of::<u8>()
1930 }
1931
1932 #[inline(always)]
1933 fn encode_is_copy() -> bool {
1934 true
1935 }
1936
1937 #[inline(always)]
1938 fn decode_is_copy() -> bool {
1939 false
1940 }
1941 }
1942
1943 impl fidl::encoding::ValueTypeMarker for RxPacketStatus {
1944 type Borrowed<'a> = Self;
1945 #[inline(always)]
1946 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1947 *value
1948 }
1949 }
1950
1951 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for RxPacketStatus {
1952 #[inline]
1953 unsafe fn encode(
1954 self,
1955 encoder: &mut fidl::encoding::Encoder<'_, D>,
1956 offset: usize,
1957 _depth: fidl::encoding::Depth,
1958 ) -> fidl::Result<()> {
1959 encoder.debug_check_bounds::<Self>(offset);
1960 encoder.write_num(self.into_primitive(), offset);
1961 Ok(())
1962 }
1963 }
1964
1965 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RxPacketStatus {
1966 #[inline(always)]
1967 fn new_empty() -> Self {
1968 Self::CorrectlyReceivedData
1969 }
1970
1971 #[inline]
1972 unsafe fn decode(
1973 &mut self,
1974 decoder: &mut fidl::encoding::Decoder<'_, D>,
1975 offset: usize,
1976 _depth: fidl::encoding::Depth,
1977 ) -> fidl::Result<()> {
1978 decoder.debug_check_bounds::<Self>(offset);
1979 let prim = decoder.read_num::<u8>(offset);
1980
1981 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1982 Ok(())
1983 }
1984 }
1985 unsafe impl fidl::encoding::TypeMarker for ScoErrorCode {
1986 type Owned = Self;
1987
1988 #[inline(always)]
1989 fn inline_align(_context: fidl::encoding::Context) -> usize {
1990 std::mem::align_of::<u32>()
1991 }
1992
1993 #[inline(always)]
1994 fn inline_size(_context: fidl::encoding::Context) -> usize {
1995 std::mem::size_of::<u32>()
1996 }
1997
1998 #[inline(always)]
1999 fn encode_is_copy() -> bool {
2000 false
2001 }
2002
2003 #[inline(always)]
2004 fn decode_is_copy() -> bool {
2005 false
2006 }
2007 }
2008
2009 impl fidl::encoding::ValueTypeMarker for ScoErrorCode {
2010 type Borrowed<'a> = Self;
2011 #[inline(always)]
2012 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2013 *value
2014 }
2015 }
2016
2017 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScoErrorCode {
2018 #[inline]
2019 unsafe fn encode(
2020 self,
2021 encoder: &mut fidl::encoding::Encoder<'_, D>,
2022 offset: usize,
2023 _depth: fidl::encoding::Depth,
2024 ) -> fidl::Result<()> {
2025 encoder.debug_check_bounds::<Self>(offset);
2026 encoder.write_num(self.into_primitive(), offset);
2027 Ok(())
2028 }
2029 }
2030
2031 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScoErrorCode {
2032 #[inline(always)]
2033 fn new_empty() -> Self {
2034 Self::unknown()
2035 }
2036
2037 #[inline]
2038 unsafe fn decode(
2039 &mut self,
2040 decoder: &mut fidl::encoding::Decoder<'_, D>,
2041 offset: usize,
2042 _depth: fidl::encoding::Depth,
2043 ) -> fidl::Result<()> {
2044 decoder.debug_check_bounds::<Self>(offset);
2045 let prim = decoder.read_num::<u32>(offset);
2046
2047 *self = Self::from_primitive_allow_unknown(prim);
2048 Ok(())
2049 }
2050 }
2051 unsafe impl fidl::encoding::TypeMarker for ServiceClassProfileIdentifier {
2052 type Owned = Self;
2053
2054 #[inline(always)]
2055 fn inline_align(_context: fidl::encoding::Context) -> usize {
2056 std::mem::align_of::<u16>()
2057 }
2058
2059 #[inline(always)]
2060 fn inline_size(_context: fidl::encoding::Context) -> usize {
2061 std::mem::size_of::<u16>()
2062 }
2063
2064 #[inline(always)]
2065 fn encode_is_copy() -> bool {
2066 false
2067 }
2068
2069 #[inline(always)]
2070 fn decode_is_copy() -> bool {
2071 false
2072 }
2073 }
2074
2075 impl fidl::encoding::ValueTypeMarker for ServiceClassProfileIdentifier {
2076 type Borrowed<'a> = Self;
2077 #[inline(always)]
2078 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2079 *value
2080 }
2081 }
2082
2083 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2084 for ServiceClassProfileIdentifier
2085 {
2086 #[inline]
2087 unsafe fn encode(
2088 self,
2089 encoder: &mut fidl::encoding::Encoder<'_, D>,
2090 offset: usize,
2091 _depth: fidl::encoding::Depth,
2092 ) -> fidl::Result<()> {
2093 encoder.debug_check_bounds::<Self>(offset);
2094 encoder.write_num(self.into_primitive(), offset);
2095 Ok(())
2096 }
2097 }
2098
2099 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2100 for ServiceClassProfileIdentifier
2101 {
2102 #[inline(always)]
2103 fn new_empty() -> Self {
2104 Self::unknown()
2105 }
2106
2107 #[inline]
2108 unsafe fn decode(
2109 &mut self,
2110 decoder: &mut fidl::encoding::Decoder<'_, D>,
2111 offset: usize,
2112 _depth: fidl::encoding::Depth,
2113 ) -> fidl::Result<()> {
2114 decoder.debug_check_bounds::<Self>(offset);
2115 let prim = decoder.read_num::<u16>(offset);
2116
2117 *self = Self::from_primitive_allow_unknown(prim);
2118 Ok(())
2119 }
2120 }
2121
2122 impl fidl::encoding::ValueTypeMarker for AudioDirectionExtSetPriorityRequest {
2123 type Borrowed<'a> = &'a Self;
2124 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2125 value
2126 }
2127 }
2128
2129 unsafe impl fidl::encoding::TypeMarker for AudioDirectionExtSetPriorityRequest {
2130 type Owned = Self;
2131
2132 #[inline(always)]
2133 fn inline_align(_context: fidl::encoding::Context) -> usize {
2134 4
2135 }
2136
2137 #[inline(always)]
2138 fn inline_size(_context: fidl::encoding::Context) -> usize {
2139 4
2140 }
2141 }
2142
2143 unsafe impl<D: fidl::encoding::ResourceDialect>
2144 fidl::encoding::Encode<AudioDirectionExtSetPriorityRequest, D>
2145 for &AudioDirectionExtSetPriorityRequest
2146 {
2147 #[inline]
2148 unsafe fn encode(
2149 self,
2150 encoder: &mut fidl::encoding::Encoder<'_, D>,
2151 offset: usize,
2152 _depth: fidl::encoding::Depth,
2153 ) -> fidl::Result<()> {
2154 encoder.debug_check_bounds::<AudioDirectionExtSetPriorityRequest>(offset);
2155 fidl::encoding::Encode::<AudioDirectionExtSetPriorityRequest, D>::encode(
2157 (<A2dpDirectionPriority as fidl::encoding::ValueTypeMarker>::borrow(
2158 &self.priority,
2159 ),),
2160 encoder,
2161 offset,
2162 _depth,
2163 )
2164 }
2165 }
2166 unsafe impl<
2167 D: fidl::encoding::ResourceDialect,
2168 T0: fidl::encoding::Encode<A2dpDirectionPriority, D>,
2169 > fidl::encoding::Encode<AudioDirectionExtSetPriorityRequest, D> for (T0,)
2170 {
2171 #[inline]
2172 unsafe fn encode(
2173 self,
2174 encoder: &mut fidl::encoding::Encoder<'_, D>,
2175 offset: usize,
2176 depth: fidl::encoding::Depth,
2177 ) -> fidl::Result<()> {
2178 encoder.debug_check_bounds::<AudioDirectionExtSetPriorityRequest>(offset);
2179 self.0.encode(encoder, offset + 0, depth)?;
2183 Ok(())
2184 }
2185 }
2186
2187 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2188 for AudioDirectionExtSetPriorityRequest
2189 {
2190 #[inline(always)]
2191 fn new_empty() -> Self {
2192 Self { priority: fidl::new_empty!(A2dpDirectionPriority, D) }
2193 }
2194
2195 #[inline]
2196 unsafe fn decode(
2197 &mut self,
2198 decoder: &mut fidl::encoding::Decoder<'_, D>,
2199 offset: usize,
2200 _depth: fidl::encoding::Depth,
2201 ) -> fidl::Result<()> {
2202 decoder.debug_check_bounds::<Self>(offset);
2203 fidl::decode!(
2205 A2dpDirectionPriority,
2206 D,
2207 &mut self.priority,
2208 decoder,
2209 offset + 0,
2210 _depth
2211 )?;
2212 Ok(())
2213 }
2214 }
2215
2216 impl fidl::encoding::ValueTypeMarker for L2capParametersExtRequestParametersRequest {
2217 type Borrowed<'a> = &'a Self;
2218 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2219 value
2220 }
2221 }
2222
2223 unsafe impl fidl::encoding::TypeMarker for L2capParametersExtRequestParametersRequest {
2224 type Owned = Self;
2225
2226 #[inline(always)]
2227 fn inline_align(_context: fidl::encoding::Context) -> usize {
2228 8
2229 }
2230
2231 #[inline(always)]
2232 fn inline_size(_context: fidl::encoding::Context) -> usize {
2233 16
2234 }
2235 }
2236
2237 unsafe impl<D: fidl::encoding::ResourceDialect>
2238 fidl::encoding::Encode<L2capParametersExtRequestParametersRequest, D>
2239 for &L2capParametersExtRequestParametersRequest
2240 {
2241 #[inline]
2242 unsafe fn encode(
2243 self,
2244 encoder: &mut fidl::encoding::Encoder<'_, D>,
2245 offset: usize,
2246 _depth: fidl::encoding::Depth,
2247 ) -> fidl::Result<()> {
2248 encoder.debug_check_bounds::<L2capParametersExtRequestParametersRequest>(offset);
2249 fidl::encoding::Encode::<L2capParametersExtRequestParametersRequest, D>::encode(
2251 (
2252 <fidl_fuchsia_bluetooth::ChannelParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.request),
2253 ),
2254 encoder, offset, _depth
2255 )
2256 }
2257 }
2258 unsafe impl<
2259 D: fidl::encoding::ResourceDialect,
2260 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth::ChannelParameters, D>,
2261 > fidl::encoding::Encode<L2capParametersExtRequestParametersRequest, D> for (T0,)
2262 {
2263 #[inline]
2264 unsafe fn encode(
2265 self,
2266 encoder: &mut fidl::encoding::Encoder<'_, D>,
2267 offset: usize,
2268 depth: fidl::encoding::Depth,
2269 ) -> fidl::Result<()> {
2270 encoder.debug_check_bounds::<L2capParametersExtRequestParametersRequest>(offset);
2271 self.0.encode(encoder, offset + 0, depth)?;
2275 Ok(())
2276 }
2277 }
2278
2279 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2280 for L2capParametersExtRequestParametersRequest
2281 {
2282 #[inline(always)]
2283 fn new_empty() -> Self {
2284 Self { request: fidl::new_empty!(fidl_fuchsia_bluetooth::ChannelParameters, D) }
2285 }
2286
2287 #[inline]
2288 unsafe fn decode(
2289 &mut self,
2290 decoder: &mut fidl::encoding::Decoder<'_, D>,
2291 offset: usize,
2292 _depth: fidl::encoding::Depth,
2293 ) -> fidl::Result<()> {
2294 decoder.debug_check_bounds::<Self>(offset);
2295 fidl::decode!(
2297 fidl_fuchsia_bluetooth::ChannelParameters,
2298 D,
2299 &mut self.request,
2300 decoder,
2301 offset + 0,
2302 _depth
2303 )?;
2304 Ok(())
2305 }
2306 }
2307
2308 impl fidl::encoding::ValueTypeMarker for L2capParametersExtRequestParametersResponse {
2309 type Borrowed<'a> = &'a Self;
2310 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2311 value
2312 }
2313 }
2314
2315 unsafe impl fidl::encoding::TypeMarker for L2capParametersExtRequestParametersResponse {
2316 type Owned = Self;
2317
2318 #[inline(always)]
2319 fn inline_align(_context: fidl::encoding::Context) -> usize {
2320 8
2321 }
2322
2323 #[inline(always)]
2324 fn inline_size(_context: fidl::encoding::Context) -> usize {
2325 16
2326 }
2327 }
2328
2329 unsafe impl<D: fidl::encoding::ResourceDialect>
2330 fidl::encoding::Encode<L2capParametersExtRequestParametersResponse, D>
2331 for &L2capParametersExtRequestParametersResponse
2332 {
2333 #[inline]
2334 unsafe fn encode(
2335 self,
2336 encoder: &mut fidl::encoding::Encoder<'_, D>,
2337 offset: usize,
2338 _depth: fidl::encoding::Depth,
2339 ) -> fidl::Result<()> {
2340 encoder.debug_check_bounds::<L2capParametersExtRequestParametersResponse>(offset);
2341 fidl::encoding::Encode::<L2capParametersExtRequestParametersResponse, D>::encode(
2343 (
2344 <fidl_fuchsia_bluetooth::ChannelParameters as fidl::encoding::ValueTypeMarker>::borrow(&self.new),
2345 ),
2346 encoder, offset, _depth
2347 )
2348 }
2349 }
2350 unsafe impl<
2351 D: fidl::encoding::ResourceDialect,
2352 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth::ChannelParameters, D>,
2353 > fidl::encoding::Encode<L2capParametersExtRequestParametersResponse, D> for (T0,)
2354 {
2355 #[inline]
2356 unsafe fn encode(
2357 self,
2358 encoder: &mut fidl::encoding::Encoder<'_, D>,
2359 offset: usize,
2360 depth: fidl::encoding::Depth,
2361 ) -> fidl::Result<()> {
2362 encoder.debug_check_bounds::<L2capParametersExtRequestParametersResponse>(offset);
2363 self.0.encode(encoder, offset + 0, depth)?;
2367 Ok(())
2368 }
2369 }
2370
2371 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2372 for L2capParametersExtRequestParametersResponse
2373 {
2374 #[inline(always)]
2375 fn new_empty() -> Self {
2376 Self { new: fidl::new_empty!(fidl_fuchsia_bluetooth::ChannelParameters, D) }
2377 }
2378
2379 #[inline]
2380 unsafe fn decode(
2381 &mut self,
2382 decoder: &mut fidl::encoding::Decoder<'_, D>,
2383 offset: usize,
2384 _depth: fidl::encoding::Depth,
2385 ) -> fidl::Result<()> {
2386 decoder.debug_check_bounds::<Self>(offset);
2387 fidl::decode!(
2389 fidl_fuchsia_bluetooth::ChannelParameters,
2390 D,
2391 &mut self.new,
2392 decoder,
2393 offset + 0,
2394 _depth
2395 )?;
2396 Ok(())
2397 }
2398 }
2399
2400 impl fidl::encoding::ValueTypeMarker for ProfileConnectRequest {
2401 type Borrowed<'a> = &'a Self;
2402 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2403 value
2404 }
2405 }
2406
2407 unsafe impl fidl::encoding::TypeMarker for ProfileConnectRequest {
2408 type Owned = Self;
2409
2410 #[inline(always)]
2411 fn inline_align(_context: fidl::encoding::Context) -> usize {
2412 8
2413 }
2414
2415 #[inline(always)]
2416 fn inline_size(_context: fidl::encoding::Context) -> usize {
2417 24
2418 }
2419 }
2420
2421 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProfileConnectRequest, D>
2422 for &ProfileConnectRequest
2423 {
2424 #[inline]
2425 unsafe fn encode(
2426 self,
2427 encoder: &mut fidl::encoding::Encoder<'_, D>,
2428 offset: usize,
2429 _depth: fidl::encoding::Depth,
2430 ) -> fidl::Result<()> {
2431 encoder.debug_check_bounds::<ProfileConnectRequest>(offset);
2432 fidl::encoding::Encode::<ProfileConnectRequest, D>::encode(
2434 (
2435 <fidl_fuchsia_bluetooth::PeerId as fidl::encoding::ValueTypeMarker>::borrow(
2436 &self.peer_id,
2437 ),
2438 <ConnectParameters as fidl::encoding::ValueTypeMarker>::borrow(
2439 &self.connection,
2440 ),
2441 ),
2442 encoder,
2443 offset,
2444 _depth,
2445 )
2446 }
2447 }
2448 unsafe impl<
2449 D: fidl::encoding::ResourceDialect,
2450 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth::PeerId, D>,
2451 T1: fidl::encoding::Encode<ConnectParameters, D>,
2452 > fidl::encoding::Encode<ProfileConnectRequest, D> for (T0, T1)
2453 {
2454 #[inline]
2455 unsafe fn encode(
2456 self,
2457 encoder: &mut fidl::encoding::Encoder<'_, D>,
2458 offset: usize,
2459 depth: fidl::encoding::Depth,
2460 ) -> fidl::Result<()> {
2461 encoder.debug_check_bounds::<ProfileConnectRequest>(offset);
2462 self.0.encode(encoder, offset + 0, depth)?;
2466 self.1.encode(encoder, offset + 8, depth)?;
2467 Ok(())
2468 }
2469 }
2470
2471 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProfileConnectRequest {
2472 #[inline(always)]
2473 fn new_empty() -> Self {
2474 Self {
2475 peer_id: fidl::new_empty!(fidl_fuchsia_bluetooth::PeerId, D),
2476 connection: fidl::new_empty!(ConnectParameters, D),
2477 }
2478 }
2479
2480 #[inline]
2481 unsafe fn decode(
2482 &mut self,
2483 decoder: &mut fidl::encoding::Decoder<'_, D>,
2484 offset: usize,
2485 _depth: fidl::encoding::Depth,
2486 ) -> fidl::Result<()> {
2487 decoder.debug_check_bounds::<Self>(offset);
2488 fidl::decode!(
2490 fidl_fuchsia_bluetooth::PeerId,
2491 D,
2492 &mut self.peer_id,
2493 decoder,
2494 offset + 0,
2495 _depth
2496 )?;
2497 fidl::decode!(ConnectParameters, D, &mut self.connection, decoder, offset + 8, _depth)?;
2498 Ok(())
2499 }
2500 }
2501
2502 impl fidl::encoding::ValueTypeMarker for SearchResultsServiceFoundRequest {
2503 type Borrowed<'a> = &'a Self;
2504 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2505 value
2506 }
2507 }
2508
2509 unsafe impl fidl::encoding::TypeMarker for SearchResultsServiceFoundRequest {
2510 type Owned = Self;
2511
2512 #[inline(always)]
2513 fn inline_align(_context: fidl::encoding::Context) -> usize {
2514 8
2515 }
2516
2517 #[inline(always)]
2518 fn inline_size(_context: fidl::encoding::Context) -> usize {
2519 40
2520 }
2521 }
2522
2523 unsafe impl<D: fidl::encoding::ResourceDialect>
2524 fidl::encoding::Encode<SearchResultsServiceFoundRequest, D>
2525 for &SearchResultsServiceFoundRequest
2526 {
2527 #[inline]
2528 unsafe fn encode(
2529 self,
2530 encoder: &mut fidl::encoding::Encoder<'_, D>,
2531 offset: usize,
2532 _depth: fidl::encoding::Depth,
2533 ) -> fidl::Result<()> {
2534 encoder.debug_check_bounds::<SearchResultsServiceFoundRequest>(offset);
2535 fidl::encoding::Encode::<SearchResultsServiceFoundRequest, D>::encode(
2537 (
2538 <fidl_fuchsia_bluetooth::PeerId as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_id),
2539 <fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>> as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),
2540 <fidl::encoding::Vector<Attribute, 512> as fidl::encoding::ValueTypeMarker>::borrow(&self.attributes),
2541 ),
2542 encoder, offset, _depth
2543 )
2544 }
2545 }
2546 unsafe impl<
2547 D: fidl::encoding::ResourceDialect,
2548 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth::PeerId, D>,
2549 T1: fidl::encoding::Encode<
2550 fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>>,
2551 D,
2552 >,
2553 T2: fidl::encoding::Encode<fidl::encoding::Vector<Attribute, 512>, D>,
2554 > fidl::encoding::Encode<SearchResultsServiceFoundRequest, D> for (T0, T1, T2)
2555 {
2556 #[inline]
2557 unsafe fn encode(
2558 self,
2559 encoder: &mut fidl::encoding::Encoder<'_, D>,
2560 offset: usize,
2561 depth: fidl::encoding::Depth,
2562 ) -> fidl::Result<()> {
2563 encoder.debug_check_bounds::<SearchResultsServiceFoundRequest>(offset);
2564 self.0.encode(encoder, offset + 0, depth)?;
2568 self.1.encode(encoder, offset + 8, depth)?;
2569 self.2.encode(encoder, offset + 24, depth)?;
2570 Ok(())
2571 }
2572 }
2573
2574 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2575 for SearchResultsServiceFoundRequest
2576 {
2577 #[inline(always)]
2578 fn new_empty() -> Self {
2579 Self {
2580 peer_id: fidl::new_empty!(fidl_fuchsia_bluetooth::PeerId, D),
2581 protocol: fidl::new_empty!(
2582 fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>>,
2583 D
2584 ),
2585 attributes: fidl::new_empty!(fidl::encoding::Vector<Attribute, 512>, D),
2586 }
2587 }
2588
2589 #[inline]
2590 unsafe fn decode(
2591 &mut self,
2592 decoder: &mut fidl::encoding::Decoder<'_, D>,
2593 offset: usize,
2594 _depth: fidl::encoding::Depth,
2595 ) -> fidl::Result<()> {
2596 decoder.debug_check_bounds::<Self>(offset);
2597 fidl::decode!(
2599 fidl_fuchsia_bluetooth::PeerId,
2600 D,
2601 &mut self.peer_id,
2602 decoder,
2603 offset + 0,
2604 _depth
2605 )?;
2606 fidl::decode!(
2607 fidl::encoding::Optional<fidl::encoding::Vector<ProtocolDescriptor, 255>>,
2608 D,
2609 &mut self.protocol,
2610 decoder,
2611 offset + 8,
2612 _depth
2613 )?;
2614 fidl::decode!(fidl::encoding::Vector<Attribute, 512>, D, &mut self.attributes, decoder, offset + 24, _depth)?;
2615 Ok(())
2616 }
2617 }
2618
2619 impl Attribute {
2620 #[inline(always)]
2621 fn max_ordinal_present(&self) -> u64 {
2622 if let Some(_) = self.element {
2623 return 2;
2624 }
2625 if let Some(_) = self.id {
2626 return 1;
2627 }
2628 0
2629 }
2630 }
2631
2632 impl fidl::encoding::ValueTypeMarker for Attribute {
2633 type Borrowed<'a> = &'a Self;
2634 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2635 value
2636 }
2637 }
2638
2639 unsafe impl fidl::encoding::TypeMarker for Attribute {
2640 type Owned = Self;
2641
2642 #[inline(always)]
2643 fn inline_align(_context: fidl::encoding::Context) -> usize {
2644 8
2645 }
2646
2647 #[inline(always)]
2648 fn inline_size(_context: fidl::encoding::Context) -> usize {
2649 16
2650 }
2651 }
2652
2653 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Attribute, D>
2654 for &Attribute
2655 {
2656 unsafe fn encode(
2657 self,
2658 encoder: &mut fidl::encoding::Encoder<'_, D>,
2659 offset: usize,
2660 mut depth: fidl::encoding::Depth,
2661 ) -> fidl::Result<()> {
2662 encoder.debug_check_bounds::<Attribute>(offset);
2663 let max_ordinal: u64 = self.max_ordinal_present();
2665 encoder.write_num(max_ordinal, offset);
2666 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2667 if max_ordinal == 0 {
2669 return Ok(());
2670 }
2671 depth.increment()?;
2672 let envelope_size = 8;
2673 let bytes_len = max_ordinal as usize * envelope_size;
2674 #[allow(unused_variables)]
2675 let offset = encoder.out_of_line_offset(bytes_len);
2676 let mut _prev_end_offset: usize = 0;
2677 if 1 > max_ordinal {
2678 return Ok(());
2679 }
2680
2681 let cur_offset: usize = (1 - 1) * envelope_size;
2684
2685 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2687
2688 fidl::encoding::encode_in_envelope_optional::<u16, D>(
2693 self.id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
2694 encoder,
2695 offset + cur_offset,
2696 depth,
2697 )?;
2698
2699 _prev_end_offset = cur_offset + envelope_size;
2700 if 2 > max_ordinal {
2701 return Ok(());
2702 }
2703
2704 let cur_offset: usize = (2 - 1) * envelope_size;
2707
2708 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2710
2711 fidl::encoding::encode_in_envelope_optional::<DataElement, D>(
2716 self.element.as_ref().map(<DataElement as fidl::encoding::ValueTypeMarker>::borrow),
2717 encoder,
2718 offset + cur_offset,
2719 depth,
2720 )?;
2721
2722 _prev_end_offset = cur_offset + envelope_size;
2723
2724 Ok(())
2725 }
2726 }
2727
2728 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Attribute {
2729 #[inline(always)]
2730 fn new_empty() -> Self {
2731 Self::default()
2732 }
2733
2734 unsafe fn decode(
2735 &mut self,
2736 decoder: &mut fidl::encoding::Decoder<'_, D>,
2737 offset: usize,
2738 mut depth: fidl::encoding::Depth,
2739 ) -> fidl::Result<()> {
2740 decoder.debug_check_bounds::<Self>(offset);
2741 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2742 None => return Err(fidl::Error::NotNullable),
2743 Some(len) => len,
2744 };
2745 if len == 0 {
2747 return Ok(());
2748 };
2749 depth.increment()?;
2750 let envelope_size = 8;
2751 let bytes_len = len * envelope_size;
2752 let offset = decoder.out_of_line_offset(bytes_len)?;
2753 let mut _next_ordinal_to_read = 0;
2755 let mut next_offset = offset;
2756 let end_offset = offset + bytes_len;
2757 _next_ordinal_to_read += 1;
2758 if next_offset >= end_offset {
2759 return Ok(());
2760 }
2761
2762 while _next_ordinal_to_read < 1 {
2764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2765 _next_ordinal_to_read += 1;
2766 next_offset += envelope_size;
2767 }
2768
2769 let next_out_of_line = decoder.next_out_of_line();
2770 let handles_before = decoder.remaining_handles();
2771 if let Some((inlined, num_bytes, num_handles)) =
2772 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2773 {
2774 let member_inline_size =
2775 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2776 if inlined != (member_inline_size <= 4) {
2777 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2778 }
2779 let inner_offset;
2780 let mut inner_depth = depth.clone();
2781 if inlined {
2782 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2783 inner_offset = next_offset;
2784 } else {
2785 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2786 inner_depth.increment()?;
2787 }
2788 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u16, D));
2789 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
2790 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2791 {
2792 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2793 }
2794 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2795 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2796 }
2797 }
2798
2799 next_offset += envelope_size;
2800 _next_ordinal_to_read += 1;
2801 if next_offset >= end_offset {
2802 return Ok(());
2803 }
2804
2805 while _next_ordinal_to_read < 2 {
2807 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2808 _next_ordinal_to_read += 1;
2809 next_offset += envelope_size;
2810 }
2811
2812 let next_out_of_line = decoder.next_out_of_line();
2813 let handles_before = decoder.remaining_handles();
2814 if let Some((inlined, num_bytes, num_handles)) =
2815 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2816 {
2817 let member_inline_size =
2818 <DataElement as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2819 if inlined != (member_inline_size <= 4) {
2820 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2821 }
2822 let inner_offset;
2823 let mut inner_depth = depth.clone();
2824 if inlined {
2825 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2826 inner_offset = next_offset;
2827 } else {
2828 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2829 inner_depth.increment()?;
2830 }
2831 let val_ref = self.element.get_or_insert_with(|| fidl::new_empty!(DataElement, D));
2832 fidl::decode!(DataElement, D, val_ref, decoder, inner_offset, inner_depth)?;
2833 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2834 {
2835 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2836 }
2837 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2838 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2839 }
2840 }
2841
2842 next_offset += envelope_size;
2843
2844 while next_offset < end_offset {
2846 _next_ordinal_to_read += 1;
2847 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2848 next_offset += envelope_size;
2849 }
2850
2851 Ok(())
2852 }
2853 }
2854
2855 impl AudioAacSupport {
2856 #[inline(always)]
2857 fn max_ordinal_present(&self) -> u64 {
2858 0
2859 }
2860 }
2861
2862 impl fidl::encoding::ValueTypeMarker for AudioAacSupport {
2863 type Borrowed<'a> = &'a Self;
2864 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2865 value
2866 }
2867 }
2868
2869 unsafe impl fidl::encoding::TypeMarker for AudioAacSupport {
2870 type Owned = Self;
2871
2872 #[inline(always)]
2873 fn inline_align(_context: fidl::encoding::Context) -> usize {
2874 8
2875 }
2876
2877 #[inline(always)]
2878 fn inline_size(_context: fidl::encoding::Context) -> usize {
2879 16
2880 }
2881 }
2882
2883 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioAacSupport, D>
2884 for &AudioAacSupport
2885 {
2886 unsafe fn encode(
2887 self,
2888 encoder: &mut fidl::encoding::Encoder<'_, D>,
2889 offset: usize,
2890 mut depth: fidl::encoding::Depth,
2891 ) -> fidl::Result<()> {
2892 encoder.debug_check_bounds::<AudioAacSupport>(offset);
2893 let max_ordinal: u64 = self.max_ordinal_present();
2895 encoder.write_num(max_ordinal, offset);
2896 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2897 if max_ordinal == 0 {
2899 return Ok(());
2900 }
2901 depth.increment()?;
2902 let envelope_size = 8;
2903 let bytes_len = max_ordinal as usize * envelope_size;
2904 #[allow(unused_variables)]
2905 let offset = encoder.out_of_line_offset(bytes_len);
2906 let mut _prev_end_offset: usize = 0;
2907
2908 Ok(())
2909 }
2910 }
2911
2912 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioAacSupport {
2913 #[inline(always)]
2914 fn new_empty() -> Self {
2915 Self::default()
2916 }
2917
2918 unsafe fn decode(
2919 &mut self,
2920 decoder: &mut fidl::encoding::Decoder<'_, D>,
2921 offset: usize,
2922 mut depth: fidl::encoding::Depth,
2923 ) -> fidl::Result<()> {
2924 decoder.debug_check_bounds::<Self>(offset);
2925 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2926 None => return Err(fidl::Error::NotNullable),
2927 Some(len) => len,
2928 };
2929 if len == 0 {
2931 return Ok(());
2932 };
2933 depth.increment()?;
2934 let envelope_size = 8;
2935 let bytes_len = len * envelope_size;
2936 let offset = decoder.out_of_line_offset(bytes_len)?;
2937 let mut _next_ordinal_to_read = 0;
2939 let mut next_offset = offset;
2940 let end_offset = offset + bytes_len;
2941
2942 while next_offset < end_offset {
2944 _next_ordinal_to_read += 1;
2945 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2946 next_offset += envelope_size;
2947 }
2948
2949 Ok(())
2950 }
2951 }
2952
2953 impl AudioOffloadConfiguration {
2954 #[inline(always)]
2955 fn max_ordinal_present(&self) -> u64 {
2956 if let Some(_) = self.encoder_settings {
2957 return 8;
2958 }
2959 if let Some(_) = self.encoded_bit_rate {
2960 return 7;
2961 }
2962 if let Some(_) = self.channel_mode {
2963 return 6;
2964 }
2965 if let Some(_) = self.bits_per_sample {
2966 return 5;
2967 }
2968 if let Some(_) = self.sampling_frequency {
2969 return 4;
2970 }
2971 if let Some(_) = self.scms_t_enable {
2972 return 3;
2973 }
2974 if let Some(_) = self.max_latency {
2975 return 2;
2976 }
2977 if let Some(_) = self.codec {
2978 return 1;
2979 }
2980 0
2981 }
2982 }
2983
2984 impl fidl::encoding::ValueTypeMarker for AudioOffloadConfiguration {
2985 type Borrowed<'a> = &'a Self;
2986 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2987 value
2988 }
2989 }
2990
2991 unsafe impl fidl::encoding::TypeMarker for AudioOffloadConfiguration {
2992 type Owned = Self;
2993
2994 #[inline(always)]
2995 fn inline_align(_context: fidl::encoding::Context) -> usize {
2996 8
2997 }
2998
2999 #[inline(always)]
3000 fn inline_size(_context: fidl::encoding::Context) -> usize {
3001 16
3002 }
3003 }
3004
3005 unsafe impl<D: fidl::encoding::ResourceDialect>
3006 fidl::encoding::Encode<AudioOffloadConfiguration, D> for &AudioOffloadConfiguration
3007 {
3008 unsafe fn encode(
3009 self,
3010 encoder: &mut fidl::encoding::Encoder<'_, D>,
3011 offset: usize,
3012 mut depth: fidl::encoding::Depth,
3013 ) -> fidl::Result<()> {
3014 encoder.debug_check_bounds::<AudioOffloadConfiguration>(offset);
3015 let max_ordinal: u64 = self.max_ordinal_present();
3017 encoder.write_num(max_ordinal, offset);
3018 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3019 if max_ordinal == 0 {
3021 return Ok(());
3022 }
3023 depth.increment()?;
3024 let envelope_size = 8;
3025 let bytes_len = max_ordinal as usize * envelope_size;
3026 #[allow(unused_variables)]
3027 let offset = encoder.out_of_line_offset(bytes_len);
3028 let mut _prev_end_offset: usize = 0;
3029 if 1 > max_ordinal {
3030 return Ok(());
3031 }
3032
3033 let cur_offset: usize = (1 - 1) * envelope_size;
3036
3037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3039
3040 fidl::encoding::encode_in_envelope_optional::<AudioOffloadFeatures, D>(
3045 self.codec
3046 .as_ref()
3047 .map(<AudioOffloadFeatures as fidl::encoding::ValueTypeMarker>::borrow),
3048 encoder,
3049 offset + cur_offset,
3050 depth,
3051 )?;
3052
3053 _prev_end_offset = cur_offset + envelope_size;
3054 if 2 > max_ordinal {
3055 return Ok(());
3056 }
3057
3058 let cur_offset: usize = (2 - 1) * envelope_size;
3061
3062 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3064
3065 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3070 self.max_latency.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3071 encoder,
3072 offset + cur_offset,
3073 depth,
3074 )?;
3075
3076 _prev_end_offset = cur_offset + envelope_size;
3077 if 3 > max_ordinal {
3078 return Ok(());
3079 }
3080
3081 let cur_offset: usize = (3 - 1) * envelope_size;
3084
3085 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3087
3088 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3093 self.scms_t_enable.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3094 encoder,
3095 offset + cur_offset,
3096 depth,
3097 )?;
3098
3099 _prev_end_offset = cur_offset + envelope_size;
3100 if 4 > max_ordinal {
3101 return Ok(());
3102 }
3103
3104 let cur_offset: usize = (4 - 1) * envelope_size;
3107
3108 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3110
3111 fidl::encoding::encode_in_envelope_optional::<AudioSamplingFrequency, D>(
3116 self.sampling_frequency
3117 .as_ref()
3118 .map(<AudioSamplingFrequency as fidl::encoding::ValueTypeMarker>::borrow),
3119 encoder,
3120 offset + cur_offset,
3121 depth,
3122 )?;
3123
3124 _prev_end_offset = cur_offset + envelope_size;
3125 if 5 > max_ordinal {
3126 return Ok(());
3127 }
3128
3129 let cur_offset: usize = (5 - 1) * envelope_size;
3132
3133 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3135
3136 fidl::encoding::encode_in_envelope_optional::<AudioBitsPerSample, D>(
3141 self.bits_per_sample
3142 .as_ref()
3143 .map(<AudioBitsPerSample as fidl::encoding::ValueTypeMarker>::borrow),
3144 encoder,
3145 offset + cur_offset,
3146 depth,
3147 )?;
3148
3149 _prev_end_offset = cur_offset + envelope_size;
3150 if 6 > max_ordinal {
3151 return Ok(());
3152 }
3153
3154 let cur_offset: usize = (6 - 1) * envelope_size;
3157
3158 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3160
3161 fidl::encoding::encode_in_envelope_optional::<AudioChannelMode, D>(
3166 self.channel_mode
3167 .as_ref()
3168 .map(<AudioChannelMode as fidl::encoding::ValueTypeMarker>::borrow),
3169 encoder,
3170 offset + cur_offset,
3171 depth,
3172 )?;
3173
3174 _prev_end_offset = cur_offset + envelope_size;
3175 if 7 > max_ordinal {
3176 return Ok(());
3177 }
3178
3179 let cur_offset: usize = (7 - 1) * envelope_size;
3182
3183 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3185
3186 fidl::encoding::encode_in_envelope_optional::<u32, D>(
3191 self.encoded_bit_rate
3192 .as_ref()
3193 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
3194 encoder,
3195 offset + cur_offset,
3196 depth,
3197 )?;
3198
3199 _prev_end_offset = cur_offset + envelope_size;
3200 if 8 > max_ordinal {
3201 return Ok(());
3202 }
3203
3204 let cur_offset: usize = (8 - 1) * envelope_size;
3207
3208 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3210
3211 fidl::encoding::encode_in_envelope_optional::<AudioEncoderSettings, D>(
3216 self.encoder_settings
3217 .as_ref()
3218 .map(<AudioEncoderSettings as fidl::encoding::ValueTypeMarker>::borrow),
3219 encoder,
3220 offset + cur_offset,
3221 depth,
3222 )?;
3223
3224 _prev_end_offset = cur_offset + envelope_size;
3225
3226 Ok(())
3227 }
3228 }
3229
3230 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3231 for AudioOffloadConfiguration
3232 {
3233 #[inline(always)]
3234 fn new_empty() -> Self {
3235 Self::default()
3236 }
3237
3238 unsafe fn decode(
3239 &mut self,
3240 decoder: &mut fidl::encoding::Decoder<'_, D>,
3241 offset: usize,
3242 mut depth: fidl::encoding::Depth,
3243 ) -> fidl::Result<()> {
3244 decoder.debug_check_bounds::<Self>(offset);
3245 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3246 None => return Err(fidl::Error::NotNullable),
3247 Some(len) => len,
3248 };
3249 if len == 0 {
3251 return Ok(());
3252 };
3253 depth.increment()?;
3254 let envelope_size = 8;
3255 let bytes_len = len * envelope_size;
3256 let offset = decoder.out_of_line_offset(bytes_len)?;
3257 let mut _next_ordinal_to_read = 0;
3259 let mut next_offset = offset;
3260 let end_offset = offset + bytes_len;
3261 _next_ordinal_to_read += 1;
3262 if next_offset >= end_offset {
3263 return Ok(());
3264 }
3265
3266 while _next_ordinal_to_read < 1 {
3268 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3269 _next_ordinal_to_read += 1;
3270 next_offset += envelope_size;
3271 }
3272
3273 let next_out_of_line = decoder.next_out_of_line();
3274 let handles_before = decoder.remaining_handles();
3275 if let Some((inlined, num_bytes, num_handles)) =
3276 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3277 {
3278 let member_inline_size =
3279 <AudioOffloadFeatures as fidl::encoding::TypeMarker>::inline_size(
3280 decoder.context,
3281 );
3282 if inlined != (member_inline_size <= 4) {
3283 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3284 }
3285 let inner_offset;
3286 let mut inner_depth = depth.clone();
3287 if inlined {
3288 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3289 inner_offset = next_offset;
3290 } else {
3291 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3292 inner_depth.increment()?;
3293 }
3294 let val_ref =
3295 self.codec.get_or_insert_with(|| fidl::new_empty!(AudioOffloadFeatures, D));
3296 fidl::decode!(
3297 AudioOffloadFeatures,
3298 D,
3299 val_ref,
3300 decoder,
3301 inner_offset,
3302 inner_depth
3303 )?;
3304 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3305 {
3306 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3307 }
3308 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3309 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3310 }
3311 }
3312
3313 next_offset += envelope_size;
3314 _next_ordinal_to_read += 1;
3315 if next_offset >= end_offset {
3316 return Ok(());
3317 }
3318
3319 while _next_ordinal_to_read < 2 {
3321 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3322 _next_ordinal_to_read += 1;
3323 next_offset += envelope_size;
3324 }
3325
3326 let next_out_of_line = decoder.next_out_of_line();
3327 let handles_before = decoder.remaining_handles();
3328 if let Some((inlined, num_bytes, num_handles)) =
3329 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3330 {
3331 let member_inline_size =
3332 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3333 if inlined != (member_inline_size <= 4) {
3334 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3335 }
3336 let inner_offset;
3337 let mut inner_depth = depth.clone();
3338 if inlined {
3339 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3340 inner_offset = next_offset;
3341 } else {
3342 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3343 inner_depth.increment()?;
3344 }
3345 let val_ref = self.max_latency.get_or_insert_with(|| fidl::new_empty!(u16, D));
3346 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3347 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3348 {
3349 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3350 }
3351 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3352 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3353 }
3354 }
3355
3356 next_offset += envelope_size;
3357 _next_ordinal_to_read += 1;
3358 if next_offset >= end_offset {
3359 return Ok(());
3360 }
3361
3362 while _next_ordinal_to_read < 3 {
3364 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3365 _next_ordinal_to_read += 1;
3366 next_offset += envelope_size;
3367 }
3368
3369 let next_out_of_line = decoder.next_out_of_line();
3370 let handles_before = decoder.remaining_handles();
3371 if let Some((inlined, num_bytes, num_handles)) =
3372 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3373 {
3374 let member_inline_size =
3375 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3376 if inlined != (member_inline_size <= 4) {
3377 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3378 }
3379 let inner_offset;
3380 let mut inner_depth = depth.clone();
3381 if inlined {
3382 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3383 inner_offset = next_offset;
3384 } else {
3385 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3386 inner_depth.increment()?;
3387 }
3388 let val_ref = self.scms_t_enable.get_or_insert_with(|| fidl::new_empty!(bool, D));
3389 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3390 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3391 {
3392 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3393 }
3394 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3395 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3396 }
3397 }
3398
3399 next_offset += envelope_size;
3400 _next_ordinal_to_read += 1;
3401 if next_offset >= end_offset {
3402 return Ok(());
3403 }
3404
3405 while _next_ordinal_to_read < 4 {
3407 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3408 _next_ordinal_to_read += 1;
3409 next_offset += envelope_size;
3410 }
3411
3412 let next_out_of_line = decoder.next_out_of_line();
3413 let handles_before = decoder.remaining_handles();
3414 if let Some((inlined, num_bytes, num_handles)) =
3415 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3416 {
3417 let member_inline_size =
3418 <AudioSamplingFrequency as fidl::encoding::TypeMarker>::inline_size(
3419 decoder.context,
3420 );
3421 if inlined != (member_inline_size <= 4) {
3422 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3423 }
3424 let inner_offset;
3425 let mut inner_depth = depth.clone();
3426 if inlined {
3427 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3428 inner_offset = next_offset;
3429 } else {
3430 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3431 inner_depth.increment()?;
3432 }
3433 let val_ref = self
3434 .sampling_frequency
3435 .get_or_insert_with(|| fidl::new_empty!(AudioSamplingFrequency, D));
3436 fidl::decode!(
3437 AudioSamplingFrequency,
3438 D,
3439 val_ref,
3440 decoder,
3441 inner_offset,
3442 inner_depth
3443 )?;
3444 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3445 {
3446 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3447 }
3448 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3449 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3450 }
3451 }
3452
3453 next_offset += envelope_size;
3454 _next_ordinal_to_read += 1;
3455 if next_offset >= end_offset {
3456 return Ok(());
3457 }
3458
3459 while _next_ordinal_to_read < 5 {
3461 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3462 _next_ordinal_to_read += 1;
3463 next_offset += envelope_size;
3464 }
3465
3466 let next_out_of_line = decoder.next_out_of_line();
3467 let handles_before = decoder.remaining_handles();
3468 if let Some((inlined, num_bytes, num_handles)) =
3469 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3470 {
3471 let member_inline_size =
3472 <AudioBitsPerSample as fidl::encoding::TypeMarker>::inline_size(
3473 decoder.context,
3474 );
3475 if inlined != (member_inline_size <= 4) {
3476 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3477 }
3478 let inner_offset;
3479 let mut inner_depth = depth.clone();
3480 if inlined {
3481 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3482 inner_offset = next_offset;
3483 } else {
3484 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3485 inner_depth.increment()?;
3486 }
3487 let val_ref = self
3488 .bits_per_sample
3489 .get_or_insert_with(|| fidl::new_empty!(AudioBitsPerSample, D));
3490 fidl::decode!(AudioBitsPerSample, D, val_ref, decoder, inner_offset, inner_depth)?;
3491 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3492 {
3493 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3494 }
3495 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3496 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3497 }
3498 }
3499
3500 next_offset += envelope_size;
3501 _next_ordinal_to_read += 1;
3502 if next_offset >= end_offset {
3503 return Ok(());
3504 }
3505
3506 while _next_ordinal_to_read < 6 {
3508 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3509 _next_ordinal_to_read += 1;
3510 next_offset += envelope_size;
3511 }
3512
3513 let next_out_of_line = decoder.next_out_of_line();
3514 let handles_before = decoder.remaining_handles();
3515 if let Some((inlined, num_bytes, num_handles)) =
3516 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3517 {
3518 let member_inline_size =
3519 <AudioChannelMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3520 if inlined != (member_inline_size <= 4) {
3521 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3522 }
3523 let inner_offset;
3524 let mut inner_depth = depth.clone();
3525 if inlined {
3526 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3527 inner_offset = next_offset;
3528 } else {
3529 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3530 inner_depth.increment()?;
3531 }
3532 let val_ref =
3533 self.channel_mode.get_or_insert_with(|| fidl::new_empty!(AudioChannelMode, D));
3534 fidl::decode!(AudioChannelMode, D, val_ref, decoder, inner_offset, inner_depth)?;
3535 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3536 {
3537 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3538 }
3539 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3540 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3541 }
3542 }
3543
3544 next_offset += envelope_size;
3545 _next_ordinal_to_read += 1;
3546 if next_offset >= end_offset {
3547 return Ok(());
3548 }
3549
3550 while _next_ordinal_to_read < 7 {
3552 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3553 _next_ordinal_to_read += 1;
3554 next_offset += envelope_size;
3555 }
3556
3557 let next_out_of_line = decoder.next_out_of_line();
3558 let handles_before = decoder.remaining_handles();
3559 if let Some((inlined, num_bytes, num_handles)) =
3560 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3561 {
3562 let member_inline_size =
3563 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3564 if inlined != (member_inline_size <= 4) {
3565 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3566 }
3567 let inner_offset;
3568 let mut inner_depth = depth.clone();
3569 if inlined {
3570 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3571 inner_offset = next_offset;
3572 } else {
3573 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3574 inner_depth.increment()?;
3575 }
3576 let val_ref = self.encoded_bit_rate.get_or_insert_with(|| fidl::new_empty!(u32, D));
3577 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
3578 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3579 {
3580 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3581 }
3582 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3583 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3584 }
3585 }
3586
3587 next_offset += envelope_size;
3588 _next_ordinal_to_read += 1;
3589 if next_offset >= end_offset {
3590 return Ok(());
3591 }
3592
3593 while _next_ordinal_to_read < 8 {
3595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3596 _next_ordinal_to_read += 1;
3597 next_offset += envelope_size;
3598 }
3599
3600 let next_out_of_line = decoder.next_out_of_line();
3601 let handles_before = decoder.remaining_handles();
3602 if let Some((inlined, num_bytes, num_handles)) =
3603 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3604 {
3605 let member_inline_size =
3606 <AudioEncoderSettings as fidl::encoding::TypeMarker>::inline_size(
3607 decoder.context,
3608 );
3609 if inlined != (member_inline_size <= 4) {
3610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3611 }
3612 let inner_offset;
3613 let mut inner_depth = depth.clone();
3614 if inlined {
3615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3616 inner_offset = next_offset;
3617 } else {
3618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3619 inner_depth.increment()?;
3620 }
3621 let val_ref = self
3622 .encoder_settings
3623 .get_or_insert_with(|| fidl::new_empty!(AudioEncoderSettings, D));
3624 fidl::decode!(
3625 AudioEncoderSettings,
3626 D,
3627 val_ref,
3628 decoder,
3629 inner_offset,
3630 inner_depth
3631 )?;
3632 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3633 {
3634 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3635 }
3636 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3637 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3638 }
3639 }
3640
3641 next_offset += envelope_size;
3642
3643 while next_offset < end_offset {
3645 _next_ordinal_to_read += 1;
3646 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3647 next_offset += envelope_size;
3648 }
3649
3650 Ok(())
3651 }
3652 }
3653
3654 impl AudioOffloadExtGetSupportedFeaturesResponse {
3655 #[inline(always)]
3656 fn max_ordinal_present(&self) -> u64 {
3657 if let Some(_) = self.audio_offload_features {
3658 return 1;
3659 }
3660 0
3661 }
3662 }
3663
3664 impl fidl::encoding::ValueTypeMarker for AudioOffloadExtGetSupportedFeaturesResponse {
3665 type Borrowed<'a> = &'a Self;
3666 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3667 value
3668 }
3669 }
3670
3671 unsafe impl fidl::encoding::TypeMarker for AudioOffloadExtGetSupportedFeaturesResponse {
3672 type Owned = Self;
3673
3674 #[inline(always)]
3675 fn inline_align(_context: fidl::encoding::Context) -> usize {
3676 8
3677 }
3678
3679 #[inline(always)]
3680 fn inline_size(_context: fidl::encoding::Context) -> usize {
3681 16
3682 }
3683 }
3684
3685 unsafe impl<D: fidl::encoding::ResourceDialect>
3686 fidl::encoding::Encode<AudioOffloadExtGetSupportedFeaturesResponse, D>
3687 for &AudioOffloadExtGetSupportedFeaturesResponse
3688 {
3689 unsafe fn encode(
3690 self,
3691 encoder: &mut fidl::encoding::Encoder<'_, D>,
3692 offset: usize,
3693 mut depth: fidl::encoding::Depth,
3694 ) -> fidl::Result<()> {
3695 encoder.debug_check_bounds::<AudioOffloadExtGetSupportedFeaturesResponse>(offset);
3696 let max_ordinal: u64 = self.max_ordinal_present();
3698 encoder.write_num(max_ordinal, offset);
3699 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3700 if max_ordinal == 0 {
3702 return Ok(());
3703 }
3704 depth.increment()?;
3705 let envelope_size = 8;
3706 let bytes_len = max_ordinal as usize * envelope_size;
3707 #[allow(unused_variables)]
3708 let offset = encoder.out_of_line_offset(bytes_len);
3709 let mut _prev_end_offset: usize = 0;
3710 if 1 > max_ordinal {
3711 return Ok(());
3712 }
3713
3714 let cur_offset: usize = (1 - 1) * envelope_size;
3717
3718 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3720
3721 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<AudioOffloadFeatures>, D>(
3726 self.audio_offload_features.as_ref().map(<fidl::encoding::UnboundedVector<AudioOffloadFeatures> as fidl::encoding::ValueTypeMarker>::borrow),
3727 encoder, offset + cur_offset, depth
3728 )?;
3729
3730 _prev_end_offset = cur_offset + envelope_size;
3731
3732 Ok(())
3733 }
3734 }
3735
3736 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3737 for AudioOffloadExtGetSupportedFeaturesResponse
3738 {
3739 #[inline(always)]
3740 fn new_empty() -> Self {
3741 Self::default()
3742 }
3743
3744 unsafe fn decode(
3745 &mut self,
3746 decoder: &mut fidl::encoding::Decoder<'_, D>,
3747 offset: usize,
3748 mut depth: fidl::encoding::Depth,
3749 ) -> fidl::Result<()> {
3750 decoder.debug_check_bounds::<Self>(offset);
3751 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3752 None => return Err(fidl::Error::NotNullable),
3753 Some(len) => len,
3754 };
3755 if len == 0 {
3757 return Ok(());
3758 };
3759 depth.increment()?;
3760 let envelope_size = 8;
3761 let bytes_len = len * envelope_size;
3762 let offset = decoder.out_of_line_offset(bytes_len)?;
3763 let mut _next_ordinal_to_read = 0;
3765 let mut next_offset = offset;
3766 let end_offset = offset + bytes_len;
3767 _next_ordinal_to_read += 1;
3768 if next_offset >= end_offset {
3769 return Ok(());
3770 }
3771
3772 while _next_ordinal_to_read < 1 {
3774 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3775 _next_ordinal_to_read += 1;
3776 next_offset += envelope_size;
3777 }
3778
3779 let next_out_of_line = decoder.next_out_of_line();
3780 let handles_before = decoder.remaining_handles();
3781 if let Some((inlined, num_bytes, num_handles)) =
3782 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3783 {
3784 let member_inline_size = <fidl::encoding::UnboundedVector<AudioOffloadFeatures> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3785 if inlined != (member_inline_size <= 4) {
3786 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3787 }
3788 let inner_offset;
3789 let mut inner_depth = depth.clone();
3790 if inlined {
3791 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3792 inner_offset = next_offset;
3793 } else {
3794 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3795 inner_depth.increment()?;
3796 }
3797 let val_ref = self.audio_offload_features.get_or_insert_with(|| {
3798 fidl::new_empty!(fidl::encoding::UnboundedVector<AudioOffloadFeatures>, D)
3799 });
3800 fidl::decode!(
3801 fidl::encoding::UnboundedVector<AudioOffloadFeatures>,
3802 D,
3803 val_ref,
3804 decoder,
3805 inner_offset,
3806 inner_depth
3807 )?;
3808 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3809 {
3810 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3811 }
3812 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3813 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3814 }
3815 }
3816
3817 next_offset += envelope_size;
3818
3819 while next_offset < end_offset {
3821 _next_ordinal_to_read += 1;
3822 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3823 next_offset += envelope_size;
3824 }
3825
3826 Ok(())
3827 }
3828 }
3829
3830 impl AudioSbcSupport {
3831 #[inline(always)]
3832 fn max_ordinal_present(&self) -> u64 {
3833 0
3834 }
3835 }
3836
3837 impl fidl::encoding::ValueTypeMarker for AudioSbcSupport {
3838 type Borrowed<'a> = &'a Self;
3839 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3840 value
3841 }
3842 }
3843
3844 unsafe impl fidl::encoding::TypeMarker for AudioSbcSupport {
3845 type Owned = Self;
3846
3847 #[inline(always)]
3848 fn inline_align(_context: fidl::encoding::Context) -> usize {
3849 8
3850 }
3851
3852 #[inline(always)]
3853 fn inline_size(_context: fidl::encoding::Context) -> usize {
3854 16
3855 }
3856 }
3857
3858 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioSbcSupport, D>
3859 for &AudioSbcSupport
3860 {
3861 unsafe fn encode(
3862 self,
3863 encoder: &mut fidl::encoding::Encoder<'_, D>,
3864 offset: usize,
3865 mut depth: fidl::encoding::Depth,
3866 ) -> fidl::Result<()> {
3867 encoder.debug_check_bounds::<AudioSbcSupport>(offset);
3868 let max_ordinal: u64 = self.max_ordinal_present();
3870 encoder.write_num(max_ordinal, offset);
3871 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3872 if max_ordinal == 0 {
3874 return Ok(());
3875 }
3876 depth.increment()?;
3877 let envelope_size = 8;
3878 let bytes_len = max_ordinal as usize * envelope_size;
3879 #[allow(unused_variables)]
3880 let offset = encoder.out_of_line_offset(bytes_len);
3881 let mut _prev_end_offset: usize = 0;
3882
3883 Ok(())
3884 }
3885 }
3886
3887 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioSbcSupport {
3888 #[inline(always)]
3889 fn new_empty() -> Self {
3890 Self::default()
3891 }
3892
3893 unsafe fn decode(
3894 &mut self,
3895 decoder: &mut fidl::encoding::Decoder<'_, D>,
3896 offset: usize,
3897 mut depth: fidl::encoding::Depth,
3898 ) -> fidl::Result<()> {
3899 decoder.debug_check_bounds::<Self>(offset);
3900 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3901 None => return Err(fidl::Error::NotNullable),
3902 Some(len) => len,
3903 };
3904 if len == 0 {
3906 return Ok(());
3907 };
3908 depth.increment()?;
3909 let envelope_size = 8;
3910 let bytes_len = len * envelope_size;
3911 let offset = decoder.out_of_line_offset(bytes_len)?;
3912 let mut _next_ordinal_to_read = 0;
3914 let mut next_offset = offset;
3915 let end_offset = offset + bytes_len;
3916
3917 while next_offset < end_offset {
3919 _next_ordinal_to_read += 1;
3920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3921 next_offset += envelope_size;
3922 }
3923
3924 Ok(())
3925 }
3926 }
3927
3928 impl Information {
3929 #[inline(always)]
3930 fn max_ordinal_present(&self) -> u64 {
3931 if let Some(_) = self.provider {
3932 return 4;
3933 }
3934 if let Some(_) = self.description {
3935 return 3;
3936 }
3937 if let Some(_) = self.name {
3938 return 2;
3939 }
3940 if let Some(_) = self.language {
3941 return 1;
3942 }
3943 0
3944 }
3945 }
3946
3947 impl fidl::encoding::ValueTypeMarker for Information {
3948 type Borrowed<'a> = &'a Self;
3949 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3950 value
3951 }
3952 }
3953
3954 unsafe impl fidl::encoding::TypeMarker for Information {
3955 type Owned = Self;
3956
3957 #[inline(always)]
3958 fn inline_align(_context: fidl::encoding::Context) -> usize {
3959 8
3960 }
3961
3962 #[inline(always)]
3963 fn inline_size(_context: fidl::encoding::Context) -> usize {
3964 16
3965 }
3966 }
3967
3968 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Information, D>
3969 for &Information
3970 {
3971 unsafe fn encode(
3972 self,
3973 encoder: &mut fidl::encoding::Encoder<'_, D>,
3974 offset: usize,
3975 mut depth: fidl::encoding::Depth,
3976 ) -> fidl::Result<()> {
3977 encoder.debug_check_bounds::<Information>(offset);
3978 let max_ordinal: u64 = self.max_ordinal_present();
3980 encoder.write_num(max_ordinal, offset);
3981 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3982 if max_ordinal == 0 {
3984 return Ok(());
3985 }
3986 depth.increment()?;
3987 let envelope_size = 8;
3988 let bytes_len = max_ordinal as usize * envelope_size;
3989 #[allow(unused_variables)]
3990 let offset = encoder.out_of_line_offset(bytes_len);
3991 let mut _prev_end_offset: usize = 0;
3992 if 1 > max_ordinal {
3993 return Ok(());
3994 }
3995
3996 let cur_offset: usize = (1 - 1) * envelope_size;
3999
4000 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4002
4003 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<2>, D>(
4008 self.language.as_ref().map(
4009 <fidl::encoding::BoundedString<2> as fidl::encoding::ValueTypeMarker>::borrow,
4010 ),
4011 encoder,
4012 offset + cur_offset,
4013 depth,
4014 )?;
4015
4016 _prev_end_offset = cur_offset + envelope_size;
4017 if 2 > max_ordinal {
4018 return Ok(());
4019 }
4020
4021 let cur_offset: usize = (2 - 1) * envelope_size;
4024
4025 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4027
4028 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4033 self.name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4034 encoder, offset + cur_offset, depth
4035 )?;
4036
4037 _prev_end_offset = cur_offset + envelope_size;
4038 if 3 > max_ordinal {
4039 return Ok(());
4040 }
4041
4042 let cur_offset: usize = (3 - 1) * envelope_size;
4045
4046 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4048
4049 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4054 self.description.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4055 encoder, offset + cur_offset, depth
4056 )?;
4057
4058 _prev_end_offset = cur_offset + envelope_size;
4059 if 4 > max_ordinal {
4060 return Ok(());
4061 }
4062
4063 let cur_offset: usize = (4 - 1) * envelope_size;
4066
4067 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4069
4070 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
4075 self.provider.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
4076 encoder, offset + cur_offset, depth
4077 )?;
4078
4079 _prev_end_offset = cur_offset + envelope_size;
4080
4081 Ok(())
4082 }
4083 }
4084
4085 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Information {
4086 #[inline(always)]
4087 fn new_empty() -> Self {
4088 Self::default()
4089 }
4090
4091 unsafe fn decode(
4092 &mut self,
4093 decoder: &mut fidl::encoding::Decoder<'_, D>,
4094 offset: usize,
4095 mut depth: fidl::encoding::Depth,
4096 ) -> fidl::Result<()> {
4097 decoder.debug_check_bounds::<Self>(offset);
4098 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4099 None => return Err(fidl::Error::NotNullable),
4100 Some(len) => len,
4101 };
4102 if len == 0 {
4104 return Ok(());
4105 };
4106 depth.increment()?;
4107 let envelope_size = 8;
4108 let bytes_len = len * envelope_size;
4109 let offset = decoder.out_of_line_offset(bytes_len)?;
4110 let mut _next_ordinal_to_read = 0;
4112 let mut next_offset = offset;
4113 let end_offset = offset + bytes_len;
4114 _next_ordinal_to_read += 1;
4115 if next_offset >= end_offset {
4116 return Ok(());
4117 }
4118
4119 while _next_ordinal_to_read < 1 {
4121 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4122 _next_ordinal_to_read += 1;
4123 next_offset += envelope_size;
4124 }
4125
4126 let next_out_of_line = decoder.next_out_of_line();
4127 let handles_before = decoder.remaining_handles();
4128 if let Some((inlined, num_bytes, num_handles)) =
4129 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4130 {
4131 let member_inline_size =
4132 <fidl::encoding::BoundedString<2> as fidl::encoding::TypeMarker>::inline_size(
4133 decoder.context,
4134 );
4135 if inlined != (member_inline_size <= 4) {
4136 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4137 }
4138 let inner_offset;
4139 let mut inner_depth = depth.clone();
4140 if inlined {
4141 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4142 inner_offset = next_offset;
4143 } else {
4144 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4145 inner_depth.increment()?;
4146 }
4147 let val_ref = self
4148 .language
4149 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<2>, D));
4150 fidl::decode!(
4151 fidl::encoding::BoundedString<2>,
4152 D,
4153 val_ref,
4154 decoder,
4155 inner_offset,
4156 inner_depth
4157 )?;
4158 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4159 {
4160 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4161 }
4162 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4163 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4164 }
4165 }
4166
4167 next_offset += envelope_size;
4168 _next_ordinal_to_read += 1;
4169 if next_offset >= end_offset {
4170 return Ok(());
4171 }
4172
4173 while _next_ordinal_to_read < 2 {
4175 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4176 _next_ordinal_to_read += 1;
4177 next_offset += envelope_size;
4178 }
4179
4180 let next_out_of_line = decoder.next_out_of_line();
4181 let handles_before = decoder.remaining_handles();
4182 if let Some((inlined, num_bytes, num_handles)) =
4183 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4184 {
4185 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4186 if inlined != (member_inline_size <= 4) {
4187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4188 }
4189 let inner_offset;
4190 let mut inner_depth = depth.clone();
4191 if inlined {
4192 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4193 inner_offset = next_offset;
4194 } else {
4195 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4196 inner_depth.increment()?;
4197 }
4198 let val_ref = self.name.get_or_insert_with(|| {
4199 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4200 });
4201 fidl::decode!(
4202 fidl::encoding::BoundedString<1024>,
4203 D,
4204 val_ref,
4205 decoder,
4206 inner_offset,
4207 inner_depth
4208 )?;
4209 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4210 {
4211 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4212 }
4213 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4214 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4215 }
4216 }
4217
4218 next_offset += envelope_size;
4219 _next_ordinal_to_read += 1;
4220 if next_offset >= end_offset {
4221 return Ok(());
4222 }
4223
4224 while _next_ordinal_to_read < 3 {
4226 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4227 _next_ordinal_to_read += 1;
4228 next_offset += envelope_size;
4229 }
4230
4231 let next_out_of_line = decoder.next_out_of_line();
4232 let handles_before = decoder.remaining_handles();
4233 if let Some((inlined, num_bytes, num_handles)) =
4234 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4235 {
4236 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4237 if inlined != (member_inline_size <= 4) {
4238 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4239 }
4240 let inner_offset;
4241 let mut inner_depth = depth.clone();
4242 if inlined {
4243 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4244 inner_offset = next_offset;
4245 } else {
4246 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4247 inner_depth.increment()?;
4248 }
4249 let val_ref = self.description.get_or_insert_with(|| {
4250 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4251 });
4252 fidl::decode!(
4253 fidl::encoding::BoundedString<1024>,
4254 D,
4255 val_ref,
4256 decoder,
4257 inner_offset,
4258 inner_depth
4259 )?;
4260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4261 {
4262 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4263 }
4264 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4265 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4266 }
4267 }
4268
4269 next_offset += envelope_size;
4270 _next_ordinal_to_read += 1;
4271 if next_offset >= end_offset {
4272 return Ok(());
4273 }
4274
4275 while _next_ordinal_to_read < 4 {
4277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4278 _next_ordinal_to_read += 1;
4279 next_offset += envelope_size;
4280 }
4281
4282 let next_out_of_line = decoder.next_out_of_line();
4283 let handles_before = decoder.remaining_handles();
4284 if let Some((inlined, num_bytes, num_handles)) =
4285 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4286 {
4287 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4288 if inlined != (member_inline_size <= 4) {
4289 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4290 }
4291 let inner_offset;
4292 let mut inner_depth = depth.clone();
4293 if inlined {
4294 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4295 inner_offset = next_offset;
4296 } else {
4297 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4298 inner_depth.increment()?;
4299 }
4300 let val_ref = self.provider.get_or_insert_with(|| {
4301 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
4302 });
4303 fidl::decode!(
4304 fidl::encoding::BoundedString<1024>,
4305 D,
4306 val_ref,
4307 decoder,
4308 inner_offset,
4309 inner_depth
4310 )?;
4311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4312 {
4313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4314 }
4315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4317 }
4318 }
4319
4320 next_offset += envelope_size;
4321
4322 while next_offset < end_offset {
4324 _next_ordinal_to_read += 1;
4325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4326 next_offset += envelope_size;
4327 }
4328
4329 Ok(())
4330 }
4331 }
4332
4333 impl L2capParameters {
4334 #[inline(always)]
4335 fn max_ordinal_present(&self) -> u64 {
4336 if let Some(_) = self.parameters {
4337 return 2;
4338 }
4339 if let Some(_) = self.psm {
4340 return 1;
4341 }
4342 0
4343 }
4344 }
4345
4346 impl fidl::encoding::ValueTypeMarker for L2capParameters {
4347 type Borrowed<'a> = &'a Self;
4348 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4349 value
4350 }
4351 }
4352
4353 unsafe impl fidl::encoding::TypeMarker for L2capParameters {
4354 type Owned = Self;
4355
4356 #[inline(always)]
4357 fn inline_align(_context: fidl::encoding::Context) -> usize {
4358 8
4359 }
4360
4361 #[inline(always)]
4362 fn inline_size(_context: fidl::encoding::Context) -> usize {
4363 16
4364 }
4365 }
4366
4367 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<L2capParameters, D>
4368 for &L2capParameters
4369 {
4370 unsafe fn encode(
4371 self,
4372 encoder: &mut fidl::encoding::Encoder<'_, D>,
4373 offset: usize,
4374 mut depth: fidl::encoding::Depth,
4375 ) -> fidl::Result<()> {
4376 encoder.debug_check_bounds::<L2capParameters>(offset);
4377 let max_ordinal: u64 = self.max_ordinal_present();
4379 encoder.write_num(max_ordinal, offset);
4380 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4381 if max_ordinal == 0 {
4383 return Ok(());
4384 }
4385 depth.increment()?;
4386 let envelope_size = 8;
4387 let bytes_len = max_ordinal as usize * envelope_size;
4388 #[allow(unused_variables)]
4389 let offset = encoder.out_of_line_offset(bytes_len);
4390 let mut _prev_end_offset: usize = 0;
4391 if 1 > max_ordinal {
4392 return Ok(());
4393 }
4394
4395 let cur_offset: usize = (1 - 1) * envelope_size;
4398
4399 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4401
4402 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4407 self.psm.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4408 encoder,
4409 offset + cur_offset,
4410 depth,
4411 )?;
4412
4413 _prev_end_offset = cur_offset + envelope_size;
4414 if 2 > max_ordinal {
4415 return Ok(());
4416 }
4417
4418 let cur_offset: usize = (2 - 1) * envelope_size;
4421
4422 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4424
4425 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth::ChannelParameters, D>(
4430 self.parameters.as_ref().map(<fidl_fuchsia_bluetooth::ChannelParameters as fidl::encoding::ValueTypeMarker>::borrow),
4431 encoder, offset + cur_offset, depth
4432 )?;
4433
4434 _prev_end_offset = cur_offset + envelope_size;
4435
4436 Ok(())
4437 }
4438 }
4439
4440 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for L2capParameters {
4441 #[inline(always)]
4442 fn new_empty() -> Self {
4443 Self::default()
4444 }
4445
4446 unsafe fn decode(
4447 &mut self,
4448 decoder: &mut fidl::encoding::Decoder<'_, D>,
4449 offset: usize,
4450 mut depth: fidl::encoding::Depth,
4451 ) -> fidl::Result<()> {
4452 decoder.debug_check_bounds::<Self>(offset);
4453 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4454 None => return Err(fidl::Error::NotNullable),
4455 Some(len) => len,
4456 };
4457 if len == 0 {
4459 return Ok(());
4460 };
4461 depth.increment()?;
4462 let envelope_size = 8;
4463 let bytes_len = len * envelope_size;
4464 let offset = decoder.out_of_line_offset(bytes_len)?;
4465 let mut _next_ordinal_to_read = 0;
4467 let mut next_offset = offset;
4468 let end_offset = offset + bytes_len;
4469 _next_ordinal_to_read += 1;
4470 if next_offset >= end_offset {
4471 return Ok(());
4472 }
4473
4474 while _next_ordinal_to_read < 1 {
4476 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4477 _next_ordinal_to_read += 1;
4478 next_offset += envelope_size;
4479 }
4480
4481 let next_out_of_line = decoder.next_out_of_line();
4482 let handles_before = decoder.remaining_handles();
4483 if let Some((inlined, num_bytes, num_handles)) =
4484 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4485 {
4486 let member_inline_size =
4487 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4488 if inlined != (member_inline_size <= 4) {
4489 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4490 }
4491 let inner_offset;
4492 let mut inner_depth = depth.clone();
4493 if inlined {
4494 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4495 inner_offset = next_offset;
4496 } else {
4497 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4498 inner_depth.increment()?;
4499 }
4500 let val_ref = self.psm.get_or_insert_with(|| fidl::new_empty!(u16, D));
4501 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4502 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4503 {
4504 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4505 }
4506 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4507 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4508 }
4509 }
4510
4511 next_offset += envelope_size;
4512 _next_ordinal_to_read += 1;
4513 if next_offset >= end_offset {
4514 return Ok(());
4515 }
4516
4517 while _next_ordinal_to_read < 2 {
4519 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4520 _next_ordinal_to_read += 1;
4521 next_offset += envelope_size;
4522 }
4523
4524 let next_out_of_line = decoder.next_out_of_line();
4525 let handles_before = decoder.remaining_handles();
4526 if let Some((inlined, num_bytes, num_handles)) =
4527 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4528 {
4529 let member_inline_size = <fidl_fuchsia_bluetooth::ChannelParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4530 if inlined != (member_inline_size <= 4) {
4531 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4532 }
4533 let inner_offset;
4534 let mut inner_depth = depth.clone();
4535 if inlined {
4536 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4537 inner_offset = next_offset;
4538 } else {
4539 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4540 inner_depth.increment()?;
4541 }
4542 let val_ref = self.parameters.get_or_insert_with(|| {
4543 fidl::new_empty!(fidl_fuchsia_bluetooth::ChannelParameters, D)
4544 });
4545 fidl::decode!(
4546 fidl_fuchsia_bluetooth::ChannelParameters,
4547 D,
4548 val_ref,
4549 decoder,
4550 inner_offset,
4551 inner_depth
4552 )?;
4553 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4554 {
4555 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4556 }
4557 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4558 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4559 }
4560 }
4561
4562 next_offset += envelope_size;
4563
4564 while next_offset < end_offset {
4566 _next_ordinal_to_read += 1;
4567 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4568 next_offset += envelope_size;
4569 }
4570
4571 Ok(())
4572 }
4573 }
4574
4575 impl ProfileDescriptor {
4576 #[inline(always)]
4577 fn max_ordinal_present(&self) -> u64 {
4578 if let Some(_) = self.minor_version {
4579 return 3;
4580 }
4581 if let Some(_) = self.major_version {
4582 return 2;
4583 }
4584 if let Some(_) = self.profile_id {
4585 return 1;
4586 }
4587 0
4588 }
4589 }
4590
4591 impl fidl::encoding::ValueTypeMarker for ProfileDescriptor {
4592 type Borrowed<'a> = &'a Self;
4593 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4594 value
4595 }
4596 }
4597
4598 unsafe impl fidl::encoding::TypeMarker for ProfileDescriptor {
4599 type Owned = Self;
4600
4601 #[inline(always)]
4602 fn inline_align(_context: fidl::encoding::Context) -> usize {
4603 8
4604 }
4605
4606 #[inline(always)]
4607 fn inline_size(_context: fidl::encoding::Context) -> usize {
4608 16
4609 }
4610 }
4611
4612 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProfileDescriptor, D>
4613 for &ProfileDescriptor
4614 {
4615 unsafe fn encode(
4616 self,
4617 encoder: &mut fidl::encoding::Encoder<'_, D>,
4618 offset: usize,
4619 mut depth: fidl::encoding::Depth,
4620 ) -> fidl::Result<()> {
4621 encoder.debug_check_bounds::<ProfileDescriptor>(offset);
4622 let max_ordinal: u64 = self.max_ordinal_present();
4624 encoder.write_num(max_ordinal, offset);
4625 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4626 if max_ordinal == 0 {
4628 return Ok(());
4629 }
4630 depth.increment()?;
4631 let envelope_size = 8;
4632 let bytes_len = max_ordinal as usize * envelope_size;
4633 #[allow(unused_variables)]
4634 let offset = encoder.out_of_line_offset(bytes_len);
4635 let mut _prev_end_offset: usize = 0;
4636 if 1 > max_ordinal {
4637 return Ok(());
4638 }
4639
4640 let cur_offset: usize = (1 - 1) * envelope_size;
4643
4644 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4646
4647 fidl::encoding::encode_in_envelope_optional::<ServiceClassProfileIdentifier, D>(
4652 self.profile_id.as_ref().map(
4653 <ServiceClassProfileIdentifier as fidl::encoding::ValueTypeMarker>::borrow,
4654 ),
4655 encoder,
4656 offset + cur_offset,
4657 depth,
4658 )?;
4659
4660 _prev_end_offset = cur_offset + envelope_size;
4661 if 2 > max_ordinal {
4662 return Ok(());
4663 }
4664
4665 let cur_offset: usize = (2 - 1) * envelope_size;
4668
4669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4671
4672 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4677 self.major_version.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4678 encoder,
4679 offset + cur_offset,
4680 depth,
4681 )?;
4682
4683 _prev_end_offset = cur_offset + envelope_size;
4684 if 3 > max_ordinal {
4685 return Ok(());
4686 }
4687
4688 let cur_offset: usize = (3 - 1) * envelope_size;
4691
4692 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4694
4695 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4700 self.minor_version.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4701 encoder,
4702 offset + cur_offset,
4703 depth,
4704 )?;
4705
4706 _prev_end_offset = cur_offset + envelope_size;
4707
4708 Ok(())
4709 }
4710 }
4711
4712 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProfileDescriptor {
4713 #[inline(always)]
4714 fn new_empty() -> Self {
4715 Self::default()
4716 }
4717
4718 unsafe fn decode(
4719 &mut self,
4720 decoder: &mut fidl::encoding::Decoder<'_, D>,
4721 offset: usize,
4722 mut depth: fidl::encoding::Depth,
4723 ) -> fidl::Result<()> {
4724 decoder.debug_check_bounds::<Self>(offset);
4725 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4726 None => return Err(fidl::Error::NotNullable),
4727 Some(len) => len,
4728 };
4729 if len == 0 {
4731 return Ok(());
4732 };
4733 depth.increment()?;
4734 let envelope_size = 8;
4735 let bytes_len = len * envelope_size;
4736 let offset = decoder.out_of_line_offset(bytes_len)?;
4737 let mut _next_ordinal_to_read = 0;
4739 let mut next_offset = offset;
4740 let end_offset = offset + bytes_len;
4741 _next_ordinal_to_read += 1;
4742 if next_offset >= end_offset {
4743 return Ok(());
4744 }
4745
4746 while _next_ordinal_to_read < 1 {
4748 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4749 _next_ordinal_to_read += 1;
4750 next_offset += envelope_size;
4751 }
4752
4753 let next_out_of_line = decoder.next_out_of_line();
4754 let handles_before = decoder.remaining_handles();
4755 if let Some((inlined, num_bytes, num_handles)) =
4756 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4757 {
4758 let member_inline_size =
4759 <ServiceClassProfileIdentifier as fidl::encoding::TypeMarker>::inline_size(
4760 decoder.context,
4761 );
4762 if inlined != (member_inline_size <= 4) {
4763 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4764 }
4765 let inner_offset;
4766 let mut inner_depth = depth.clone();
4767 if inlined {
4768 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4769 inner_offset = next_offset;
4770 } else {
4771 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4772 inner_depth.increment()?;
4773 }
4774 let val_ref = self
4775 .profile_id
4776 .get_or_insert_with(|| fidl::new_empty!(ServiceClassProfileIdentifier, D));
4777 fidl::decode!(
4778 ServiceClassProfileIdentifier,
4779 D,
4780 val_ref,
4781 decoder,
4782 inner_offset,
4783 inner_depth
4784 )?;
4785 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4786 {
4787 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4788 }
4789 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4790 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4791 }
4792 }
4793
4794 next_offset += envelope_size;
4795 _next_ordinal_to_read += 1;
4796 if next_offset >= end_offset {
4797 return Ok(());
4798 }
4799
4800 while _next_ordinal_to_read < 2 {
4802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4803 _next_ordinal_to_read += 1;
4804 next_offset += envelope_size;
4805 }
4806
4807 let next_out_of_line = decoder.next_out_of_line();
4808 let handles_before = decoder.remaining_handles();
4809 if let Some((inlined, num_bytes, num_handles)) =
4810 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4811 {
4812 let member_inline_size =
4813 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4814 if inlined != (member_inline_size <= 4) {
4815 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4816 }
4817 let inner_offset;
4818 let mut inner_depth = depth.clone();
4819 if inlined {
4820 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4821 inner_offset = next_offset;
4822 } else {
4823 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4824 inner_depth.increment()?;
4825 }
4826 let val_ref = self.major_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4827 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4828 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4829 {
4830 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4831 }
4832 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4833 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4834 }
4835 }
4836
4837 next_offset += envelope_size;
4838 _next_ordinal_to_read += 1;
4839 if next_offset >= end_offset {
4840 return Ok(());
4841 }
4842
4843 while _next_ordinal_to_read < 3 {
4845 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4846 _next_ordinal_to_read += 1;
4847 next_offset += envelope_size;
4848 }
4849
4850 let next_out_of_line = decoder.next_out_of_line();
4851 let handles_before = decoder.remaining_handles();
4852 if let Some((inlined, num_bytes, num_handles)) =
4853 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4854 {
4855 let member_inline_size =
4856 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4857 if inlined != (member_inline_size <= 4) {
4858 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4859 }
4860 let inner_offset;
4861 let mut inner_depth = depth.clone();
4862 if inlined {
4863 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4864 inner_offset = next_offset;
4865 } else {
4866 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4867 inner_depth.increment()?;
4868 }
4869 let val_ref = self.minor_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4870 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4871 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4872 {
4873 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4874 }
4875 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4876 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4877 }
4878 }
4879
4880 next_offset += envelope_size;
4881
4882 while next_offset < end_offset {
4884 _next_ordinal_to_read += 1;
4885 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4886 next_offset += envelope_size;
4887 }
4888
4889 Ok(())
4890 }
4891 }
4892
4893 impl ProfileAdvertiseResponse {
4894 #[inline(always)]
4895 fn max_ordinal_present(&self) -> u64 {
4896 if let Some(_) = self.services {
4897 return 1;
4898 }
4899 0
4900 }
4901 }
4902
4903 impl fidl::encoding::ValueTypeMarker for ProfileAdvertiseResponse {
4904 type Borrowed<'a> = &'a Self;
4905 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4906 value
4907 }
4908 }
4909
4910 unsafe impl fidl::encoding::TypeMarker for ProfileAdvertiseResponse {
4911 type Owned = Self;
4912
4913 #[inline(always)]
4914 fn inline_align(_context: fidl::encoding::Context) -> usize {
4915 8
4916 }
4917
4918 #[inline(always)]
4919 fn inline_size(_context: fidl::encoding::Context) -> usize {
4920 16
4921 }
4922 }
4923
4924 unsafe impl<D: fidl::encoding::ResourceDialect>
4925 fidl::encoding::Encode<ProfileAdvertiseResponse, D> for &ProfileAdvertiseResponse
4926 {
4927 unsafe fn encode(
4928 self,
4929 encoder: &mut fidl::encoding::Encoder<'_, D>,
4930 offset: usize,
4931 mut depth: fidl::encoding::Depth,
4932 ) -> fidl::Result<()> {
4933 encoder.debug_check_bounds::<ProfileAdvertiseResponse>(offset);
4934 let max_ordinal: u64 = self.max_ordinal_present();
4936 encoder.write_num(max_ordinal, offset);
4937 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4938 if max_ordinal == 0 {
4940 return Ok(());
4941 }
4942 depth.increment()?;
4943 let envelope_size = 8;
4944 let bytes_len = max_ordinal as usize * envelope_size;
4945 #[allow(unused_variables)]
4946 let offset = encoder.out_of_line_offset(bytes_len);
4947 let mut _prev_end_offset: usize = 0;
4948 if 1 > max_ordinal {
4949 return Ok(());
4950 }
4951
4952 let cur_offset: usize = (1 - 1) * envelope_size;
4955
4956 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4958
4959 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ServiceDefinition, 32>, D>(
4964 self.services.as_ref().map(<fidl::encoding::Vector<ServiceDefinition, 32> as fidl::encoding::ValueTypeMarker>::borrow),
4965 encoder, offset + cur_offset, depth
4966 )?;
4967
4968 _prev_end_offset = cur_offset + envelope_size;
4969
4970 Ok(())
4971 }
4972 }
4973
4974 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4975 for ProfileAdvertiseResponse
4976 {
4977 #[inline(always)]
4978 fn new_empty() -> Self {
4979 Self::default()
4980 }
4981
4982 unsafe fn decode(
4983 &mut self,
4984 decoder: &mut fidl::encoding::Decoder<'_, D>,
4985 offset: usize,
4986 mut depth: fidl::encoding::Depth,
4987 ) -> fidl::Result<()> {
4988 decoder.debug_check_bounds::<Self>(offset);
4989 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4990 None => return Err(fidl::Error::NotNullable),
4991 Some(len) => len,
4992 };
4993 if len == 0 {
4995 return Ok(());
4996 };
4997 depth.increment()?;
4998 let envelope_size = 8;
4999 let bytes_len = len * envelope_size;
5000 let offset = decoder.out_of_line_offset(bytes_len)?;
5001 let mut _next_ordinal_to_read = 0;
5003 let mut next_offset = offset;
5004 let end_offset = offset + bytes_len;
5005 _next_ordinal_to_read += 1;
5006 if next_offset >= end_offset {
5007 return Ok(());
5008 }
5009
5010 while _next_ordinal_to_read < 1 {
5012 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5013 _next_ordinal_to_read += 1;
5014 next_offset += envelope_size;
5015 }
5016
5017 let next_out_of_line = decoder.next_out_of_line();
5018 let handles_before = decoder.remaining_handles();
5019 if let Some((inlined, num_bytes, num_handles)) =
5020 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5021 {
5022 let member_inline_size = <fidl::encoding::Vector<ServiceDefinition, 32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5023 if inlined != (member_inline_size <= 4) {
5024 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5025 }
5026 let inner_offset;
5027 let mut inner_depth = depth.clone();
5028 if inlined {
5029 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5030 inner_offset = next_offset;
5031 } else {
5032 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5033 inner_depth.increment()?;
5034 }
5035 let val_ref = self.services.get_or_insert_with(
5036 || fidl::new_empty!(fidl::encoding::Vector<ServiceDefinition, 32>, D),
5037 );
5038 fidl::decode!(fidl::encoding::Vector<ServiceDefinition, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
5039 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5040 {
5041 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5042 }
5043 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5044 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5045 }
5046 }
5047
5048 next_offset += envelope_size;
5049
5050 while next_offset < end_offset {
5052 _next_ordinal_to_read += 1;
5053 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5054 next_offset += envelope_size;
5055 }
5056
5057 Ok(())
5058 }
5059 }
5060
5061 impl ProtocolDescriptor {
5062 #[inline(always)]
5063 fn max_ordinal_present(&self) -> u64 {
5064 if let Some(_) = self.params {
5065 return 2;
5066 }
5067 if let Some(_) = self.protocol {
5068 return 1;
5069 }
5070 0
5071 }
5072 }
5073
5074 impl fidl::encoding::ValueTypeMarker for ProtocolDescriptor {
5075 type Borrowed<'a> = &'a Self;
5076 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5077 value
5078 }
5079 }
5080
5081 unsafe impl fidl::encoding::TypeMarker for ProtocolDescriptor {
5082 type Owned = Self;
5083
5084 #[inline(always)]
5085 fn inline_align(_context: fidl::encoding::Context) -> usize {
5086 8
5087 }
5088
5089 #[inline(always)]
5090 fn inline_size(_context: fidl::encoding::Context) -> usize {
5091 16
5092 }
5093 }
5094
5095 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ProtocolDescriptor, D>
5096 for &ProtocolDescriptor
5097 {
5098 unsafe fn encode(
5099 self,
5100 encoder: &mut fidl::encoding::Encoder<'_, D>,
5101 offset: usize,
5102 mut depth: fidl::encoding::Depth,
5103 ) -> fidl::Result<()> {
5104 encoder.debug_check_bounds::<ProtocolDescriptor>(offset);
5105 let max_ordinal: u64 = self.max_ordinal_present();
5107 encoder.write_num(max_ordinal, offset);
5108 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5109 if max_ordinal == 0 {
5111 return Ok(());
5112 }
5113 depth.increment()?;
5114 let envelope_size = 8;
5115 let bytes_len = max_ordinal as usize * envelope_size;
5116 #[allow(unused_variables)]
5117 let offset = encoder.out_of_line_offset(bytes_len);
5118 let mut _prev_end_offset: usize = 0;
5119 if 1 > max_ordinal {
5120 return Ok(());
5121 }
5122
5123 let cur_offset: usize = (1 - 1) * envelope_size;
5126
5127 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5129
5130 fidl::encoding::encode_in_envelope_optional::<ProtocolIdentifier, D>(
5135 self.protocol
5136 .as_ref()
5137 .map(<ProtocolIdentifier as fidl::encoding::ValueTypeMarker>::borrow),
5138 encoder,
5139 offset + cur_offset,
5140 depth,
5141 )?;
5142
5143 _prev_end_offset = cur_offset + envelope_size;
5144 if 2 > max_ordinal {
5145 return Ok(());
5146 }
5147
5148 let cur_offset: usize = (2 - 1) * envelope_size;
5151
5152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5154
5155 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<DataElement, 255>, D>(
5160 self.params.as_ref().map(<fidl::encoding::Vector<DataElement, 255> as fidl::encoding::ValueTypeMarker>::borrow),
5161 encoder, offset + cur_offset, depth
5162 )?;
5163
5164 _prev_end_offset = cur_offset + envelope_size;
5165
5166 Ok(())
5167 }
5168 }
5169
5170 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ProtocolDescriptor {
5171 #[inline(always)]
5172 fn new_empty() -> Self {
5173 Self::default()
5174 }
5175
5176 unsafe fn decode(
5177 &mut self,
5178 decoder: &mut fidl::encoding::Decoder<'_, D>,
5179 offset: usize,
5180 mut depth: fidl::encoding::Depth,
5181 ) -> fidl::Result<()> {
5182 decoder.debug_check_bounds::<Self>(offset);
5183 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5184 None => return Err(fidl::Error::NotNullable),
5185 Some(len) => len,
5186 };
5187 if len == 0 {
5189 return Ok(());
5190 };
5191 depth.increment()?;
5192 let envelope_size = 8;
5193 let bytes_len = len * envelope_size;
5194 let offset = decoder.out_of_line_offset(bytes_len)?;
5195 let mut _next_ordinal_to_read = 0;
5197 let mut next_offset = offset;
5198 let end_offset = offset + bytes_len;
5199 _next_ordinal_to_read += 1;
5200 if next_offset >= end_offset {
5201 return Ok(());
5202 }
5203
5204 while _next_ordinal_to_read < 1 {
5206 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5207 _next_ordinal_to_read += 1;
5208 next_offset += envelope_size;
5209 }
5210
5211 let next_out_of_line = decoder.next_out_of_line();
5212 let handles_before = decoder.remaining_handles();
5213 if let Some((inlined, num_bytes, num_handles)) =
5214 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5215 {
5216 let member_inline_size =
5217 <ProtocolIdentifier as fidl::encoding::TypeMarker>::inline_size(
5218 decoder.context,
5219 );
5220 if inlined != (member_inline_size <= 4) {
5221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5222 }
5223 let inner_offset;
5224 let mut inner_depth = depth.clone();
5225 if inlined {
5226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5227 inner_offset = next_offset;
5228 } else {
5229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5230 inner_depth.increment()?;
5231 }
5232 let val_ref =
5233 self.protocol.get_or_insert_with(|| fidl::new_empty!(ProtocolIdentifier, D));
5234 fidl::decode!(ProtocolIdentifier, D, val_ref, decoder, inner_offset, inner_depth)?;
5235 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5236 {
5237 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5238 }
5239 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5240 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5241 }
5242 }
5243
5244 next_offset += envelope_size;
5245 _next_ordinal_to_read += 1;
5246 if next_offset >= end_offset {
5247 return Ok(());
5248 }
5249
5250 while _next_ordinal_to_read < 2 {
5252 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5253 _next_ordinal_to_read += 1;
5254 next_offset += envelope_size;
5255 }
5256
5257 let next_out_of_line = decoder.next_out_of_line();
5258 let handles_before = decoder.remaining_handles();
5259 if let Some((inlined, num_bytes, num_handles)) =
5260 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5261 {
5262 let member_inline_size = <fidl::encoding::Vector<DataElement, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5263 if inlined != (member_inline_size <= 4) {
5264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5265 }
5266 let inner_offset;
5267 let mut inner_depth = depth.clone();
5268 if inlined {
5269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5270 inner_offset = next_offset;
5271 } else {
5272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5273 inner_depth.increment()?;
5274 }
5275 let val_ref = self.params.get_or_insert_with(
5276 || fidl::new_empty!(fidl::encoding::Vector<DataElement, 255>, D),
5277 );
5278 fidl::decode!(fidl::encoding::Vector<DataElement, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
5279 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5280 {
5281 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5282 }
5283 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5284 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5285 }
5286 }
5287
5288 next_offset += envelope_size;
5289
5290 while next_offset < end_offset {
5292 _next_ordinal_to_read += 1;
5293 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5294 next_offset += envelope_size;
5295 }
5296
5297 Ok(())
5298 }
5299 }
5300
5301 impl RfcommParameters {
5302 #[inline(always)]
5303 fn max_ordinal_present(&self) -> u64 {
5304 if let Some(_) = self.channel {
5305 return 1;
5306 }
5307 0
5308 }
5309 }
5310
5311 impl fidl::encoding::ValueTypeMarker for RfcommParameters {
5312 type Borrowed<'a> = &'a Self;
5313 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5314 value
5315 }
5316 }
5317
5318 unsafe impl fidl::encoding::TypeMarker for RfcommParameters {
5319 type Owned = Self;
5320
5321 #[inline(always)]
5322 fn inline_align(_context: fidl::encoding::Context) -> usize {
5323 8
5324 }
5325
5326 #[inline(always)]
5327 fn inline_size(_context: fidl::encoding::Context) -> usize {
5328 16
5329 }
5330 }
5331
5332 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RfcommParameters, D>
5333 for &RfcommParameters
5334 {
5335 unsafe fn encode(
5336 self,
5337 encoder: &mut fidl::encoding::Encoder<'_, D>,
5338 offset: usize,
5339 mut depth: fidl::encoding::Depth,
5340 ) -> fidl::Result<()> {
5341 encoder.debug_check_bounds::<RfcommParameters>(offset);
5342 let max_ordinal: u64 = self.max_ordinal_present();
5344 encoder.write_num(max_ordinal, offset);
5345 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5346 if max_ordinal == 0 {
5348 return Ok(());
5349 }
5350 depth.increment()?;
5351 let envelope_size = 8;
5352 let bytes_len = max_ordinal as usize * envelope_size;
5353 #[allow(unused_variables)]
5354 let offset = encoder.out_of_line_offset(bytes_len);
5355 let mut _prev_end_offset: usize = 0;
5356 if 1 > max_ordinal {
5357 return Ok(());
5358 }
5359
5360 let cur_offset: usize = (1 - 1) * envelope_size;
5363
5364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5366
5367 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5372 self.channel.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5373 encoder,
5374 offset + cur_offset,
5375 depth,
5376 )?;
5377
5378 _prev_end_offset = cur_offset + envelope_size;
5379
5380 Ok(())
5381 }
5382 }
5383
5384 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RfcommParameters {
5385 #[inline(always)]
5386 fn new_empty() -> Self {
5387 Self::default()
5388 }
5389
5390 unsafe fn decode(
5391 &mut self,
5392 decoder: &mut fidl::encoding::Decoder<'_, D>,
5393 offset: usize,
5394 mut depth: fidl::encoding::Depth,
5395 ) -> fidl::Result<()> {
5396 decoder.debug_check_bounds::<Self>(offset);
5397 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5398 None => return Err(fidl::Error::NotNullable),
5399 Some(len) => len,
5400 };
5401 if len == 0 {
5403 return Ok(());
5404 };
5405 depth.increment()?;
5406 let envelope_size = 8;
5407 let bytes_len = len * envelope_size;
5408 let offset = decoder.out_of_line_offset(bytes_len)?;
5409 let mut _next_ordinal_to_read = 0;
5411 let mut next_offset = offset;
5412 let end_offset = offset + bytes_len;
5413 _next_ordinal_to_read += 1;
5414 if next_offset >= end_offset {
5415 return Ok(());
5416 }
5417
5418 while _next_ordinal_to_read < 1 {
5420 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5421 _next_ordinal_to_read += 1;
5422 next_offset += envelope_size;
5423 }
5424
5425 let next_out_of_line = decoder.next_out_of_line();
5426 let handles_before = decoder.remaining_handles();
5427 if let Some((inlined, num_bytes, num_handles)) =
5428 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5429 {
5430 let member_inline_size =
5431 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5432 if inlined != (member_inline_size <= 4) {
5433 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5434 }
5435 let inner_offset;
5436 let mut inner_depth = depth.clone();
5437 if inlined {
5438 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5439 inner_offset = next_offset;
5440 } else {
5441 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5442 inner_depth.increment()?;
5443 }
5444 let val_ref = self.channel.get_or_insert_with(|| fidl::new_empty!(u8, D));
5445 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
5446 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5447 {
5448 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5449 }
5450 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5451 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5452 }
5453 }
5454
5455 next_offset += envelope_size;
5456
5457 while next_offset < end_offset {
5459 _next_ordinal_to_read += 1;
5460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5461 next_offset += envelope_size;
5462 }
5463
5464 Ok(())
5465 }
5466 }
5467
5468 impl ScoConnectionParameters {
5469 #[inline(always)]
5470 fn max_ordinal_present(&self) -> u64 {
5471 if let Some(_) = self.max_tx_data_size {
5472 return 10;
5473 }
5474 if let Some(_) = self.path {
5475 return 9;
5476 }
5477 if let Some(_) = self.io_pcm_sample_payload_msb_position {
5478 return 8;
5479 }
5480 if let Some(_) = self.io_pcm_data_format {
5481 return 7;
5482 }
5483 if let Some(_) = self.io_frame_size {
5484 return 6;
5485 }
5486 if let Some(_) = self.io_coding_format {
5487 return 5;
5488 }
5489 if let Some(_) = self.io_bandwidth {
5490 return 4;
5491 }
5492 if let Some(_) = self.air_frame_size {
5493 return 3;
5494 }
5495 if let Some(_) = self.air_coding_format {
5496 return 2;
5497 }
5498 if let Some(_) = self.parameter_set {
5499 return 1;
5500 }
5501 0
5502 }
5503 }
5504
5505 impl fidl::encoding::ValueTypeMarker for ScoConnectionParameters {
5506 type Borrowed<'a> = &'a Self;
5507 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5508 value
5509 }
5510 }
5511
5512 unsafe impl fidl::encoding::TypeMarker for ScoConnectionParameters {
5513 type Owned = Self;
5514
5515 #[inline(always)]
5516 fn inline_align(_context: fidl::encoding::Context) -> usize {
5517 8
5518 }
5519
5520 #[inline(always)]
5521 fn inline_size(_context: fidl::encoding::Context) -> usize {
5522 16
5523 }
5524 }
5525
5526 unsafe impl<D: fidl::encoding::ResourceDialect>
5527 fidl::encoding::Encode<ScoConnectionParameters, D> for &ScoConnectionParameters
5528 {
5529 unsafe fn encode(
5530 self,
5531 encoder: &mut fidl::encoding::Encoder<'_, D>,
5532 offset: usize,
5533 mut depth: fidl::encoding::Depth,
5534 ) -> fidl::Result<()> {
5535 encoder.debug_check_bounds::<ScoConnectionParameters>(offset);
5536 let max_ordinal: u64 = self.max_ordinal_present();
5538 encoder.write_num(max_ordinal, offset);
5539 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5540 if max_ordinal == 0 {
5542 return Ok(());
5543 }
5544 depth.increment()?;
5545 let envelope_size = 8;
5546 let bytes_len = max_ordinal as usize * envelope_size;
5547 #[allow(unused_variables)]
5548 let offset = encoder.out_of_line_offset(bytes_len);
5549 let mut _prev_end_offset: usize = 0;
5550 if 1 > max_ordinal {
5551 return Ok(());
5552 }
5553
5554 let cur_offset: usize = (1 - 1) * envelope_size;
5557
5558 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5560
5561 fidl::encoding::encode_in_envelope_optional::<HfpParameterSet, D>(
5566 self.parameter_set
5567 .as_ref()
5568 .map(<HfpParameterSet as fidl::encoding::ValueTypeMarker>::borrow),
5569 encoder,
5570 offset + cur_offset,
5571 depth,
5572 )?;
5573
5574 _prev_end_offset = cur_offset + envelope_size;
5575 if 2 > max_ordinal {
5576 return Ok(());
5577 }
5578
5579 let cur_offset: usize = (2 - 1) * envelope_size;
5582
5583 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5585
5586 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth::AssignedCodingFormat, D>(
5591 self.air_coding_format.as_ref().map(<fidl_fuchsia_bluetooth::AssignedCodingFormat as fidl::encoding::ValueTypeMarker>::borrow),
5592 encoder, offset + cur_offset, depth
5593 )?;
5594
5595 _prev_end_offset = cur_offset + envelope_size;
5596 if 3 > max_ordinal {
5597 return Ok(());
5598 }
5599
5600 let cur_offset: usize = (3 - 1) * envelope_size;
5603
5604 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5606
5607 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5612 self.air_frame_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5613 encoder,
5614 offset + cur_offset,
5615 depth,
5616 )?;
5617
5618 _prev_end_offset = cur_offset + envelope_size;
5619 if 4 > max_ordinal {
5620 return Ok(());
5621 }
5622
5623 let cur_offset: usize = (4 - 1) * envelope_size;
5626
5627 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5629
5630 fidl::encoding::encode_in_envelope_optional::<u32, D>(
5635 self.io_bandwidth.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
5636 encoder,
5637 offset + cur_offset,
5638 depth,
5639 )?;
5640
5641 _prev_end_offset = cur_offset + envelope_size;
5642 if 5 > max_ordinal {
5643 return Ok(());
5644 }
5645
5646 let cur_offset: usize = (5 - 1) * envelope_size;
5649
5650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5652
5653 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth::AssignedCodingFormat, D>(
5658 self.io_coding_format.as_ref().map(<fidl_fuchsia_bluetooth::AssignedCodingFormat as fidl::encoding::ValueTypeMarker>::borrow),
5659 encoder, offset + cur_offset, depth
5660 )?;
5661
5662 _prev_end_offset = cur_offset + envelope_size;
5663 if 6 > max_ordinal {
5664 return Ok(());
5665 }
5666
5667 let cur_offset: usize = (6 - 1) * envelope_size;
5670
5671 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5673
5674 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5679 self.io_frame_size.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5680 encoder,
5681 offset + cur_offset,
5682 depth,
5683 )?;
5684
5685 _prev_end_offset = cur_offset + envelope_size;
5686 if 7 > max_ordinal {
5687 return Ok(());
5688 }
5689
5690 let cur_offset: usize = (7 - 1) * envelope_size;
5693
5694 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5696
5697 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio::SampleFormat, D>(
5702 self.io_pcm_data_format.as_ref().map(<fidl_fuchsia_hardware_audio::SampleFormat as fidl::encoding::ValueTypeMarker>::borrow),
5703 encoder, offset + cur_offset, depth
5704 )?;
5705
5706 _prev_end_offset = cur_offset + envelope_size;
5707 if 8 > max_ordinal {
5708 return Ok(());
5709 }
5710
5711 let cur_offset: usize = (8 - 1) * envelope_size;
5714
5715 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5717
5718 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5723 self.io_pcm_sample_payload_msb_position
5724 .as_ref()
5725 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5726 encoder,
5727 offset + cur_offset,
5728 depth,
5729 )?;
5730
5731 _prev_end_offset = cur_offset + envelope_size;
5732 if 9 > max_ordinal {
5733 return Ok(());
5734 }
5735
5736 let cur_offset: usize = (9 - 1) * envelope_size;
5739
5740 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5742
5743 fidl::encoding::encode_in_envelope_optional::<DataPath, D>(
5748 self.path.as_ref().map(<DataPath as fidl::encoding::ValueTypeMarker>::borrow),
5749 encoder,
5750 offset + cur_offset,
5751 depth,
5752 )?;
5753
5754 _prev_end_offset = cur_offset + envelope_size;
5755 if 10 > max_ordinal {
5756 return Ok(());
5757 }
5758
5759 let cur_offset: usize = (10 - 1) * envelope_size;
5762
5763 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5765
5766 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5771 self.max_tx_data_size
5772 .as_ref()
5773 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5774 encoder,
5775 offset + cur_offset,
5776 depth,
5777 )?;
5778
5779 _prev_end_offset = cur_offset + envelope_size;
5780
5781 Ok(())
5782 }
5783 }
5784
5785 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5786 for ScoConnectionParameters
5787 {
5788 #[inline(always)]
5789 fn new_empty() -> Self {
5790 Self::default()
5791 }
5792
5793 unsafe fn decode(
5794 &mut self,
5795 decoder: &mut fidl::encoding::Decoder<'_, D>,
5796 offset: usize,
5797 mut depth: fidl::encoding::Depth,
5798 ) -> fidl::Result<()> {
5799 decoder.debug_check_bounds::<Self>(offset);
5800 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5801 None => return Err(fidl::Error::NotNullable),
5802 Some(len) => len,
5803 };
5804 if len == 0 {
5806 return Ok(());
5807 };
5808 depth.increment()?;
5809 let envelope_size = 8;
5810 let bytes_len = len * envelope_size;
5811 let offset = decoder.out_of_line_offset(bytes_len)?;
5812 let mut _next_ordinal_to_read = 0;
5814 let mut next_offset = offset;
5815 let end_offset = offset + bytes_len;
5816 _next_ordinal_to_read += 1;
5817 if next_offset >= end_offset {
5818 return Ok(());
5819 }
5820
5821 while _next_ordinal_to_read < 1 {
5823 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5824 _next_ordinal_to_read += 1;
5825 next_offset += envelope_size;
5826 }
5827
5828 let next_out_of_line = decoder.next_out_of_line();
5829 let handles_before = decoder.remaining_handles();
5830 if let Some((inlined, num_bytes, num_handles)) =
5831 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5832 {
5833 let member_inline_size =
5834 <HfpParameterSet as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5835 if inlined != (member_inline_size <= 4) {
5836 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5837 }
5838 let inner_offset;
5839 let mut inner_depth = depth.clone();
5840 if inlined {
5841 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5842 inner_offset = next_offset;
5843 } else {
5844 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5845 inner_depth.increment()?;
5846 }
5847 let val_ref =
5848 self.parameter_set.get_or_insert_with(|| fidl::new_empty!(HfpParameterSet, D));
5849 fidl::decode!(HfpParameterSet, D, val_ref, decoder, inner_offset, inner_depth)?;
5850 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5851 {
5852 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5853 }
5854 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5855 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5856 }
5857 }
5858
5859 next_offset += envelope_size;
5860 _next_ordinal_to_read += 1;
5861 if next_offset >= end_offset {
5862 return Ok(());
5863 }
5864
5865 while _next_ordinal_to_read < 2 {
5867 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5868 _next_ordinal_to_read += 1;
5869 next_offset += envelope_size;
5870 }
5871
5872 let next_out_of_line = decoder.next_out_of_line();
5873 let handles_before = decoder.remaining_handles();
5874 if let Some((inlined, num_bytes, num_handles)) =
5875 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5876 {
5877 let member_inline_size = <fidl_fuchsia_bluetooth::AssignedCodingFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5878 if inlined != (member_inline_size <= 4) {
5879 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5880 }
5881 let inner_offset;
5882 let mut inner_depth = depth.clone();
5883 if inlined {
5884 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5885 inner_offset = next_offset;
5886 } else {
5887 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5888 inner_depth.increment()?;
5889 }
5890 let val_ref = self.air_coding_format.get_or_insert_with(|| {
5891 fidl::new_empty!(fidl_fuchsia_bluetooth::AssignedCodingFormat, D)
5892 });
5893 fidl::decode!(
5894 fidl_fuchsia_bluetooth::AssignedCodingFormat,
5895 D,
5896 val_ref,
5897 decoder,
5898 inner_offset,
5899 inner_depth
5900 )?;
5901 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5902 {
5903 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5904 }
5905 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5906 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5907 }
5908 }
5909
5910 next_offset += envelope_size;
5911 _next_ordinal_to_read += 1;
5912 if next_offset >= end_offset {
5913 return Ok(());
5914 }
5915
5916 while _next_ordinal_to_read < 3 {
5918 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5919 _next_ordinal_to_read += 1;
5920 next_offset += envelope_size;
5921 }
5922
5923 let next_out_of_line = decoder.next_out_of_line();
5924 let handles_before = decoder.remaining_handles();
5925 if let Some((inlined, num_bytes, num_handles)) =
5926 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5927 {
5928 let member_inline_size =
5929 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5930 if inlined != (member_inline_size <= 4) {
5931 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5932 }
5933 let inner_offset;
5934 let mut inner_depth = depth.clone();
5935 if inlined {
5936 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5937 inner_offset = next_offset;
5938 } else {
5939 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5940 inner_depth.increment()?;
5941 }
5942 let val_ref = self.air_frame_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
5943 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5944 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5945 {
5946 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5947 }
5948 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5949 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5950 }
5951 }
5952
5953 next_offset += envelope_size;
5954 _next_ordinal_to_read += 1;
5955 if next_offset >= end_offset {
5956 return Ok(());
5957 }
5958
5959 while _next_ordinal_to_read < 4 {
5961 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5962 _next_ordinal_to_read += 1;
5963 next_offset += envelope_size;
5964 }
5965
5966 let next_out_of_line = decoder.next_out_of_line();
5967 let handles_before = decoder.remaining_handles();
5968 if let Some((inlined, num_bytes, num_handles)) =
5969 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5970 {
5971 let member_inline_size =
5972 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5973 if inlined != (member_inline_size <= 4) {
5974 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5975 }
5976 let inner_offset;
5977 let mut inner_depth = depth.clone();
5978 if inlined {
5979 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5980 inner_offset = next_offset;
5981 } else {
5982 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5983 inner_depth.increment()?;
5984 }
5985 let val_ref = self.io_bandwidth.get_or_insert_with(|| fidl::new_empty!(u32, D));
5986 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
5987 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5988 {
5989 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5990 }
5991 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5992 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5993 }
5994 }
5995
5996 next_offset += envelope_size;
5997 _next_ordinal_to_read += 1;
5998 if next_offset >= end_offset {
5999 return Ok(());
6000 }
6001
6002 while _next_ordinal_to_read < 5 {
6004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6005 _next_ordinal_to_read += 1;
6006 next_offset += envelope_size;
6007 }
6008
6009 let next_out_of_line = decoder.next_out_of_line();
6010 let handles_before = decoder.remaining_handles();
6011 if let Some((inlined, num_bytes, num_handles)) =
6012 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6013 {
6014 let member_inline_size = <fidl_fuchsia_bluetooth::AssignedCodingFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6015 if inlined != (member_inline_size <= 4) {
6016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6017 }
6018 let inner_offset;
6019 let mut inner_depth = depth.clone();
6020 if inlined {
6021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6022 inner_offset = next_offset;
6023 } else {
6024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6025 inner_depth.increment()?;
6026 }
6027 let val_ref = self.io_coding_format.get_or_insert_with(|| {
6028 fidl::new_empty!(fidl_fuchsia_bluetooth::AssignedCodingFormat, D)
6029 });
6030 fidl::decode!(
6031 fidl_fuchsia_bluetooth::AssignedCodingFormat,
6032 D,
6033 val_ref,
6034 decoder,
6035 inner_offset,
6036 inner_depth
6037 )?;
6038 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6039 {
6040 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6041 }
6042 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6043 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6044 }
6045 }
6046
6047 next_offset += envelope_size;
6048 _next_ordinal_to_read += 1;
6049 if next_offset >= end_offset {
6050 return Ok(());
6051 }
6052
6053 while _next_ordinal_to_read < 6 {
6055 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6056 _next_ordinal_to_read += 1;
6057 next_offset += envelope_size;
6058 }
6059
6060 let next_out_of_line = decoder.next_out_of_line();
6061 let handles_before = decoder.remaining_handles();
6062 if let Some((inlined, num_bytes, num_handles)) =
6063 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6064 {
6065 let member_inline_size =
6066 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6067 if inlined != (member_inline_size <= 4) {
6068 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6069 }
6070 let inner_offset;
6071 let mut inner_depth = depth.clone();
6072 if inlined {
6073 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6074 inner_offset = next_offset;
6075 } else {
6076 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6077 inner_depth.increment()?;
6078 }
6079 let val_ref = self.io_frame_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6080 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6081 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6082 {
6083 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6084 }
6085 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6086 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6087 }
6088 }
6089
6090 next_offset += envelope_size;
6091 _next_ordinal_to_read += 1;
6092 if next_offset >= end_offset {
6093 return Ok(());
6094 }
6095
6096 while _next_ordinal_to_read < 7 {
6098 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6099 _next_ordinal_to_read += 1;
6100 next_offset += envelope_size;
6101 }
6102
6103 let next_out_of_line = decoder.next_out_of_line();
6104 let handles_before = decoder.remaining_handles();
6105 if let Some((inlined, num_bytes, num_handles)) =
6106 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6107 {
6108 let member_inline_size = <fidl_fuchsia_hardware_audio::SampleFormat as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6109 if inlined != (member_inline_size <= 4) {
6110 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6111 }
6112 let inner_offset;
6113 let mut inner_depth = depth.clone();
6114 if inlined {
6115 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6116 inner_offset = next_offset;
6117 } else {
6118 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6119 inner_depth.increment()?;
6120 }
6121 let val_ref = self.io_pcm_data_format.get_or_insert_with(|| {
6122 fidl::new_empty!(fidl_fuchsia_hardware_audio::SampleFormat, D)
6123 });
6124 fidl::decode!(
6125 fidl_fuchsia_hardware_audio::SampleFormat,
6126 D,
6127 val_ref,
6128 decoder,
6129 inner_offset,
6130 inner_depth
6131 )?;
6132 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6133 {
6134 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6135 }
6136 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6137 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6138 }
6139 }
6140
6141 next_offset += envelope_size;
6142 _next_ordinal_to_read += 1;
6143 if next_offset >= end_offset {
6144 return Ok(());
6145 }
6146
6147 while _next_ordinal_to_read < 8 {
6149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6150 _next_ordinal_to_read += 1;
6151 next_offset += envelope_size;
6152 }
6153
6154 let next_out_of_line = decoder.next_out_of_line();
6155 let handles_before = decoder.remaining_handles();
6156 if let Some((inlined, num_bytes, num_handles)) =
6157 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6158 {
6159 let member_inline_size =
6160 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6161 if inlined != (member_inline_size <= 4) {
6162 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6163 }
6164 let inner_offset;
6165 let mut inner_depth = depth.clone();
6166 if inlined {
6167 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6168 inner_offset = next_offset;
6169 } else {
6170 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6171 inner_depth.increment()?;
6172 }
6173 let val_ref = self
6174 .io_pcm_sample_payload_msb_position
6175 .get_or_insert_with(|| fidl::new_empty!(u8, D));
6176 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6177 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6178 {
6179 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6180 }
6181 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6182 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6183 }
6184 }
6185
6186 next_offset += envelope_size;
6187 _next_ordinal_to_read += 1;
6188 if next_offset >= end_offset {
6189 return Ok(());
6190 }
6191
6192 while _next_ordinal_to_read < 9 {
6194 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6195 _next_ordinal_to_read += 1;
6196 next_offset += envelope_size;
6197 }
6198
6199 let next_out_of_line = decoder.next_out_of_line();
6200 let handles_before = decoder.remaining_handles();
6201 if let Some((inlined, num_bytes, num_handles)) =
6202 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6203 {
6204 let member_inline_size =
6205 <DataPath as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6206 if inlined != (member_inline_size <= 4) {
6207 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6208 }
6209 let inner_offset;
6210 let mut inner_depth = depth.clone();
6211 if inlined {
6212 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6213 inner_offset = next_offset;
6214 } else {
6215 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6216 inner_depth.increment()?;
6217 }
6218 let val_ref = self.path.get_or_insert_with(|| fidl::new_empty!(DataPath, D));
6219 fidl::decode!(DataPath, D, val_ref, decoder, inner_offset, inner_depth)?;
6220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6221 {
6222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6223 }
6224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6226 }
6227 }
6228
6229 next_offset += envelope_size;
6230 _next_ordinal_to_read += 1;
6231 if next_offset >= end_offset {
6232 return Ok(());
6233 }
6234
6235 while _next_ordinal_to_read < 10 {
6237 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6238 _next_ordinal_to_read += 1;
6239 next_offset += envelope_size;
6240 }
6241
6242 let next_out_of_line = decoder.next_out_of_line();
6243 let handles_before = decoder.remaining_handles();
6244 if let Some((inlined, num_bytes, num_handles)) =
6245 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6246 {
6247 let member_inline_size =
6248 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6249 if inlined != (member_inline_size <= 4) {
6250 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6251 }
6252 let inner_offset;
6253 let mut inner_depth = depth.clone();
6254 if inlined {
6255 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6256 inner_offset = next_offset;
6257 } else {
6258 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6259 inner_depth.increment()?;
6260 }
6261 let val_ref = self.max_tx_data_size.get_or_insert_with(|| fidl::new_empty!(u16, D));
6262 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
6263 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6264 {
6265 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6266 }
6267 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6268 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6269 }
6270 }
6271
6272 next_offset += envelope_size;
6273
6274 while next_offset < end_offset {
6276 _next_ordinal_to_read += 1;
6277 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6278 next_offset += envelope_size;
6279 }
6280
6281 Ok(())
6282 }
6283 }
6284
6285 impl ScoConnectionWriteRequest {
6286 #[inline(always)]
6287 fn max_ordinal_present(&self) -> u64 {
6288 if let Some(_) = self.data {
6289 return 1;
6290 }
6291 0
6292 }
6293 }
6294
6295 impl fidl::encoding::ValueTypeMarker for ScoConnectionWriteRequest {
6296 type Borrowed<'a> = &'a Self;
6297 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6298 value
6299 }
6300 }
6301
6302 unsafe impl fidl::encoding::TypeMarker for ScoConnectionWriteRequest {
6303 type Owned = Self;
6304
6305 #[inline(always)]
6306 fn inline_align(_context: fidl::encoding::Context) -> usize {
6307 8
6308 }
6309
6310 #[inline(always)]
6311 fn inline_size(_context: fidl::encoding::Context) -> usize {
6312 16
6313 }
6314 }
6315
6316 unsafe impl<D: fidl::encoding::ResourceDialect>
6317 fidl::encoding::Encode<ScoConnectionWriteRequest, D> for &ScoConnectionWriteRequest
6318 {
6319 unsafe fn encode(
6320 self,
6321 encoder: &mut fidl::encoding::Encoder<'_, D>,
6322 offset: usize,
6323 mut depth: fidl::encoding::Depth,
6324 ) -> fidl::Result<()> {
6325 encoder.debug_check_bounds::<ScoConnectionWriteRequest>(offset);
6326 let max_ordinal: u64 = self.max_ordinal_present();
6328 encoder.write_num(max_ordinal, offset);
6329 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6330 if max_ordinal == 0 {
6332 return Ok(());
6333 }
6334 depth.increment()?;
6335 let envelope_size = 8;
6336 let bytes_len = max_ordinal as usize * envelope_size;
6337 #[allow(unused_variables)]
6338 let offset = encoder.out_of_line_offset(bytes_len);
6339 let mut _prev_end_offset: usize = 0;
6340 if 1 > max_ordinal {
6341 return Ok(());
6342 }
6343
6344 let cur_offset: usize = (1 - 1) * envelope_size;
6347
6348 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6350
6351 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6356 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6357 encoder, offset + cur_offset, depth
6358 )?;
6359
6360 _prev_end_offset = cur_offset + envelope_size;
6361
6362 Ok(())
6363 }
6364 }
6365
6366 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6367 for ScoConnectionWriteRequest
6368 {
6369 #[inline(always)]
6370 fn new_empty() -> Self {
6371 Self::default()
6372 }
6373
6374 unsafe fn decode(
6375 &mut self,
6376 decoder: &mut fidl::encoding::Decoder<'_, D>,
6377 offset: usize,
6378 mut depth: fidl::encoding::Depth,
6379 ) -> fidl::Result<()> {
6380 decoder.debug_check_bounds::<Self>(offset);
6381 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6382 None => return Err(fidl::Error::NotNullable),
6383 Some(len) => len,
6384 };
6385 if len == 0 {
6387 return Ok(());
6388 };
6389 depth.increment()?;
6390 let envelope_size = 8;
6391 let bytes_len = len * envelope_size;
6392 let offset = decoder.out_of_line_offset(bytes_len)?;
6393 let mut _next_ordinal_to_read = 0;
6395 let mut next_offset = offset;
6396 let end_offset = offset + bytes_len;
6397 _next_ordinal_to_read += 1;
6398 if next_offset >= end_offset {
6399 return Ok(());
6400 }
6401
6402 while _next_ordinal_to_read < 1 {
6404 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6405 _next_ordinal_to_read += 1;
6406 next_offset += envelope_size;
6407 }
6408
6409 let next_out_of_line = decoder.next_out_of_line();
6410 let handles_before = decoder.remaining_handles();
6411 if let Some((inlined, num_bytes, num_handles)) =
6412 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6413 {
6414 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6415 if inlined != (member_inline_size <= 4) {
6416 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6417 }
6418 let inner_offset;
6419 let mut inner_depth = depth.clone();
6420 if inlined {
6421 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6422 inner_offset = next_offset;
6423 } else {
6424 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6425 inner_depth.increment()?;
6426 }
6427 let val_ref = self.data.get_or_insert_with(|| {
6428 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6429 });
6430 fidl::decode!(
6431 fidl::encoding::UnboundedVector<u8>,
6432 D,
6433 val_ref,
6434 decoder,
6435 inner_offset,
6436 inner_depth
6437 )?;
6438 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6439 {
6440 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6441 }
6442 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6443 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6444 }
6445 }
6446
6447 next_offset += envelope_size;
6448
6449 while next_offset < end_offset {
6451 _next_ordinal_to_read += 1;
6452 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6453 next_offset += envelope_size;
6454 }
6455
6456 Ok(())
6457 }
6458 }
6459
6460 impl ScoConnectionReadResponse {
6461 #[inline(always)]
6462 fn max_ordinal_present(&self) -> u64 {
6463 if let Some(_) = self.data {
6464 return 2;
6465 }
6466 if let Some(_) = self.status_flag {
6467 return 1;
6468 }
6469 0
6470 }
6471 }
6472
6473 impl fidl::encoding::ValueTypeMarker for ScoConnectionReadResponse {
6474 type Borrowed<'a> = &'a Self;
6475 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6476 value
6477 }
6478 }
6479
6480 unsafe impl fidl::encoding::TypeMarker for ScoConnectionReadResponse {
6481 type Owned = Self;
6482
6483 #[inline(always)]
6484 fn inline_align(_context: fidl::encoding::Context) -> usize {
6485 8
6486 }
6487
6488 #[inline(always)]
6489 fn inline_size(_context: fidl::encoding::Context) -> usize {
6490 16
6491 }
6492 }
6493
6494 unsafe impl<D: fidl::encoding::ResourceDialect>
6495 fidl::encoding::Encode<ScoConnectionReadResponse, D> for &ScoConnectionReadResponse
6496 {
6497 unsafe fn encode(
6498 self,
6499 encoder: &mut fidl::encoding::Encoder<'_, D>,
6500 offset: usize,
6501 mut depth: fidl::encoding::Depth,
6502 ) -> fidl::Result<()> {
6503 encoder.debug_check_bounds::<ScoConnectionReadResponse>(offset);
6504 let max_ordinal: u64 = self.max_ordinal_present();
6506 encoder.write_num(max_ordinal, offset);
6507 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6508 if max_ordinal == 0 {
6510 return Ok(());
6511 }
6512 depth.increment()?;
6513 let envelope_size = 8;
6514 let bytes_len = max_ordinal as usize * envelope_size;
6515 #[allow(unused_variables)]
6516 let offset = encoder.out_of_line_offset(bytes_len);
6517 let mut _prev_end_offset: usize = 0;
6518 if 1 > max_ordinal {
6519 return Ok(());
6520 }
6521
6522 let cur_offset: usize = (1 - 1) * envelope_size;
6525
6526 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6528
6529 fidl::encoding::encode_in_envelope_optional::<RxPacketStatus, D>(
6534 self.status_flag
6535 .as_ref()
6536 .map(<RxPacketStatus as fidl::encoding::ValueTypeMarker>::borrow),
6537 encoder,
6538 offset + cur_offset,
6539 depth,
6540 )?;
6541
6542 _prev_end_offset = cur_offset + envelope_size;
6543 if 2 > max_ordinal {
6544 return Ok(());
6545 }
6546
6547 let cur_offset: usize = (2 - 1) * envelope_size;
6550
6551 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6553
6554 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u8>, D>(
6559 self.data.as_ref().map(<fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow),
6560 encoder, offset + cur_offset, depth
6561 )?;
6562
6563 _prev_end_offset = cur_offset + envelope_size;
6564
6565 Ok(())
6566 }
6567 }
6568
6569 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6570 for ScoConnectionReadResponse
6571 {
6572 #[inline(always)]
6573 fn new_empty() -> Self {
6574 Self::default()
6575 }
6576
6577 unsafe fn decode(
6578 &mut self,
6579 decoder: &mut fidl::encoding::Decoder<'_, D>,
6580 offset: usize,
6581 mut depth: fidl::encoding::Depth,
6582 ) -> fidl::Result<()> {
6583 decoder.debug_check_bounds::<Self>(offset);
6584 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6585 None => return Err(fidl::Error::NotNullable),
6586 Some(len) => len,
6587 };
6588 if len == 0 {
6590 return Ok(());
6591 };
6592 depth.increment()?;
6593 let envelope_size = 8;
6594 let bytes_len = len * envelope_size;
6595 let offset = decoder.out_of_line_offset(bytes_len)?;
6596 let mut _next_ordinal_to_read = 0;
6598 let mut next_offset = offset;
6599 let end_offset = offset + bytes_len;
6600 _next_ordinal_to_read += 1;
6601 if next_offset >= end_offset {
6602 return Ok(());
6603 }
6604
6605 while _next_ordinal_to_read < 1 {
6607 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6608 _next_ordinal_to_read += 1;
6609 next_offset += envelope_size;
6610 }
6611
6612 let next_out_of_line = decoder.next_out_of_line();
6613 let handles_before = decoder.remaining_handles();
6614 if let Some((inlined, num_bytes, num_handles)) =
6615 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6616 {
6617 let member_inline_size =
6618 <RxPacketStatus as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6619 if inlined != (member_inline_size <= 4) {
6620 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6621 }
6622 let inner_offset;
6623 let mut inner_depth = depth.clone();
6624 if inlined {
6625 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6626 inner_offset = next_offset;
6627 } else {
6628 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6629 inner_depth.increment()?;
6630 }
6631 let val_ref =
6632 self.status_flag.get_or_insert_with(|| fidl::new_empty!(RxPacketStatus, D));
6633 fidl::decode!(RxPacketStatus, D, val_ref, decoder, inner_offset, inner_depth)?;
6634 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6635 {
6636 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6637 }
6638 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6639 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6640 }
6641 }
6642
6643 next_offset += envelope_size;
6644 _next_ordinal_to_read += 1;
6645 if next_offset >= end_offset {
6646 return Ok(());
6647 }
6648
6649 while _next_ordinal_to_read < 2 {
6651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6652 _next_ordinal_to_read += 1;
6653 next_offset += envelope_size;
6654 }
6655
6656 let next_out_of_line = decoder.next_out_of_line();
6657 let handles_before = decoder.remaining_handles();
6658 if let Some((inlined, num_bytes, num_handles)) =
6659 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6660 {
6661 let member_inline_size = <fidl::encoding::UnboundedVector<u8> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6662 if inlined != (member_inline_size <= 4) {
6663 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6664 }
6665 let inner_offset;
6666 let mut inner_depth = depth.clone();
6667 if inlined {
6668 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6669 inner_offset = next_offset;
6670 } else {
6671 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6672 inner_depth.increment()?;
6673 }
6674 let val_ref = self.data.get_or_insert_with(|| {
6675 fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D)
6676 });
6677 fidl::decode!(
6678 fidl::encoding::UnboundedVector<u8>,
6679 D,
6680 val_ref,
6681 decoder,
6682 inner_offset,
6683 inner_depth
6684 )?;
6685 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6686 {
6687 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6688 }
6689 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6690 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6691 }
6692 }
6693
6694 next_offset += envelope_size;
6695
6696 while next_offset < end_offset {
6698 _next_ordinal_to_read += 1;
6699 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6700 next_offset += envelope_size;
6701 }
6702
6703 Ok(())
6704 }
6705 }
6706
6707 impl ServiceDefinition {
6708 #[inline(always)]
6709 fn max_ordinal_present(&self) -> u64 {
6710 if let Some(_) = self.additional_attributes {
6711 return 6;
6712 }
6713 if let Some(_) = self.information {
6714 return 5;
6715 }
6716 if let Some(_) = self.profile_descriptors {
6717 return 4;
6718 }
6719 if let Some(_) = self.additional_protocol_descriptor_lists {
6720 return 3;
6721 }
6722 if let Some(_) = self.protocol_descriptor_list {
6723 return 2;
6724 }
6725 if let Some(_) = self.service_class_uuids {
6726 return 1;
6727 }
6728 0
6729 }
6730 }
6731
6732 impl fidl::encoding::ValueTypeMarker for ServiceDefinition {
6733 type Borrowed<'a> = &'a Self;
6734 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6735 value
6736 }
6737 }
6738
6739 unsafe impl fidl::encoding::TypeMarker for ServiceDefinition {
6740 type Owned = Self;
6741
6742 #[inline(always)]
6743 fn inline_align(_context: fidl::encoding::Context) -> usize {
6744 8
6745 }
6746
6747 #[inline(always)]
6748 fn inline_size(_context: fidl::encoding::Context) -> usize {
6749 16
6750 }
6751 }
6752
6753 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ServiceDefinition, D>
6754 for &ServiceDefinition
6755 {
6756 unsafe fn encode(
6757 self,
6758 encoder: &mut fidl::encoding::Encoder<'_, D>,
6759 offset: usize,
6760 mut depth: fidl::encoding::Depth,
6761 ) -> fidl::Result<()> {
6762 encoder.debug_check_bounds::<ServiceDefinition>(offset);
6763 let max_ordinal: u64 = self.max_ordinal_present();
6765 encoder.write_num(max_ordinal, offset);
6766 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6767 if max_ordinal == 0 {
6769 return Ok(());
6770 }
6771 depth.increment()?;
6772 let envelope_size = 8;
6773 let bytes_len = max_ordinal as usize * envelope_size;
6774 #[allow(unused_variables)]
6775 let offset = encoder.out_of_line_offset(bytes_len);
6776 let mut _prev_end_offset: usize = 0;
6777 if 1 > max_ordinal {
6778 return Ok(());
6779 }
6780
6781 let cur_offset: usize = (1 - 1) * envelope_size;
6784
6785 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6787
6788 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_bluetooth::Uuid, 255>, D>(
6793 self.service_class_uuids.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_bluetooth::Uuid, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6794 encoder, offset + cur_offset, depth
6795 )?;
6796
6797 _prev_end_offset = cur_offset + envelope_size;
6798 if 2 > max_ordinal {
6799 return Ok(());
6800 }
6801
6802 let cur_offset: usize = (2 - 1) * envelope_size;
6805
6806 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6808
6809 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProtocolDescriptor, 255>, D>(
6814 self.protocol_descriptor_list.as_ref().map(<fidl::encoding::Vector<ProtocolDescriptor, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6815 encoder, offset + cur_offset, depth
6816 )?;
6817
6818 _prev_end_offset = cur_offset + envelope_size;
6819 if 3 > max_ordinal {
6820 return Ok(());
6821 }
6822
6823 let cur_offset: usize = (3 - 1) * envelope_size;
6826
6827 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6829
6830 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl::encoding::Vector<ProtocolDescriptor, 255>, 255>, D>(
6835 self.additional_protocol_descriptor_lists.as_ref().map(<fidl::encoding::Vector<fidl::encoding::Vector<ProtocolDescriptor, 255>, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6836 encoder, offset + cur_offset, depth
6837 )?;
6838
6839 _prev_end_offset = cur_offset + envelope_size;
6840 if 4 > max_ordinal {
6841 return Ok(());
6842 }
6843
6844 let cur_offset: usize = (4 - 1) * envelope_size;
6847
6848 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6850
6851 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<ProfileDescriptor, 255>, D>(
6856 self.profile_descriptors.as_ref().map(<fidl::encoding::Vector<ProfileDescriptor, 255> as fidl::encoding::ValueTypeMarker>::borrow),
6857 encoder, offset + cur_offset, depth
6858 )?;
6859
6860 _prev_end_offset = cur_offset + envelope_size;
6861 if 5 > max_ordinal {
6862 return Ok(());
6863 }
6864
6865 let cur_offset: usize = (5 - 1) * envelope_size;
6868
6869 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6871
6872 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Information, 85>, D>(
6877 self.information.as_ref().map(<fidl::encoding::Vector<Information, 85> as fidl::encoding::ValueTypeMarker>::borrow),
6878 encoder, offset + cur_offset, depth
6879 )?;
6880
6881 _prev_end_offset = cur_offset + envelope_size;
6882 if 6 > max_ordinal {
6883 return Ok(());
6884 }
6885
6886 let cur_offset: usize = (6 - 1) * envelope_size;
6889
6890 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6892
6893 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<Attribute, 65023>, D>(
6898 self.additional_attributes.as_ref().map(<fidl::encoding::Vector<Attribute, 65023> as fidl::encoding::ValueTypeMarker>::borrow),
6899 encoder, offset + cur_offset, depth
6900 )?;
6901
6902 _prev_end_offset = cur_offset + envelope_size;
6903
6904 Ok(())
6905 }
6906 }
6907
6908 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ServiceDefinition {
6909 #[inline(always)]
6910 fn new_empty() -> Self {
6911 Self::default()
6912 }
6913
6914 unsafe fn decode(
6915 &mut self,
6916 decoder: &mut fidl::encoding::Decoder<'_, D>,
6917 offset: usize,
6918 mut depth: fidl::encoding::Depth,
6919 ) -> fidl::Result<()> {
6920 decoder.debug_check_bounds::<Self>(offset);
6921 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6922 None => return Err(fidl::Error::NotNullable),
6923 Some(len) => len,
6924 };
6925 if len == 0 {
6927 return Ok(());
6928 };
6929 depth.increment()?;
6930 let envelope_size = 8;
6931 let bytes_len = len * envelope_size;
6932 let offset = decoder.out_of_line_offset(bytes_len)?;
6933 let mut _next_ordinal_to_read = 0;
6935 let mut next_offset = offset;
6936 let end_offset = offset + bytes_len;
6937 _next_ordinal_to_read += 1;
6938 if next_offset >= end_offset {
6939 return Ok(());
6940 }
6941
6942 while _next_ordinal_to_read < 1 {
6944 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6945 _next_ordinal_to_read += 1;
6946 next_offset += envelope_size;
6947 }
6948
6949 let next_out_of_line = decoder.next_out_of_line();
6950 let handles_before = decoder.remaining_handles();
6951 if let Some((inlined, num_bytes, num_handles)) =
6952 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6953 {
6954 let member_inline_size = <fidl::encoding::Vector<fidl_fuchsia_bluetooth::Uuid, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6955 if inlined != (member_inline_size <= 4) {
6956 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6957 }
6958 let inner_offset;
6959 let mut inner_depth = depth.clone();
6960 if inlined {
6961 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6962 inner_offset = next_offset;
6963 } else {
6964 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6965 inner_depth.increment()?;
6966 }
6967 let val_ref =
6968 self.service_class_uuids.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_bluetooth::Uuid, 255>, D));
6969 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_bluetooth::Uuid, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
6970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6971 {
6972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6973 }
6974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6976 }
6977 }
6978
6979 next_offset += envelope_size;
6980 _next_ordinal_to_read += 1;
6981 if next_offset >= end_offset {
6982 return Ok(());
6983 }
6984
6985 while _next_ordinal_to_read < 2 {
6987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6988 _next_ordinal_to_read += 1;
6989 next_offset += envelope_size;
6990 }
6991
6992 let next_out_of_line = decoder.next_out_of_line();
6993 let handles_before = decoder.remaining_handles();
6994 if let Some((inlined, num_bytes, num_handles)) =
6995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6996 {
6997 let member_inline_size = <fidl::encoding::Vector<ProtocolDescriptor, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6998 if inlined != (member_inline_size <= 4) {
6999 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7000 }
7001 let inner_offset;
7002 let mut inner_depth = depth.clone();
7003 if inlined {
7004 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7005 inner_offset = next_offset;
7006 } else {
7007 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7008 inner_depth.increment()?;
7009 }
7010 let val_ref = self.protocol_descriptor_list.get_or_insert_with(
7011 || fidl::new_empty!(fidl::encoding::Vector<ProtocolDescriptor, 255>, D),
7012 );
7013 fidl::decode!(fidl::encoding::Vector<ProtocolDescriptor, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
7014 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7015 {
7016 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7017 }
7018 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7019 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7020 }
7021 }
7022
7023 next_offset += envelope_size;
7024 _next_ordinal_to_read += 1;
7025 if next_offset >= end_offset {
7026 return Ok(());
7027 }
7028
7029 while _next_ordinal_to_read < 3 {
7031 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7032 _next_ordinal_to_read += 1;
7033 next_offset += envelope_size;
7034 }
7035
7036 let next_out_of_line = decoder.next_out_of_line();
7037 let handles_before = decoder.remaining_handles();
7038 if let Some((inlined, num_bytes, num_handles)) =
7039 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7040 {
7041 let member_inline_size = <fidl::encoding::Vector<
7042 fidl::encoding::Vector<ProtocolDescriptor, 255>,
7043 255,
7044 > as fidl::encoding::TypeMarker>::inline_size(
7045 decoder.context
7046 );
7047 if inlined != (member_inline_size <= 4) {
7048 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7049 }
7050 let inner_offset;
7051 let mut inner_depth = depth.clone();
7052 if inlined {
7053 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7054 inner_offset = next_offset;
7055 } else {
7056 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7057 inner_depth.increment()?;
7058 }
7059 let val_ref = self.additional_protocol_descriptor_lists.get_or_insert_with(|| {
7060 fidl::new_empty!(
7061 fidl::encoding::Vector<
7062 fidl::encoding::Vector<ProtocolDescriptor, 255>,
7063 255,
7064 >,
7065 D
7066 )
7067 });
7068 fidl::decode!(
7069 fidl::encoding::Vector<fidl::encoding::Vector<ProtocolDescriptor, 255>, 255>,
7070 D,
7071 val_ref,
7072 decoder,
7073 inner_offset,
7074 inner_depth
7075 )?;
7076 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7077 {
7078 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7079 }
7080 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7081 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7082 }
7083 }
7084
7085 next_offset += envelope_size;
7086 _next_ordinal_to_read += 1;
7087 if next_offset >= end_offset {
7088 return Ok(());
7089 }
7090
7091 while _next_ordinal_to_read < 4 {
7093 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7094 _next_ordinal_to_read += 1;
7095 next_offset += envelope_size;
7096 }
7097
7098 let next_out_of_line = decoder.next_out_of_line();
7099 let handles_before = decoder.remaining_handles();
7100 if let Some((inlined, num_bytes, num_handles)) =
7101 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7102 {
7103 let member_inline_size = <fidl::encoding::Vector<ProfileDescriptor, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7104 if inlined != (member_inline_size <= 4) {
7105 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7106 }
7107 let inner_offset;
7108 let mut inner_depth = depth.clone();
7109 if inlined {
7110 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7111 inner_offset = next_offset;
7112 } else {
7113 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7114 inner_depth.increment()?;
7115 }
7116 let val_ref = self.profile_descriptors.get_or_insert_with(
7117 || fidl::new_empty!(fidl::encoding::Vector<ProfileDescriptor, 255>, D),
7118 );
7119 fidl::decode!(fidl::encoding::Vector<ProfileDescriptor, 255>, D, val_ref, decoder, inner_offset, inner_depth)?;
7120 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7121 {
7122 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7123 }
7124 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7125 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7126 }
7127 }
7128
7129 next_offset += envelope_size;
7130 _next_ordinal_to_read += 1;
7131 if next_offset >= end_offset {
7132 return Ok(());
7133 }
7134
7135 while _next_ordinal_to_read < 5 {
7137 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7138 _next_ordinal_to_read += 1;
7139 next_offset += envelope_size;
7140 }
7141
7142 let next_out_of_line = decoder.next_out_of_line();
7143 let handles_before = decoder.remaining_handles();
7144 if let Some((inlined, num_bytes, num_handles)) =
7145 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7146 {
7147 let member_inline_size = <fidl::encoding::Vector<Information, 85> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7148 if inlined != (member_inline_size <= 4) {
7149 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7150 }
7151 let inner_offset;
7152 let mut inner_depth = depth.clone();
7153 if inlined {
7154 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7155 inner_offset = next_offset;
7156 } else {
7157 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7158 inner_depth.increment()?;
7159 }
7160 let val_ref = self.information.get_or_insert_with(
7161 || fidl::new_empty!(fidl::encoding::Vector<Information, 85>, D),
7162 );
7163 fidl::decode!(fidl::encoding::Vector<Information, 85>, D, val_ref, decoder, inner_offset, inner_depth)?;
7164 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7165 {
7166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7167 }
7168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7170 }
7171 }
7172
7173 next_offset += envelope_size;
7174 _next_ordinal_to_read += 1;
7175 if next_offset >= end_offset {
7176 return Ok(());
7177 }
7178
7179 while _next_ordinal_to_read < 6 {
7181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7182 _next_ordinal_to_read += 1;
7183 next_offset += envelope_size;
7184 }
7185
7186 let next_out_of_line = decoder.next_out_of_line();
7187 let handles_before = decoder.remaining_handles();
7188 if let Some((inlined, num_bytes, num_handles)) =
7189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7190 {
7191 let member_inline_size = <fidl::encoding::Vector<Attribute, 65023> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7192 if inlined != (member_inline_size <= 4) {
7193 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7194 }
7195 let inner_offset;
7196 let mut inner_depth = depth.clone();
7197 if inlined {
7198 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7199 inner_offset = next_offset;
7200 } else {
7201 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7202 inner_depth.increment()?;
7203 }
7204 let val_ref = self.additional_attributes.get_or_insert_with(
7205 || fidl::new_empty!(fidl::encoding::Vector<Attribute, 65023>, D),
7206 );
7207 fidl::decode!(fidl::encoding::Vector<Attribute, 65023>, D, val_ref, decoder, inner_offset, inner_depth)?;
7208 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7209 {
7210 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7211 }
7212 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7213 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7214 }
7215 }
7216
7217 next_offset += envelope_size;
7218
7219 while next_offset < end_offset {
7221 _next_ordinal_to_read += 1;
7222 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7223 next_offset += envelope_size;
7224 }
7225
7226 Ok(())
7227 }
7228 }
7229
7230 impl fidl::encoding::ValueTypeMarker for AudioEncoderSettings {
7231 type Borrowed<'a> = &'a Self;
7232 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7233 value
7234 }
7235 }
7236
7237 unsafe impl fidl::encoding::TypeMarker for AudioEncoderSettings {
7238 type Owned = Self;
7239
7240 #[inline(always)]
7241 fn inline_align(_context: fidl::encoding::Context) -> usize {
7242 8
7243 }
7244
7245 #[inline(always)]
7246 fn inline_size(_context: fidl::encoding::Context) -> usize {
7247 16
7248 }
7249 }
7250
7251 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioEncoderSettings, D>
7252 for &AudioEncoderSettings
7253 {
7254 #[inline]
7255 unsafe fn encode(
7256 self,
7257 encoder: &mut fidl::encoding::Encoder<'_, D>,
7258 offset: usize,
7259 _depth: fidl::encoding::Depth,
7260 ) -> fidl::Result<()> {
7261 encoder.debug_check_bounds::<AudioEncoderSettings>(offset);
7262 encoder.write_num::<u64>(self.ordinal(), offset);
7263 match self {
7264 AudioEncoderSettings::Sbc(ref val) => {
7265 fidl::encoding::encode_in_envelope::<fidl_fuchsia_media::SbcEncoderSettings, D>(
7266 <fidl_fuchsia_media::SbcEncoderSettings as fidl::encoding::ValueTypeMarker>::borrow(val),
7267 encoder, offset + 8, _depth
7268 )
7269 }
7270 AudioEncoderSettings::Aac(ref val) => {
7271 fidl::encoding::encode_in_envelope::<fidl_fuchsia_media::AacEncoderSettings, D>(
7272 <fidl_fuchsia_media::AacEncoderSettings as fidl::encoding::ValueTypeMarker>::borrow(val),
7273 encoder, offset + 8, _depth
7274 )
7275 }
7276 AudioEncoderSettings::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7277 }
7278 }
7279 }
7280
7281 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioEncoderSettings {
7282 #[inline(always)]
7283 fn new_empty() -> Self {
7284 Self::__SourceBreaking { unknown_ordinal: 0 }
7285 }
7286
7287 #[inline]
7288 unsafe fn decode(
7289 &mut self,
7290 decoder: &mut fidl::encoding::Decoder<'_, D>,
7291 offset: usize,
7292 mut depth: fidl::encoding::Depth,
7293 ) -> fidl::Result<()> {
7294 decoder.debug_check_bounds::<Self>(offset);
7295 #[allow(unused_variables)]
7296 let next_out_of_line = decoder.next_out_of_line();
7297 let handles_before = decoder.remaining_handles();
7298 let (ordinal, inlined, num_bytes, num_handles) =
7299 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7300
7301 let member_inline_size = match ordinal {
7302 1 => <fidl_fuchsia_media::SbcEncoderSettings as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7303 2 => <fidl_fuchsia_media::AacEncoderSettings as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7304 0 => return Err(fidl::Error::UnknownUnionTag),
7305 _ => num_bytes as usize,
7306 };
7307
7308 if inlined != (member_inline_size <= 4) {
7309 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7310 }
7311 let _inner_offset;
7312 if inlined {
7313 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7314 _inner_offset = offset + 8;
7315 } else {
7316 depth.increment()?;
7317 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7318 }
7319 match ordinal {
7320 1 => {
7321 #[allow(irrefutable_let_patterns)]
7322 if let AudioEncoderSettings::Sbc(_) = self {
7323 } else {
7325 *self = AudioEncoderSettings::Sbc(fidl::new_empty!(
7327 fidl_fuchsia_media::SbcEncoderSettings,
7328 D
7329 ));
7330 }
7331 #[allow(irrefutable_let_patterns)]
7332 if let AudioEncoderSettings::Sbc(ref mut val) = self {
7333 fidl::decode!(
7334 fidl_fuchsia_media::SbcEncoderSettings,
7335 D,
7336 val,
7337 decoder,
7338 _inner_offset,
7339 depth
7340 )?;
7341 } else {
7342 unreachable!()
7343 }
7344 }
7345 2 => {
7346 #[allow(irrefutable_let_patterns)]
7347 if let AudioEncoderSettings::Aac(_) = self {
7348 } else {
7350 *self = AudioEncoderSettings::Aac(fidl::new_empty!(
7352 fidl_fuchsia_media::AacEncoderSettings,
7353 D
7354 ));
7355 }
7356 #[allow(irrefutable_let_patterns)]
7357 if let AudioEncoderSettings::Aac(ref mut val) = self {
7358 fidl::decode!(
7359 fidl_fuchsia_media::AacEncoderSettings,
7360 D,
7361 val,
7362 decoder,
7363 _inner_offset,
7364 depth
7365 )?;
7366 } else {
7367 unreachable!()
7368 }
7369 }
7370 #[allow(deprecated)]
7371 ordinal => {
7372 for _ in 0..num_handles {
7373 decoder.drop_next_handle()?;
7374 }
7375 *self = AudioEncoderSettings::__SourceBreaking { unknown_ordinal: ordinal };
7376 }
7377 }
7378 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7379 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7380 }
7381 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7382 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7383 }
7384 Ok(())
7385 }
7386 }
7387
7388 impl fidl::encoding::ValueTypeMarker for AudioOffloadFeatures {
7389 type Borrowed<'a> = &'a Self;
7390 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7391 value
7392 }
7393 }
7394
7395 unsafe impl fidl::encoding::TypeMarker for AudioOffloadFeatures {
7396 type Owned = Self;
7397
7398 #[inline(always)]
7399 fn inline_align(_context: fidl::encoding::Context) -> usize {
7400 8
7401 }
7402
7403 #[inline(always)]
7404 fn inline_size(_context: fidl::encoding::Context) -> usize {
7405 16
7406 }
7407 }
7408
7409 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioOffloadFeatures, D>
7410 for &AudioOffloadFeatures
7411 {
7412 #[inline]
7413 unsafe fn encode(
7414 self,
7415 encoder: &mut fidl::encoding::Encoder<'_, D>,
7416 offset: usize,
7417 _depth: fidl::encoding::Depth,
7418 ) -> fidl::Result<()> {
7419 encoder.debug_check_bounds::<AudioOffloadFeatures>(offset);
7420 encoder.write_num::<u64>(self.ordinal(), offset);
7421 match self {
7422 AudioOffloadFeatures::Sbc(ref val) => {
7423 fidl::encoding::encode_in_envelope::<AudioSbcSupport, D>(
7424 <AudioSbcSupport as fidl::encoding::ValueTypeMarker>::borrow(val),
7425 encoder,
7426 offset + 8,
7427 _depth,
7428 )
7429 }
7430 AudioOffloadFeatures::Aac(ref val) => {
7431 fidl::encoding::encode_in_envelope::<AudioAacSupport, D>(
7432 <AudioAacSupport as fidl::encoding::ValueTypeMarker>::borrow(val),
7433 encoder,
7434 offset + 8,
7435 _depth,
7436 )
7437 }
7438 AudioOffloadFeatures::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7439 }
7440 }
7441 }
7442
7443 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioOffloadFeatures {
7444 #[inline(always)]
7445 fn new_empty() -> Self {
7446 Self::__SourceBreaking { unknown_ordinal: 0 }
7447 }
7448
7449 #[inline]
7450 unsafe fn decode(
7451 &mut self,
7452 decoder: &mut fidl::encoding::Decoder<'_, D>,
7453 offset: usize,
7454 mut depth: fidl::encoding::Depth,
7455 ) -> fidl::Result<()> {
7456 decoder.debug_check_bounds::<Self>(offset);
7457 #[allow(unused_variables)]
7458 let next_out_of_line = decoder.next_out_of_line();
7459 let handles_before = decoder.remaining_handles();
7460 let (ordinal, inlined, num_bytes, num_handles) =
7461 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7462
7463 let member_inline_size = match ordinal {
7464 1 => <AudioSbcSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7465 2 => <AudioAacSupport as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7466 0 => return Err(fidl::Error::UnknownUnionTag),
7467 _ => num_bytes as usize,
7468 };
7469
7470 if inlined != (member_inline_size <= 4) {
7471 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7472 }
7473 let _inner_offset;
7474 if inlined {
7475 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7476 _inner_offset = offset + 8;
7477 } else {
7478 depth.increment()?;
7479 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7480 }
7481 match ordinal {
7482 1 => {
7483 #[allow(irrefutable_let_patterns)]
7484 if let AudioOffloadFeatures::Sbc(_) = self {
7485 } else {
7487 *self = AudioOffloadFeatures::Sbc(fidl::new_empty!(AudioSbcSupport, D));
7489 }
7490 #[allow(irrefutable_let_patterns)]
7491 if let AudioOffloadFeatures::Sbc(ref mut val) = self {
7492 fidl::decode!(AudioSbcSupport, D, val, decoder, _inner_offset, depth)?;
7493 } else {
7494 unreachable!()
7495 }
7496 }
7497 2 => {
7498 #[allow(irrefutable_let_patterns)]
7499 if let AudioOffloadFeatures::Aac(_) = self {
7500 } else {
7502 *self = AudioOffloadFeatures::Aac(fidl::new_empty!(AudioAacSupport, D));
7504 }
7505 #[allow(irrefutable_let_patterns)]
7506 if let AudioOffloadFeatures::Aac(ref mut val) = self {
7507 fidl::decode!(AudioAacSupport, D, val, decoder, _inner_offset, depth)?;
7508 } else {
7509 unreachable!()
7510 }
7511 }
7512 #[allow(deprecated)]
7513 ordinal => {
7514 for _ in 0..num_handles {
7515 decoder.drop_next_handle()?;
7516 }
7517 *self = AudioOffloadFeatures::__SourceBreaking { unknown_ordinal: ordinal };
7518 }
7519 }
7520 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7521 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7522 }
7523 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7524 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7525 }
7526 Ok(())
7527 }
7528 }
7529
7530 impl fidl::encoding::ValueTypeMarker for ConnectParameters {
7531 type Borrowed<'a> = &'a Self;
7532 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7533 value
7534 }
7535 }
7536
7537 unsafe impl fidl::encoding::TypeMarker for ConnectParameters {
7538 type Owned = Self;
7539
7540 #[inline(always)]
7541 fn inline_align(_context: fidl::encoding::Context) -> usize {
7542 8
7543 }
7544
7545 #[inline(always)]
7546 fn inline_size(_context: fidl::encoding::Context) -> usize {
7547 16
7548 }
7549 }
7550
7551 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ConnectParameters, D>
7552 for &ConnectParameters
7553 {
7554 #[inline]
7555 unsafe fn encode(
7556 self,
7557 encoder: &mut fidl::encoding::Encoder<'_, D>,
7558 offset: usize,
7559 _depth: fidl::encoding::Depth,
7560 ) -> fidl::Result<()> {
7561 encoder.debug_check_bounds::<ConnectParameters>(offset);
7562 encoder.write_num::<u64>(self.ordinal(), offset);
7563 match self {
7564 ConnectParameters::L2cap(ref val) => {
7565 fidl::encoding::encode_in_envelope::<L2capParameters, D>(
7566 <L2capParameters as fidl::encoding::ValueTypeMarker>::borrow(val),
7567 encoder,
7568 offset + 8,
7569 _depth,
7570 )
7571 }
7572 ConnectParameters::Rfcomm(ref val) => {
7573 fidl::encoding::encode_in_envelope::<RfcommParameters, D>(
7574 <RfcommParameters as fidl::encoding::ValueTypeMarker>::borrow(val),
7575 encoder,
7576 offset + 8,
7577 _depth,
7578 )
7579 }
7580 }
7581 }
7582 }
7583
7584 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectParameters {
7585 #[inline(always)]
7586 fn new_empty() -> Self {
7587 Self::L2cap(fidl::new_empty!(L2capParameters, D))
7588 }
7589
7590 #[inline]
7591 unsafe fn decode(
7592 &mut self,
7593 decoder: &mut fidl::encoding::Decoder<'_, D>,
7594 offset: usize,
7595 mut depth: fidl::encoding::Depth,
7596 ) -> fidl::Result<()> {
7597 decoder.debug_check_bounds::<Self>(offset);
7598 #[allow(unused_variables)]
7599 let next_out_of_line = decoder.next_out_of_line();
7600 let handles_before = decoder.remaining_handles();
7601 let (ordinal, inlined, num_bytes, num_handles) =
7602 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7603
7604 let member_inline_size = match ordinal {
7605 1 => <L2capParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7606 2 => <RfcommParameters as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7607 _ => return Err(fidl::Error::UnknownUnionTag),
7608 };
7609
7610 if inlined != (member_inline_size <= 4) {
7611 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7612 }
7613 let _inner_offset;
7614 if inlined {
7615 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7616 _inner_offset = offset + 8;
7617 } else {
7618 depth.increment()?;
7619 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7620 }
7621 match ordinal {
7622 1 => {
7623 #[allow(irrefutable_let_patterns)]
7624 if let ConnectParameters::L2cap(_) = self {
7625 } else {
7627 *self = ConnectParameters::L2cap(fidl::new_empty!(L2capParameters, D));
7629 }
7630 #[allow(irrefutable_let_patterns)]
7631 if let ConnectParameters::L2cap(ref mut val) = self {
7632 fidl::decode!(L2capParameters, D, val, decoder, _inner_offset, depth)?;
7633 } else {
7634 unreachable!()
7635 }
7636 }
7637 2 => {
7638 #[allow(irrefutable_let_patterns)]
7639 if let ConnectParameters::Rfcomm(_) = self {
7640 } else {
7642 *self = ConnectParameters::Rfcomm(fidl::new_empty!(RfcommParameters, D));
7644 }
7645 #[allow(irrefutable_let_patterns)]
7646 if let ConnectParameters::Rfcomm(ref mut val) = self {
7647 fidl::decode!(RfcommParameters, D, val, decoder, _inner_offset, depth)?;
7648 } else {
7649 unreachable!()
7650 }
7651 }
7652 ordinal => panic!("unexpected ordinal {:?}", ordinal),
7653 }
7654 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7655 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7656 }
7657 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7658 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7659 }
7660 Ok(())
7661 }
7662 }
7663
7664 impl fidl::encoding::ValueTypeMarker for DataElement {
7665 type Borrowed<'a> = &'a Self;
7666 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7667 value
7668 }
7669 }
7670
7671 unsafe impl fidl::encoding::TypeMarker for DataElement {
7672 type Owned = Self;
7673
7674 #[inline(always)]
7675 fn inline_align(_context: fidl::encoding::Context) -> usize {
7676 8
7677 }
7678
7679 #[inline(always)]
7680 fn inline_size(_context: fidl::encoding::Context) -> usize {
7681 16
7682 }
7683 }
7684
7685 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataElement, D>
7686 for &DataElement
7687 {
7688 #[inline]
7689 unsafe fn encode(
7690 self,
7691 encoder: &mut fidl::encoding::Encoder<'_, D>,
7692 offset: usize,
7693 _depth: fidl::encoding::Depth,
7694 ) -> fidl::Result<()> {
7695 encoder.debug_check_bounds::<DataElement>(offset);
7696 encoder.write_num::<u64>(self.ordinal(), offset);
7697 match self {
7698 DataElement::Int8(ref val) => {
7699 fidl::encoding::encode_in_envelope::<i8, D>(
7700 <i8 as fidl::encoding::ValueTypeMarker>::borrow(val),
7701 encoder, offset + 8, _depth
7702 )
7703 }
7704 DataElement::Int16(ref val) => {
7705 fidl::encoding::encode_in_envelope::<i16, D>(
7706 <i16 as fidl::encoding::ValueTypeMarker>::borrow(val),
7707 encoder, offset + 8, _depth
7708 )
7709 }
7710 DataElement::Int32(ref val) => {
7711 fidl::encoding::encode_in_envelope::<i32, D>(
7712 <i32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7713 encoder, offset + 8, _depth
7714 )
7715 }
7716 DataElement::Int64(ref val) => {
7717 fidl::encoding::encode_in_envelope::<i64, D>(
7718 <i64 as fidl::encoding::ValueTypeMarker>::borrow(val),
7719 encoder, offset + 8, _depth
7720 )
7721 }
7722 DataElement::Uint8(ref val) => {
7723 fidl::encoding::encode_in_envelope::<u8, D>(
7724 <u8 as fidl::encoding::ValueTypeMarker>::borrow(val),
7725 encoder, offset + 8, _depth
7726 )
7727 }
7728 DataElement::Uint16(ref val) => {
7729 fidl::encoding::encode_in_envelope::<u16, D>(
7730 <u16 as fidl::encoding::ValueTypeMarker>::borrow(val),
7731 encoder, offset + 8, _depth
7732 )
7733 }
7734 DataElement::Uint32(ref val) => {
7735 fidl::encoding::encode_in_envelope::<u32, D>(
7736 <u32 as fidl::encoding::ValueTypeMarker>::borrow(val),
7737 encoder, offset + 8, _depth
7738 )
7739 }
7740 DataElement::Uint64(ref val) => {
7741 fidl::encoding::encode_in_envelope::<u64, D>(
7742 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
7743 encoder, offset + 8, _depth
7744 )
7745 }
7746 DataElement::Str(ref val) => {
7747 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<u8, 1024>, D>(
7748 <fidl::encoding::Vector<u8, 1024> as fidl::encoding::ValueTypeMarker>::borrow(val),
7749 encoder, offset + 8, _depth
7750 )
7751 }
7752 DataElement::Url(ref val) => {
7753 fidl::encoding::encode_in_envelope::<fidl::encoding::BoundedString<4096>, D>(
7754 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(val),
7755 encoder, offset + 8, _depth
7756 )
7757 }
7758 DataElement::Uuid(ref val) => {
7759 fidl::encoding::encode_in_envelope::<fidl_fuchsia_bluetooth::Uuid, D>(
7760 <fidl_fuchsia_bluetooth::Uuid as fidl::encoding::ValueTypeMarker>::borrow(val),
7761 encoder, offset + 8, _depth
7762 )
7763 }
7764 DataElement::B(ref val) => {
7765 fidl::encoding::encode_in_envelope::<bool, D>(
7766 <bool as fidl::encoding::ValueTypeMarker>::borrow(val),
7767 encoder, offset + 8, _depth
7768 )
7769 }
7770 DataElement::Sequence(ref val) => {
7771 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>, D>(
7772 <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::ValueTypeMarker>::borrow(val),
7773 encoder, offset + 8, _depth
7774 )
7775 }
7776 DataElement::Alternatives(ref val) => {
7777 fidl::encoding::encode_in_envelope::<fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>, D>(
7778 <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::ValueTypeMarker>::borrow(val),
7779 encoder, offset + 8, _depth
7780 )
7781 }
7782 DataElement::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7783 }
7784 }
7785 }
7786
7787 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataElement {
7788 #[inline(always)]
7789 fn new_empty() -> Self {
7790 Self::__SourceBreaking { unknown_ordinal: 0 }
7791 }
7792
7793 #[inline]
7794 unsafe fn decode(
7795 &mut self,
7796 decoder: &mut fidl::encoding::Decoder<'_, D>,
7797 offset: usize,
7798 mut depth: fidl::encoding::Depth,
7799 ) -> fidl::Result<()> {
7800 decoder.debug_check_bounds::<Self>(offset);
7801 #[allow(unused_variables)]
7802 let next_out_of_line = decoder.next_out_of_line();
7803 let handles_before = decoder.remaining_handles();
7804 let (ordinal, inlined, num_bytes, num_handles) =
7805 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7806
7807 let member_inline_size = match ordinal {
7808 1 => <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7809 2 => <i16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7810 3 => <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7811 4 => <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7812 5 => <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7813 6 => <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7814 7 => <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7815 8 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7816 9 => <fidl::encoding::Vector<u8, 1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7817 10 => <fidl::encoding::BoundedString<4096> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7818 11 => <fidl_fuchsia_bluetooth::Uuid as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7819 12 => <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7820 13 => <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7821 14 => <fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255> as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7822 0 => return Err(fidl::Error::UnknownUnionTag),
7823 _ => num_bytes as usize,
7824 };
7825
7826 if inlined != (member_inline_size <= 4) {
7827 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7828 }
7829 let _inner_offset;
7830 if inlined {
7831 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7832 _inner_offset = offset + 8;
7833 } else {
7834 depth.increment()?;
7835 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7836 }
7837 match ordinal {
7838 1 => {
7839 #[allow(irrefutable_let_patterns)]
7840 if let DataElement::Int8(_) = self {
7841 } else {
7843 *self = DataElement::Int8(fidl::new_empty!(i8, D));
7845 }
7846 #[allow(irrefutable_let_patterns)]
7847 if let DataElement::Int8(ref mut val) = self {
7848 fidl::decode!(i8, D, val, decoder, _inner_offset, depth)?;
7849 } else {
7850 unreachable!()
7851 }
7852 }
7853 2 => {
7854 #[allow(irrefutable_let_patterns)]
7855 if let DataElement::Int16(_) = self {
7856 } else {
7858 *self = DataElement::Int16(fidl::new_empty!(i16, D));
7860 }
7861 #[allow(irrefutable_let_patterns)]
7862 if let DataElement::Int16(ref mut val) = self {
7863 fidl::decode!(i16, D, val, decoder, _inner_offset, depth)?;
7864 } else {
7865 unreachable!()
7866 }
7867 }
7868 3 => {
7869 #[allow(irrefutable_let_patterns)]
7870 if let DataElement::Int32(_) = self {
7871 } else {
7873 *self = DataElement::Int32(fidl::new_empty!(i32, D));
7875 }
7876 #[allow(irrefutable_let_patterns)]
7877 if let DataElement::Int32(ref mut val) = self {
7878 fidl::decode!(i32, D, val, decoder, _inner_offset, depth)?;
7879 } else {
7880 unreachable!()
7881 }
7882 }
7883 4 => {
7884 #[allow(irrefutable_let_patterns)]
7885 if let DataElement::Int64(_) = self {
7886 } else {
7888 *self = DataElement::Int64(fidl::new_empty!(i64, D));
7890 }
7891 #[allow(irrefutable_let_patterns)]
7892 if let DataElement::Int64(ref mut val) = self {
7893 fidl::decode!(i64, D, val, decoder, _inner_offset, depth)?;
7894 } else {
7895 unreachable!()
7896 }
7897 }
7898 5 => {
7899 #[allow(irrefutable_let_patterns)]
7900 if let DataElement::Uint8(_) = self {
7901 } else {
7903 *self = DataElement::Uint8(fidl::new_empty!(u8, D));
7905 }
7906 #[allow(irrefutable_let_patterns)]
7907 if let DataElement::Uint8(ref mut val) = self {
7908 fidl::decode!(u8, D, val, decoder, _inner_offset, depth)?;
7909 } else {
7910 unreachable!()
7911 }
7912 }
7913 6 => {
7914 #[allow(irrefutable_let_patterns)]
7915 if let DataElement::Uint16(_) = self {
7916 } else {
7918 *self = DataElement::Uint16(fidl::new_empty!(u16, D));
7920 }
7921 #[allow(irrefutable_let_patterns)]
7922 if let DataElement::Uint16(ref mut val) = self {
7923 fidl::decode!(u16, D, val, decoder, _inner_offset, depth)?;
7924 } else {
7925 unreachable!()
7926 }
7927 }
7928 7 => {
7929 #[allow(irrefutable_let_patterns)]
7930 if let DataElement::Uint32(_) = self {
7931 } else {
7933 *self = DataElement::Uint32(fidl::new_empty!(u32, D));
7935 }
7936 #[allow(irrefutable_let_patterns)]
7937 if let DataElement::Uint32(ref mut val) = self {
7938 fidl::decode!(u32, D, val, decoder, _inner_offset, depth)?;
7939 } else {
7940 unreachable!()
7941 }
7942 }
7943 8 => {
7944 #[allow(irrefutable_let_patterns)]
7945 if let DataElement::Uint64(_) = self {
7946 } else {
7948 *self = DataElement::Uint64(fidl::new_empty!(u64, D));
7950 }
7951 #[allow(irrefutable_let_patterns)]
7952 if let DataElement::Uint64(ref mut val) = self {
7953 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
7954 } else {
7955 unreachable!()
7956 }
7957 }
7958 9 => {
7959 #[allow(irrefutable_let_patterns)]
7960 if let DataElement::Str(_) = self {
7961 } else {
7963 *self =
7965 DataElement::Str(fidl::new_empty!(fidl::encoding::Vector<u8, 1024>, D));
7966 }
7967 #[allow(irrefutable_let_patterns)]
7968 if let DataElement::Str(ref mut val) = self {
7969 fidl::decode!(fidl::encoding::Vector<u8, 1024>, D, val, decoder, _inner_offset, depth)?;
7970 } else {
7971 unreachable!()
7972 }
7973 }
7974 10 => {
7975 #[allow(irrefutable_let_patterns)]
7976 if let DataElement::Url(_) = self {
7977 } else {
7979 *self = DataElement::Url(fidl::new_empty!(
7981 fidl::encoding::BoundedString<4096>,
7982 D
7983 ));
7984 }
7985 #[allow(irrefutable_let_patterns)]
7986 if let DataElement::Url(ref mut val) = self {
7987 fidl::decode!(
7988 fidl::encoding::BoundedString<4096>,
7989 D,
7990 val,
7991 decoder,
7992 _inner_offset,
7993 depth
7994 )?;
7995 } else {
7996 unreachable!()
7997 }
7998 }
7999 11 => {
8000 #[allow(irrefutable_let_patterns)]
8001 if let DataElement::Uuid(_) = self {
8002 } else {
8004 *self =
8006 DataElement::Uuid(fidl::new_empty!(fidl_fuchsia_bluetooth::Uuid, D));
8007 }
8008 #[allow(irrefutable_let_patterns)]
8009 if let DataElement::Uuid(ref mut val) = self {
8010 fidl::decode!(
8011 fidl_fuchsia_bluetooth::Uuid,
8012 D,
8013 val,
8014 decoder,
8015 _inner_offset,
8016 depth
8017 )?;
8018 } else {
8019 unreachable!()
8020 }
8021 }
8022 12 => {
8023 #[allow(irrefutable_let_patterns)]
8024 if let DataElement::B(_) = self {
8025 } else {
8027 *self = DataElement::B(fidl::new_empty!(bool, D));
8029 }
8030 #[allow(irrefutable_let_patterns)]
8031 if let DataElement::B(ref mut val) = self {
8032 fidl::decode!(bool, D, val, decoder, _inner_offset, depth)?;
8033 } else {
8034 unreachable!()
8035 }
8036 }
8037 13 => {
8038 #[allow(irrefutable_let_patterns)]
8039 if let DataElement::Sequence(_) = self {
8040 } else {
8042 *self = DataElement::Sequence(fidl::new_empty!(
8044 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8045 D
8046 ));
8047 }
8048 #[allow(irrefutable_let_patterns)]
8049 if let DataElement::Sequence(ref mut val) = self {
8050 fidl::decode!(
8051 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8052 D,
8053 val,
8054 decoder,
8055 _inner_offset,
8056 depth
8057 )?;
8058 } else {
8059 unreachable!()
8060 }
8061 }
8062 14 => {
8063 #[allow(irrefutable_let_patterns)]
8064 if let DataElement::Alternatives(_) = self {
8065 } else {
8067 *self = DataElement::Alternatives(fidl::new_empty!(
8069 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8070 D
8071 ));
8072 }
8073 #[allow(irrefutable_let_patterns)]
8074 if let DataElement::Alternatives(ref mut val) = self {
8075 fidl::decode!(
8076 fidl::encoding::Vector<fidl::encoding::OptionalUnion<DataElement>, 255>,
8077 D,
8078 val,
8079 decoder,
8080 _inner_offset,
8081 depth
8082 )?;
8083 } else {
8084 unreachable!()
8085 }
8086 }
8087 #[allow(deprecated)]
8088 ordinal => {
8089 for _ in 0..num_handles {
8090 decoder.drop_next_handle()?;
8091 }
8092 *self = DataElement::__SourceBreaking { unknown_ordinal: ordinal };
8093 }
8094 }
8095 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8096 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8097 }
8098 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8099 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8100 }
8101 Ok(())
8102 }
8103 }
8104
8105 impl fidl::encoding::ValueTypeMarker for ScoConnectionOnConnectionCompleteRequest {
8106 type Borrowed<'a> = &'a Self;
8107 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8108 value
8109 }
8110 }
8111
8112 unsafe impl fidl::encoding::TypeMarker for ScoConnectionOnConnectionCompleteRequest {
8113 type Owned = Self;
8114
8115 #[inline(always)]
8116 fn inline_align(_context: fidl::encoding::Context) -> usize {
8117 8
8118 }
8119
8120 #[inline(always)]
8121 fn inline_size(_context: fidl::encoding::Context) -> usize {
8122 16
8123 }
8124 }
8125
8126 unsafe impl<D: fidl::encoding::ResourceDialect>
8127 fidl::encoding::Encode<ScoConnectionOnConnectionCompleteRequest, D>
8128 for &ScoConnectionOnConnectionCompleteRequest
8129 {
8130 #[inline]
8131 unsafe fn encode(
8132 self,
8133 encoder: &mut fidl::encoding::Encoder<'_, D>,
8134 offset: usize,
8135 _depth: fidl::encoding::Depth,
8136 ) -> fidl::Result<()> {
8137 encoder.debug_check_bounds::<ScoConnectionOnConnectionCompleteRequest>(offset);
8138 encoder.write_num::<u64>(self.ordinal(), offset);
8139 match self {
8140 ScoConnectionOnConnectionCompleteRequest::ConnectedParams(ref val) => {
8141 fidl::encoding::encode_in_envelope::<ScoConnectionParameters, D>(
8142 <ScoConnectionParameters as fidl::encoding::ValueTypeMarker>::borrow(val),
8143 encoder,
8144 offset + 8,
8145 _depth,
8146 )
8147 }
8148 ScoConnectionOnConnectionCompleteRequest::Error(ref val) => {
8149 fidl::encoding::encode_in_envelope::<ScoErrorCode, D>(
8150 <ScoErrorCode as fidl::encoding::ValueTypeMarker>::borrow(val),
8151 encoder,
8152 offset + 8,
8153 _depth,
8154 )
8155 }
8156 ScoConnectionOnConnectionCompleteRequest::__SourceBreaking { .. } => {
8157 Err(fidl::Error::UnknownUnionTag)
8158 }
8159 }
8160 }
8161 }
8162
8163 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
8164 for ScoConnectionOnConnectionCompleteRequest
8165 {
8166 #[inline(always)]
8167 fn new_empty() -> Self {
8168 Self::__SourceBreaking { unknown_ordinal: 0 }
8169 }
8170
8171 #[inline]
8172 unsafe fn decode(
8173 &mut self,
8174 decoder: &mut fidl::encoding::Decoder<'_, D>,
8175 offset: usize,
8176 mut depth: fidl::encoding::Depth,
8177 ) -> fidl::Result<()> {
8178 decoder.debug_check_bounds::<Self>(offset);
8179 #[allow(unused_variables)]
8180 let next_out_of_line = decoder.next_out_of_line();
8181 let handles_before = decoder.remaining_handles();
8182 let (ordinal, inlined, num_bytes, num_handles) =
8183 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8184
8185 let member_inline_size = match ordinal {
8186 1 => <ScoConnectionParameters as fidl::encoding::TypeMarker>::inline_size(
8187 decoder.context,
8188 ),
8189 2 => <ScoErrorCode as fidl::encoding::TypeMarker>::inline_size(decoder.context),
8190 0 => return Err(fidl::Error::UnknownUnionTag),
8191 _ => num_bytes as usize,
8192 };
8193
8194 if inlined != (member_inline_size <= 4) {
8195 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8196 }
8197 let _inner_offset;
8198 if inlined {
8199 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8200 _inner_offset = offset + 8;
8201 } else {
8202 depth.increment()?;
8203 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8204 }
8205 match ordinal {
8206 1 => {
8207 #[allow(irrefutable_let_patterns)]
8208 if let ScoConnectionOnConnectionCompleteRequest::ConnectedParams(_) = self {
8209 } else {
8211 *self = ScoConnectionOnConnectionCompleteRequest::ConnectedParams(
8213 fidl::new_empty!(ScoConnectionParameters, D),
8214 );
8215 }
8216 #[allow(irrefutable_let_patterns)]
8217 if let ScoConnectionOnConnectionCompleteRequest::ConnectedParams(ref mut val) =
8218 self
8219 {
8220 fidl::decode!(
8221 ScoConnectionParameters,
8222 D,
8223 val,
8224 decoder,
8225 _inner_offset,
8226 depth
8227 )?;
8228 } else {
8229 unreachable!()
8230 }
8231 }
8232 2 => {
8233 #[allow(irrefutable_let_patterns)]
8234 if let ScoConnectionOnConnectionCompleteRequest::Error(_) = self {
8235 } else {
8237 *self = ScoConnectionOnConnectionCompleteRequest::Error(fidl::new_empty!(
8239 ScoErrorCode,
8240 D
8241 ));
8242 }
8243 #[allow(irrefutable_let_patterns)]
8244 if let ScoConnectionOnConnectionCompleteRequest::Error(ref mut val) = self {
8245 fidl::decode!(ScoErrorCode, D, val, decoder, _inner_offset, depth)?;
8246 } else {
8247 unreachable!()
8248 }
8249 }
8250 #[allow(deprecated)]
8251 ordinal => {
8252 for _ in 0..num_handles {
8253 decoder.drop_next_handle()?;
8254 }
8255 *self = ScoConnectionOnConnectionCompleteRequest::__SourceBreaking {
8256 unknown_ordinal: ordinal,
8257 };
8258 }
8259 }
8260 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8261 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8262 }
8263 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8264 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8265 }
8266 Ok(())
8267 }
8268 }
8269}