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 VendorCrashEventPrefix = Vec<u8>;
12
13pub const ACL_PACKET_MAX: u64 = 65539;
14
15pub const BT_VENDOR_MAX_COMMAND_BUFFER_LEN: u16 = 16;
18
19pub const COMMAND_MAX: u64 = 258;
20
21pub const EVENT_MAX: u64 = 257;
22
23pub const ISO_PACKET_MAX: u64 = 16387;
24
25pub const MAX_LEGACY_ADVERTISING_DATA_LENGTH: u8 = 31;
28
29pub const MAX_LOCAL_NAME_LENGTH: u8 = 248;
32
33pub const MAX_NAME_LENGTH: u32 = 32;
34
35pub const MAX_PEER_SERVICES: u8 = 32;
37
38pub const SCO_PACKET_MAX: u64 = 258;
39
40#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
41pub enum ConnectionState {
42 Connected,
43 Disconnected,
44 #[doc(hidden)]
45 __SourceBreaking {
46 unknown_ordinal: u32,
47 },
48}
49
50#[macro_export]
52macro_rules! ConnectionStateUnknown {
53 () => {
54 _
55 };
56}
57
58impl ConnectionState {
59 #[inline]
60 pub fn from_primitive(prim: u32) -> Option<Self> {
61 match prim {
62 1 => Some(Self::Connected),
63 2 => Some(Self::Disconnected),
64 _ => None,
65 }
66 }
67
68 #[inline]
69 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
70 match prim {
71 1 => Self::Connected,
72 2 => Self::Disconnected,
73 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
74 }
75 }
76
77 #[inline]
78 pub fn unknown() -> Self {
79 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
80 }
81
82 #[inline]
83 pub const fn into_primitive(self) -> u32 {
84 match self {
85 Self::Connected => 1,
86 Self::Disconnected => 2,
87 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
88 }
89 }
90
91 #[inline]
92 pub fn is_unknown(&self) -> bool {
93 match self {
94 Self::__SourceBreaking { unknown_ordinal: _ } => true,
95 _ => false,
96 }
97 }
98}
99
100#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
102pub enum EmulatorError {
103 Failed,
104 HciAlreadyPublished,
105 #[doc(hidden)]
106 __SourceBreaking {
107 unknown_ordinal: u32,
108 },
109}
110
111#[macro_export]
113macro_rules! EmulatorErrorUnknown {
114 () => {
115 _
116 };
117}
118
119impl EmulatorError {
120 #[inline]
121 pub fn from_primitive(prim: u32) -> Option<Self> {
122 match prim {
123 1 => Some(Self::Failed),
124 2 => Some(Self::HciAlreadyPublished),
125 _ => None,
126 }
127 }
128
129 #[inline]
130 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
131 match prim {
132 1 => Self::Failed,
133 2 => Self::HciAlreadyPublished,
134 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
135 }
136 }
137
138 #[inline]
139 pub fn unknown() -> Self {
140 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
141 }
142
143 #[inline]
144 pub const fn into_primitive(self) -> u32 {
145 match self {
146 Self::Failed => 1,
147 Self::HciAlreadyPublished => 2,
148 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
149 }
150 }
151
152 #[inline]
153 pub fn is_unknown(&self) -> bool {
154 match self {
155 Self::__SourceBreaking { unknown_ordinal: _ } => true,
156 _ => false,
157 }
158 }
159}
160
161#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
163pub enum EmulatorPeerError {
164 AddressRepeated,
165 ParametersInvalid,
166 NotFound,
167 #[doc(hidden)]
168 __SourceBreaking {
169 unknown_ordinal: u32,
170 },
171}
172
173#[macro_export]
175macro_rules! EmulatorPeerErrorUnknown {
176 () => {
177 _
178 };
179}
180
181impl EmulatorPeerError {
182 #[inline]
183 pub fn from_primitive(prim: u32) -> Option<Self> {
184 match prim {
185 1 => Some(Self::AddressRepeated),
186 2 => Some(Self::ParametersInvalid),
187 3 => Some(Self::NotFound),
188 _ => None,
189 }
190 }
191
192 #[inline]
193 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
194 match prim {
195 1 => Self::AddressRepeated,
196 2 => Self::ParametersInvalid,
197 3 => Self::NotFound,
198 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
199 }
200 }
201
202 #[inline]
203 pub fn unknown() -> Self {
204 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
205 }
206
207 #[inline]
208 pub const fn into_primitive(self) -> u32 {
209 match self {
210 Self::AddressRepeated => 1,
211 Self::ParametersInvalid => 2,
212 Self::NotFound => 3,
213 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
214 }
215 }
216
217 #[inline]
218 pub fn is_unknown(&self) -> bool {
219 match self {
220 Self::__SourceBreaking { unknown_ordinal: _ } => true,
221 _ => false,
222 }
223 }
224}
225
226#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
228pub enum HciConfig {
229 DualMode,
231 LeOnly,
233 #[doc(hidden)]
234 __SourceBreaking { unknown_ordinal: u32 },
235}
236
237#[macro_export]
239macro_rules! HciConfigUnknown {
240 () => {
241 _
242 };
243}
244
245impl HciConfig {
246 #[inline]
247 pub fn from_primitive(prim: u32) -> Option<Self> {
248 match prim {
249 1 => Some(Self::DualMode),
250 2 => Some(Self::LeOnly),
251 _ => None,
252 }
253 }
254
255 #[inline]
256 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
257 match prim {
258 1 => Self::DualMode,
259 2 => Self::LeOnly,
260 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
261 }
262 }
263
264 #[inline]
265 pub fn unknown() -> Self {
266 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
267 }
268
269 #[inline]
270 pub const fn into_primitive(self) -> u32 {
271 match self {
272 Self::DualMode => 1,
273 Self::LeOnly => 2,
274 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
275 }
276 }
277
278 #[inline]
279 pub fn is_unknown(&self) -> bool {
280 match self {
281 Self::__SourceBreaking { unknown_ordinal: _ } => true,
282 _ => false,
283 }
284 }
285}
286
287#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
290pub enum HciError {
291 Success,
292 UnknownCommand,
293 UnknownConnectionId,
294 HardwareFailure,
295 PageTimeout,
296 AuthenticationFailure,
297 PinOrKeyMissing,
298 MemoryCapacityExceeded,
299 ConnectionTimeout,
300 ConnectionLimitExceeded,
301 SynchronousConnectionLimitExceeded,
302 ConnectionAlreadyExists,
303 CommandDisallowed,
304 ConnectionRejectedLimitedResources,
305 ConnectionRejectedSecurity,
306 ConnectionRejectedBadBdAddr,
307 ConnectionAcceptTimeoutExceeded,
308 UnsupportedFeatureOrParameter,
309 InvalidHcicommandParameters,
310 RemoteUserTerminatedConnection,
311 RemoteDeviceTerminatedConnectionLowResources,
312 RemoteDeviceTerminatedConnectionPowerOff,
313 ConnectionTerminatedByLocalHost,
314 RepeatedAttempts,
315 PairingNotAllowed,
316 UnknownLmpPdu,
317 UnsupportedRemoteFeature,
318 ScoOffsetRejected,
319 ScoIntervalRejected,
320 ScoAirModeRejected,
321 InvalidLmpOrLlParameters,
322 UnspecifiedError,
323 UnsupportedLmpOrLlParameterValue,
324 RoleChangeNotAllowed,
325 LmpOrLlResponseTimeout,
326 LmpErrorTransactionCollision,
327 LmpPduNotAllowed,
328 EncryptionModeNotAcceptable,
329 LinkKeyCannotBeChanged,
330 RequestedQosNotSupported,
331 InstantPassed,
332 PairingWithUnitKeyNotSupported,
333 DifferentTransactionCollision,
334 Reserved0,
335 QosUnacceptableParameter,
336 QosRejected,
337 ChannelClassificationNotSupported,
338 InsufficientSecurity,
339 ParameterOutOfMandatoryRange,
340 Reserved1,
341 RoleSwitchPending,
342 Reserved2,
343 ReservedSlotViolation,
344 RoleSwitchFailed,
345 ExtendedInquiryResponseTooLarge,
346 SecureSimplePairingNotSupportedByHost,
347 HostBusyPairing,
348 ConnectionRejectedNoSuitableChannelFound,
349 ControllerBusy,
350 UnacceptableConnectionParameters,
351 DirectedAdvertisingTimeout,
352 ConnectionTerminatedMicFailure,
353 ConnectionFailedToBeEstablished,
354 MacConnectionFailed,
355 CoarseClockAdjustmentRejected,
356 Type0SubmapNotDefined,
357 UnknownAdvertisingIdentifier,
358 LimitReached,
359 OperationCancelledByHost,
360 PacketTooLong,
361 TooLate,
362 TooEarly,
363 #[doc(hidden)]
364 __SourceBreaking {
365 unknown_ordinal: u8,
366 },
367}
368
369#[macro_export]
371macro_rules! HciErrorUnknown {
372 () => {
373 _
374 };
375}
376
377impl HciError {
378 #[inline]
379 pub fn from_primitive(prim: u8) -> Option<Self> {
380 match prim {
381 0 => Some(Self::Success),
382 1 => Some(Self::UnknownCommand),
383 2 => Some(Self::UnknownConnectionId),
384 3 => Some(Self::HardwareFailure),
385 4 => Some(Self::PageTimeout),
386 5 => Some(Self::AuthenticationFailure),
387 6 => Some(Self::PinOrKeyMissing),
388 7 => Some(Self::MemoryCapacityExceeded),
389 8 => Some(Self::ConnectionTimeout),
390 9 => Some(Self::ConnectionLimitExceeded),
391 10 => Some(Self::SynchronousConnectionLimitExceeded),
392 11 => Some(Self::ConnectionAlreadyExists),
393 12 => Some(Self::CommandDisallowed),
394 13 => Some(Self::ConnectionRejectedLimitedResources),
395 14 => Some(Self::ConnectionRejectedSecurity),
396 15 => Some(Self::ConnectionRejectedBadBdAddr),
397 16 => Some(Self::ConnectionAcceptTimeoutExceeded),
398 17 => Some(Self::UnsupportedFeatureOrParameter),
399 18 => Some(Self::InvalidHcicommandParameters),
400 19 => Some(Self::RemoteUserTerminatedConnection),
401 20 => Some(Self::RemoteDeviceTerminatedConnectionLowResources),
402 21 => Some(Self::RemoteDeviceTerminatedConnectionPowerOff),
403 22 => Some(Self::ConnectionTerminatedByLocalHost),
404 23 => Some(Self::RepeatedAttempts),
405 24 => Some(Self::PairingNotAllowed),
406 25 => Some(Self::UnknownLmpPdu),
407 26 => Some(Self::UnsupportedRemoteFeature),
408 27 => Some(Self::ScoOffsetRejected),
409 28 => Some(Self::ScoIntervalRejected),
410 29 => Some(Self::ScoAirModeRejected),
411 30 => Some(Self::InvalidLmpOrLlParameters),
412 31 => Some(Self::UnspecifiedError),
413 32 => Some(Self::UnsupportedLmpOrLlParameterValue),
414 33 => Some(Self::RoleChangeNotAllowed),
415 34 => Some(Self::LmpOrLlResponseTimeout),
416 35 => Some(Self::LmpErrorTransactionCollision),
417 36 => Some(Self::LmpPduNotAllowed),
418 37 => Some(Self::EncryptionModeNotAcceptable),
419 38 => Some(Self::LinkKeyCannotBeChanged),
420 39 => Some(Self::RequestedQosNotSupported),
421 40 => Some(Self::InstantPassed),
422 41 => Some(Self::PairingWithUnitKeyNotSupported),
423 42 => Some(Self::DifferentTransactionCollision),
424 43 => Some(Self::Reserved0),
425 44 => Some(Self::QosUnacceptableParameter),
426 45 => Some(Self::QosRejected),
427 46 => Some(Self::ChannelClassificationNotSupported),
428 47 => Some(Self::InsufficientSecurity),
429 48 => Some(Self::ParameterOutOfMandatoryRange),
430 49 => Some(Self::Reserved1),
431 50 => Some(Self::RoleSwitchPending),
432 51 => Some(Self::Reserved2),
433 52 => Some(Self::ReservedSlotViolation),
434 53 => Some(Self::RoleSwitchFailed),
435 54 => Some(Self::ExtendedInquiryResponseTooLarge),
436 55 => Some(Self::SecureSimplePairingNotSupportedByHost),
437 56 => Some(Self::HostBusyPairing),
438 57 => Some(Self::ConnectionRejectedNoSuitableChannelFound),
439 58 => Some(Self::ControllerBusy),
440 59 => Some(Self::UnacceptableConnectionParameters),
441 60 => Some(Self::DirectedAdvertisingTimeout),
442 61 => Some(Self::ConnectionTerminatedMicFailure),
443 62 => Some(Self::ConnectionFailedToBeEstablished),
444 63 => Some(Self::MacConnectionFailed),
445 64 => Some(Self::CoarseClockAdjustmentRejected),
446 65 => Some(Self::Type0SubmapNotDefined),
447 66 => Some(Self::UnknownAdvertisingIdentifier),
448 67 => Some(Self::LimitReached),
449 68 => Some(Self::OperationCancelledByHost),
450 69 => Some(Self::PacketTooLong),
451 70 => Some(Self::TooLate),
452 71 => Some(Self::TooEarly),
453 _ => None,
454 }
455 }
456
457 #[inline]
458 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
459 match prim {
460 0 => Self::Success,
461 1 => Self::UnknownCommand,
462 2 => Self::UnknownConnectionId,
463 3 => Self::HardwareFailure,
464 4 => Self::PageTimeout,
465 5 => Self::AuthenticationFailure,
466 6 => Self::PinOrKeyMissing,
467 7 => Self::MemoryCapacityExceeded,
468 8 => Self::ConnectionTimeout,
469 9 => Self::ConnectionLimitExceeded,
470 10 => Self::SynchronousConnectionLimitExceeded,
471 11 => Self::ConnectionAlreadyExists,
472 12 => Self::CommandDisallowed,
473 13 => Self::ConnectionRejectedLimitedResources,
474 14 => Self::ConnectionRejectedSecurity,
475 15 => Self::ConnectionRejectedBadBdAddr,
476 16 => Self::ConnectionAcceptTimeoutExceeded,
477 17 => Self::UnsupportedFeatureOrParameter,
478 18 => Self::InvalidHcicommandParameters,
479 19 => Self::RemoteUserTerminatedConnection,
480 20 => Self::RemoteDeviceTerminatedConnectionLowResources,
481 21 => Self::RemoteDeviceTerminatedConnectionPowerOff,
482 22 => Self::ConnectionTerminatedByLocalHost,
483 23 => Self::RepeatedAttempts,
484 24 => Self::PairingNotAllowed,
485 25 => Self::UnknownLmpPdu,
486 26 => Self::UnsupportedRemoteFeature,
487 27 => Self::ScoOffsetRejected,
488 28 => Self::ScoIntervalRejected,
489 29 => Self::ScoAirModeRejected,
490 30 => Self::InvalidLmpOrLlParameters,
491 31 => Self::UnspecifiedError,
492 32 => Self::UnsupportedLmpOrLlParameterValue,
493 33 => Self::RoleChangeNotAllowed,
494 34 => Self::LmpOrLlResponseTimeout,
495 35 => Self::LmpErrorTransactionCollision,
496 36 => Self::LmpPduNotAllowed,
497 37 => Self::EncryptionModeNotAcceptable,
498 38 => Self::LinkKeyCannotBeChanged,
499 39 => Self::RequestedQosNotSupported,
500 40 => Self::InstantPassed,
501 41 => Self::PairingWithUnitKeyNotSupported,
502 42 => Self::DifferentTransactionCollision,
503 43 => Self::Reserved0,
504 44 => Self::QosUnacceptableParameter,
505 45 => Self::QosRejected,
506 46 => Self::ChannelClassificationNotSupported,
507 47 => Self::InsufficientSecurity,
508 48 => Self::ParameterOutOfMandatoryRange,
509 49 => Self::Reserved1,
510 50 => Self::RoleSwitchPending,
511 51 => Self::Reserved2,
512 52 => Self::ReservedSlotViolation,
513 53 => Self::RoleSwitchFailed,
514 54 => Self::ExtendedInquiryResponseTooLarge,
515 55 => Self::SecureSimplePairingNotSupportedByHost,
516 56 => Self::HostBusyPairing,
517 57 => Self::ConnectionRejectedNoSuitableChannelFound,
518 58 => Self::ControllerBusy,
519 59 => Self::UnacceptableConnectionParameters,
520 60 => Self::DirectedAdvertisingTimeout,
521 61 => Self::ConnectionTerminatedMicFailure,
522 62 => Self::ConnectionFailedToBeEstablished,
523 63 => Self::MacConnectionFailed,
524 64 => Self::CoarseClockAdjustmentRejected,
525 65 => Self::Type0SubmapNotDefined,
526 66 => Self::UnknownAdvertisingIdentifier,
527 67 => Self::LimitReached,
528 68 => Self::OperationCancelledByHost,
529 69 => Self::PacketTooLong,
530 70 => Self::TooLate,
531 71 => Self::TooEarly,
532 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
533 }
534 }
535
536 #[inline]
537 pub fn unknown() -> Self {
538 Self::__SourceBreaking { unknown_ordinal: 0xff }
539 }
540
541 #[inline]
542 pub const fn into_primitive(self) -> u8 {
543 match self {
544 Self::Success => 0,
545 Self::UnknownCommand => 1,
546 Self::UnknownConnectionId => 2,
547 Self::HardwareFailure => 3,
548 Self::PageTimeout => 4,
549 Self::AuthenticationFailure => 5,
550 Self::PinOrKeyMissing => 6,
551 Self::MemoryCapacityExceeded => 7,
552 Self::ConnectionTimeout => 8,
553 Self::ConnectionLimitExceeded => 9,
554 Self::SynchronousConnectionLimitExceeded => 10,
555 Self::ConnectionAlreadyExists => 11,
556 Self::CommandDisallowed => 12,
557 Self::ConnectionRejectedLimitedResources => 13,
558 Self::ConnectionRejectedSecurity => 14,
559 Self::ConnectionRejectedBadBdAddr => 15,
560 Self::ConnectionAcceptTimeoutExceeded => 16,
561 Self::UnsupportedFeatureOrParameter => 17,
562 Self::InvalidHcicommandParameters => 18,
563 Self::RemoteUserTerminatedConnection => 19,
564 Self::RemoteDeviceTerminatedConnectionLowResources => 20,
565 Self::RemoteDeviceTerminatedConnectionPowerOff => 21,
566 Self::ConnectionTerminatedByLocalHost => 22,
567 Self::RepeatedAttempts => 23,
568 Self::PairingNotAllowed => 24,
569 Self::UnknownLmpPdu => 25,
570 Self::UnsupportedRemoteFeature => 26,
571 Self::ScoOffsetRejected => 27,
572 Self::ScoIntervalRejected => 28,
573 Self::ScoAirModeRejected => 29,
574 Self::InvalidLmpOrLlParameters => 30,
575 Self::UnspecifiedError => 31,
576 Self::UnsupportedLmpOrLlParameterValue => 32,
577 Self::RoleChangeNotAllowed => 33,
578 Self::LmpOrLlResponseTimeout => 34,
579 Self::LmpErrorTransactionCollision => 35,
580 Self::LmpPduNotAllowed => 36,
581 Self::EncryptionModeNotAcceptable => 37,
582 Self::LinkKeyCannotBeChanged => 38,
583 Self::RequestedQosNotSupported => 39,
584 Self::InstantPassed => 40,
585 Self::PairingWithUnitKeyNotSupported => 41,
586 Self::DifferentTransactionCollision => 42,
587 Self::Reserved0 => 43,
588 Self::QosUnacceptableParameter => 44,
589 Self::QosRejected => 45,
590 Self::ChannelClassificationNotSupported => 46,
591 Self::InsufficientSecurity => 47,
592 Self::ParameterOutOfMandatoryRange => 48,
593 Self::Reserved1 => 49,
594 Self::RoleSwitchPending => 50,
595 Self::Reserved2 => 51,
596 Self::ReservedSlotViolation => 52,
597 Self::RoleSwitchFailed => 53,
598 Self::ExtendedInquiryResponseTooLarge => 54,
599 Self::SecureSimplePairingNotSupportedByHost => 55,
600 Self::HostBusyPairing => 56,
601 Self::ConnectionRejectedNoSuitableChannelFound => 57,
602 Self::ControllerBusy => 58,
603 Self::UnacceptableConnectionParameters => 59,
604 Self::DirectedAdvertisingTimeout => 60,
605 Self::ConnectionTerminatedMicFailure => 61,
606 Self::ConnectionFailedToBeEstablished => 62,
607 Self::MacConnectionFailed => 63,
608 Self::CoarseClockAdjustmentRejected => 64,
609 Self::Type0SubmapNotDefined => 65,
610 Self::UnknownAdvertisingIdentifier => 66,
611 Self::LimitReached => 67,
612 Self::OperationCancelledByHost => 68,
613 Self::PacketTooLong => 69,
614 Self::TooLate => 70,
615 Self::TooEarly => 71,
616 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
617 }
618 }
619
620 #[inline]
621 pub fn is_unknown(&self) -> bool {
622 match self {
623 Self::__SourceBreaking { unknown_ordinal: _ } => true,
624 _ => false,
625 }
626 }
627}
628
629#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
631#[repr(u8)]
632pub enum LegacyAdvertisingType {
633 AdvInd = 0,
635 AdvDirectInd = 1,
637 AdvScanInd = 2,
639 AdvNonconnInd = 3,
641 ScanRsp = 4,
643}
644
645impl LegacyAdvertisingType {
646 #[inline]
647 pub fn from_primitive(prim: u8) -> Option<Self> {
648 match prim {
649 0 => Some(Self::AdvInd),
650 1 => Some(Self::AdvDirectInd),
651 2 => Some(Self::AdvScanInd),
652 3 => Some(Self::AdvNonconnInd),
653 4 => Some(Self::ScanRsp),
654 _ => None,
655 }
656 }
657
658 #[inline]
659 pub const fn into_primitive(self) -> u8 {
660 self as u8
661 }
662}
663
664#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
665#[repr(u32)]
666pub enum PacketDirection {
667 HostToController = 1,
668 ControllerToHost = 2,
669}
670
671impl PacketDirection {
672 #[inline]
673 pub fn from_primitive(prim: u32) -> Option<Self> {
674 match prim {
675 1 => Some(Self::HostToController),
676 2 => Some(Self::ControllerToHost),
677 _ => None,
678 }
679 }
680
681 #[inline]
682 pub const fn into_primitive(self) -> u32 {
683 self as u32
684 }
685}
686
687#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
688pub enum ScoCodingFormat {
689 Cvsd,
690 Msbc,
691 #[doc(hidden)]
692 __SourceBreaking {
693 unknown_ordinal: u8,
694 },
695}
696
697#[macro_export]
699macro_rules! ScoCodingFormatUnknown {
700 () => {
701 _
702 };
703}
704
705impl ScoCodingFormat {
706 #[inline]
707 pub fn from_primitive(prim: u8) -> Option<Self> {
708 match prim {
709 1 => Some(Self::Cvsd),
710 2 => Some(Self::Msbc),
711 _ => None,
712 }
713 }
714
715 #[inline]
716 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
717 match prim {
718 1 => Self::Cvsd,
719 2 => Self::Msbc,
720 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
721 }
722 }
723
724 #[inline]
725 pub fn unknown() -> Self {
726 Self::__SourceBreaking { unknown_ordinal: 0xff }
727 }
728
729 #[inline]
730 pub const fn into_primitive(self) -> u8 {
731 match self {
732 Self::Cvsd => 1,
733 Self::Msbc => 2,
734 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
735 }
736 }
737
738 #[inline]
739 pub fn is_unknown(&self) -> bool {
740 match self {
741 Self::__SourceBreaking { unknown_ordinal: _ } => true,
742 _ => false,
743 }
744 }
745}
746
747#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
748pub enum ScoEncoding {
749 Bits8,
750 Bits16,
751 #[doc(hidden)]
752 __SourceBreaking {
753 unknown_ordinal: u8,
754 },
755}
756
757#[macro_export]
759macro_rules! ScoEncodingUnknown {
760 () => {
761 _
762 };
763}
764
765impl ScoEncoding {
766 #[inline]
767 pub fn from_primitive(prim: u8) -> Option<Self> {
768 match prim {
769 1 => Some(Self::Bits8),
770 2 => Some(Self::Bits16),
771 _ => None,
772 }
773 }
774
775 #[inline]
776 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
777 match prim {
778 1 => Self::Bits8,
779 2 => Self::Bits16,
780 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
781 }
782 }
783
784 #[inline]
785 pub fn unknown() -> Self {
786 Self::__SourceBreaking { unknown_ordinal: 0xff }
787 }
788
789 #[inline]
790 pub const fn into_primitive(self) -> u8 {
791 match self {
792 Self::Bits8 => 1,
793 Self::Bits16 => 2,
794 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
795 }
796 }
797
798 #[inline]
799 pub fn is_unknown(&self) -> bool {
800 match self {
801 Self::__SourceBreaking { unknown_ordinal: _ } => true,
802 _ => false,
803 }
804 }
805}
806
807#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
808pub enum ScoSampleRate {
809 Khz8,
810 Khz16,
811 #[doc(hidden)]
812 __SourceBreaking {
813 unknown_ordinal: u8,
814 },
815}
816
817#[macro_export]
819macro_rules! ScoSampleRateUnknown {
820 () => {
821 _
822 };
823}
824
825impl ScoSampleRate {
826 #[inline]
827 pub fn from_primitive(prim: u8) -> Option<Self> {
828 match prim {
829 1 => Some(Self::Khz8),
830 2 => Some(Self::Khz16),
831 _ => None,
832 }
833 }
834
835 #[inline]
836 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
837 match prim {
838 1 => Self::Khz8,
839 2 => Self::Khz16,
840 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
841 }
842 }
843
844 #[inline]
845 pub fn unknown() -> Self {
846 Self::__SourceBreaking { unknown_ordinal: 0xff }
847 }
848
849 #[inline]
850 pub const fn into_primitive(self) -> u8 {
851 match self {
852 Self::Khz8 => 1,
853 Self::Khz16 => 2,
854 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
855 }
856 }
857
858 #[inline]
859 pub fn is_unknown(&self) -> bool {
860 match self {
861 Self::__SourceBreaking { unknown_ordinal: _ } => true,
862 _ => false,
863 }
864 }
865}
866
867#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
868pub enum VendorAclDirection {
869 Source,
870 Sink,
871 #[doc(hidden)]
872 __SourceBreaking {
873 unknown_ordinal: u8,
874 },
875}
876
877#[macro_export]
879macro_rules! VendorAclDirectionUnknown {
880 () => {
881 _
882 };
883}
884
885impl VendorAclDirection {
886 #[inline]
887 pub fn from_primitive(prim: u8) -> Option<Self> {
888 match prim {
889 1 => Some(Self::Source),
890 2 => Some(Self::Sink),
891 _ => None,
892 }
893 }
894
895 #[inline]
896 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
897 match prim {
898 1 => Self::Source,
899 2 => Self::Sink,
900 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
901 }
902 }
903
904 #[inline]
905 pub fn unknown() -> Self {
906 Self::__SourceBreaking { unknown_ordinal: 0xff }
907 }
908
909 #[inline]
910 pub const fn into_primitive(self) -> u8 {
911 match self {
912 Self::Source => 1,
913 Self::Sink => 2,
914 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
915 }
916 }
917
918 #[inline]
919 pub fn is_unknown(&self) -> bool {
920 match self {
921 Self::__SourceBreaking { unknown_ordinal: _ } => true,
922 _ => false,
923 }
924 }
925}
926
927#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
928pub enum VendorAclPriority {
929 Normal,
930 High,
931 #[doc(hidden)]
932 __SourceBreaking {
933 unknown_ordinal: u8,
934 },
935}
936
937#[macro_export]
939macro_rules! VendorAclPriorityUnknown {
940 () => {
941 _
942 };
943}
944
945impl VendorAclPriority {
946 #[inline]
947 pub fn from_primitive(prim: u8) -> Option<Self> {
948 match prim {
949 1 => Some(Self::Normal),
950 2 => Some(Self::High),
951 _ => None,
952 }
953 }
954
955 #[inline]
956 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
957 match prim {
958 1 => Self::Normal,
959 2 => Self::High,
960 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
961 }
962 }
963
964 #[inline]
965 pub fn unknown() -> Self {
966 Self::__SourceBreaking { unknown_ordinal: 0xff }
967 }
968
969 #[inline]
970 pub const fn into_primitive(self) -> u8 {
971 match self {
972 Self::Normal => 1,
973 Self::High => 2,
974 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
975 }
976 }
977
978 #[inline]
979 pub fn is_unknown(&self) -> bool {
980 match self {
981 Self::__SourceBreaking { unknown_ordinal: _ } => true,
982 _ => false,
983 }
984 }
985}
986
987#[derive(Clone, Debug, PartialEq)]
988pub struct EmulatorWatchLeScanStatesResponse {
989 pub states: Vec<LeScanState>,
990}
991
992impl fidl::Persistable for EmulatorWatchLeScanStatesResponse {}
993
994#[derive(Clone, Debug, PartialEq)]
995pub struct EmulatorWatchLegacyAdvertisingStatesResponse {
996 pub states: Vec<LegacyAdvertisingState>,
997}
998
999impl fidl::Persistable for EmulatorWatchLegacyAdvertisingStatesResponse {}
1000
1001#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1002pub struct HciConfigureScoRequest {
1003 pub coding_format: ScoCodingFormat,
1004 pub encoding: ScoEncoding,
1005 pub sample_rate: ScoSampleRate,
1006}
1007
1008impl fidl::Persistable for HciConfigureScoRequest {}
1009
1010#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1011pub struct PeerAssignConnectionStatusRequest {
1012 pub status: HciError,
1013}
1014
1015impl fidl::Persistable for PeerAssignConnectionStatusRequest {}
1016
1017#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1018pub struct PeerEmulateLeConnectionCompleteRequest {
1019 pub role: fidl_fuchsia_bluetooth__common::ConnectionRole,
1020}
1021
1022impl fidl::Persistable for PeerEmulateLeConnectionCompleteRequest {}
1023
1024#[derive(Clone, Debug, PartialEq)]
1025pub struct PeerSetServiceDefinitionsRequest {
1026 pub service_definitions: Vec<fidl_fuchsia_bluetooth_bredr__common::ServiceDefinition>,
1027}
1028
1029impl fidl::Persistable for PeerSetServiceDefinitionsRequest {}
1030
1031#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1032pub struct PeerWatchConnectionStatesResponse {
1033 pub states: Vec<ConnectionState>,
1034}
1035
1036impl fidl::Persistable for PeerWatchConnectionStatesResponse {}
1037
1038#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1039pub struct ScoPacket {
1040 pub packet: Vec<u8>,
1041}
1042
1043impl fidl::Persistable for ScoPacket {}
1044
1045#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1046#[repr(C)]
1047pub struct SnoopAcknowledgePacketsRequest {
1048 pub sequence: u64,
1049}
1050
1051impl fidl::Persistable for SnoopAcknowledgePacketsRequest {}
1052
1053#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1054pub struct VendorEncodeCommandResponse {
1055 pub encoded: Vec<u8>,
1056}
1057
1058impl fidl::Persistable for VendorEncodeCommandResponse {}
1059
1060#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
1061pub struct VirtualControllerCreateEmulatorResponse {
1062 pub name: Option<String>,
1063}
1064
1065impl fidl::Persistable for VirtualControllerCreateEmulatorResponse {}
1066
1067#[derive(Clone, Debug, Default, PartialEq)]
1069pub struct AclBufferSettings {
1070 pub data_packet_length: Option<u16>,
1072 pub total_num_data_packets: Option<u8>,
1074 #[doc(hidden)]
1075 pub __source_breaking: fidl::marker::SourceBreaking,
1076}
1077
1078impl fidl::Persistable for AclBufferSettings {}
1079
1080#[derive(Clone, Debug, Default, PartialEq)]
1081pub struct AdvertisingData {
1082 pub data: Option<Vec<u8>>,
1083 #[doc(hidden)]
1084 pub __source_breaking: fidl::marker::SourceBreaking,
1085}
1086
1087impl fidl::Persistable for AdvertisingData {}
1088
1089#[derive(Clone, Debug, Default, PartialEq)]
1093pub struct AndroidVendorSupport {
1094 pub major_version: Option<u8>,
1095 pub minor_version: Option<u8>,
1096 #[doc(hidden)]
1097 pub __source_breaking: fidl::marker::SourceBreaking,
1098}
1099
1100impl fidl::Persistable for AndroidVendorSupport {}
1101
1102#[derive(Clone, Debug, Default, PartialEq)]
1105pub struct AudioOffloadSettings {
1106 pub sco_offload_index: Option<u8>,
1108 #[doc(hidden)]
1109 pub __source_breaking: fidl::marker::SourceBreaking,
1110}
1111
1112impl fidl::Persistable for AudioOffloadSettings {}
1113
1114#[derive(Clone, Debug, Default, PartialEq)]
1117pub struct ControllerParameters {
1118 pub local_name: Option<String>,
1122 pub device_class: Option<fidl_fuchsia_bluetooth__common::DeviceClass>,
1124 #[doc(hidden)]
1125 pub __source_breaking: fidl::marker::SourceBreaking,
1126}
1127
1128impl fidl::Persistable for ControllerParameters {}
1129
1130#[derive(Clone, Debug, Default, PartialEq)]
1132pub struct EmulatorSettings {
1133 pub address: Option<fidl_fuchsia_bluetooth__common::Address>,
1135 pub hci_config: Option<HciConfig>,
1137 pub extended_advertising: Option<bool>,
1139 pub acl_buffer_settings: Option<AclBufferSettings>,
1144 pub le_acl_buffer_settings: Option<AclBufferSettings>,
1148 #[doc(hidden)]
1149 pub __source_breaking: fidl::marker::SourceBreaking,
1150}
1151
1152impl fidl::Persistable for EmulatorSettings {}
1153
1154#[derive(Clone, Debug, Default, PartialEq)]
1156pub struct LeScanState {
1157 pub enabled: Option<bool>,
1159 pub active: Option<bool>,
1161 pub interval: Option<u16>,
1165 pub window: Option<u16>,
1166 pub filter_duplicates: Option<bool>,
1168 pub address_type: Option<fidl_fuchsia_bluetooth__common::AddressType>,
1170 #[doc(hidden)]
1171 pub __source_breaking: fidl::marker::SourceBreaking,
1172}
1173
1174impl fidl::Persistable for LeScanState {}
1175
1176#[derive(Clone, Debug, Default, PartialEq)]
1178pub struct LegacyAdvertisingState {
1179 pub enabled: Option<bool>,
1182 pub type_: Option<LegacyAdvertisingType>,
1185 pub address_type: Option<fidl_fuchsia_bluetooth__common::AddressType>,
1188 pub interval_min: Option<u16>,
1190 pub interval_max: Option<u16>,
1191 pub advertising_data: Option<AdvertisingData>,
1193 pub scan_response: Option<AdvertisingData>,
1194 #[doc(hidden)]
1195 pub __source_breaking: fidl::marker::SourceBreaking,
1196}
1197
1198impl fidl::Persistable for LegacyAdvertisingState {}
1199
1200#[derive(Clone, Debug, Default, PartialEq)]
1201pub struct PeerSetLeAdvertisementRequest {
1202 pub le_address: Option<fidl_fuchsia_bluetooth__common::Address>,
1204 pub advertisement: Option<AdvertisingData>,
1207 pub scan_response: Option<AdvertisingData>,
1210 #[doc(hidden)]
1211 pub __source_breaking: fidl::marker::SourceBreaking,
1212}
1213
1214impl fidl::Persistable for PeerSetLeAdvertisementRequest {}
1215
1216#[derive(Clone, Debug, Default, PartialEq)]
1217pub struct SnoopOnDroppedPacketsRequest {
1218 pub sent: Option<u32>,
1219 pub received: Option<u32>,
1220 #[doc(hidden)]
1221 pub __source_breaking: fidl::marker::SourceBreaking,
1222}
1223
1224impl fidl::Persistable for SnoopOnDroppedPacketsRequest {}
1225
1226#[derive(Clone, Debug, Default, PartialEq)]
1227pub struct SnoopOnObservePacketRequest {
1228 pub sequence: Option<u64>,
1231 pub direction: Option<PacketDirection>,
1232 pub packet: Option<SnoopPacket>,
1233 #[doc(hidden)]
1234 pub __source_breaking: fidl::marker::SourceBreaking,
1235}
1236
1237impl fidl::Persistable for SnoopOnObservePacketRequest {}
1238
1239#[derive(Clone, Debug, Default, PartialEq)]
1241pub struct VendorCrashParameters {
1242 pub crash_events: Option<Vec<Vec<u8>>>,
1247 pub program_name: Option<String>,
1250 pub crash_signature: Option<String>,
1254 #[doc(hidden)]
1255 pub __source_breaking: fidl::marker::SourceBreaking,
1256}
1257
1258impl fidl::Persistable for VendorCrashParameters {}
1259
1260#[derive(Clone, Debug, Default, PartialEq)]
1262pub struct VendorFeatures {
1263 pub acl_priority_command: Option<bool>,
1266 pub android_vendor_extensions: Option<AndroidVendorSupport>,
1269 pub audio_offload_settings: Option<AudioOffloadSettings>,
1272 #[doc(hidden)]
1273 pub __source_breaking: fidl::marker::SourceBreaking,
1274}
1275
1276impl fidl::Persistable for VendorFeatures {}
1277
1278#[derive(Clone, Debug, Default, PartialEq)]
1279pub struct VendorSetAclPriorityParams {
1280 pub connection_handle: Option<u16>,
1282 pub priority: Option<VendorAclPriority>,
1283 pub direction: Option<VendorAclDirection>,
1286 #[doc(hidden)]
1287 pub __source_breaking: fidl::marker::SourceBreaking,
1288}
1289
1290impl fidl::Persistable for VendorSetAclPriorityParams {}
1291
1292#[derive(Clone, Debug)]
1294pub enum ReceivedPacket {
1295 Event(Vec<u8>),
1296 Acl(Vec<u8>),
1297 Iso(Vec<u8>),
1298 #[doc(hidden)]
1299 __SourceBreaking {
1300 unknown_ordinal: u64,
1301 },
1302}
1303
1304#[macro_export]
1306macro_rules! ReceivedPacketUnknown {
1307 () => {
1308 _
1309 };
1310}
1311
1312impl PartialEq for ReceivedPacket {
1314 fn eq(&self, other: &Self) -> bool {
1315 match (self, other) {
1316 (Self::Event(x), Self::Event(y)) => *x == *y,
1317 (Self::Acl(x), Self::Acl(y)) => *x == *y,
1318 (Self::Iso(x), Self::Iso(y)) => *x == *y,
1319 _ => false,
1320 }
1321 }
1322}
1323
1324impl ReceivedPacket {
1325 #[inline]
1326 pub fn ordinal(&self) -> u64 {
1327 match *self {
1328 Self::Event(_) => 1,
1329 Self::Acl(_) => 2,
1330 Self::Iso(_) => 3,
1331 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1332 }
1333 }
1334
1335 #[inline]
1336 pub fn unknown_variant_for_testing() -> Self {
1337 Self::__SourceBreaking { unknown_ordinal: 0 }
1338 }
1339
1340 #[inline]
1341 pub fn is_unknown(&self) -> bool {
1342 match self {
1343 Self::__SourceBreaking { .. } => true,
1344 _ => false,
1345 }
1346 }
1347}
1348
1349impl fidl::Persistable for ReceivedPacket {}
1350
1351#[derive(Clone, Debug)]
1353pub enum SentPacket {
1354 Command(Vec<u8>),
1355 Acl(Vec<u8>),
1356 Iso(Vec<u8>),
1357 #[doc(hidden)]
1358 __SourceBreaking {
1359 unknown_ordinal: u64,
1360 },
1361}
1362
1363#[macro_export]
1365macro_rules! SentPacketUnknown {
1366 () => {
1367 _
1368 };
1369}
1370
1371impl PartialEq for SentPacket {
1373 fn eq(&self, other: &Self) -> bool {
1374 match (self, other) {
1375 (Self::Command(x), Self::Command(y)) => *x == *y,
1376 (Self::Acl(x), Self::Acl(y)) => *x == *y,
1377 (Self::Iso(x), Self::Iso(y)) => *x == *y,
1378 _ => false,
1379 }
1380 }
1381}
1382
1383impl SentPacket {
1384 #[inline]
1385 pub fn ordinal(&self) -> u64 {
1386 match *self {
1387 Self::Command(_) => 1,
1388 Self::Acl(_) => 2,
1389 Self::Iso(_) => 3,
1390 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1391 }
1392 }
1393
1394 #[inline]
1395 pub fn unknown_variant_for_testing() -> Self {
1396 Self::__SourceBreaking { unknown_ordinal: 0 }
1397 }
1398
1399 #[inline]
1400 pub fn is_unknown(&self) -> bool {
1401 match self {
1402 Self::__SourceBreaking { .. } => true,
1403 _ => false,
1404 }
1405 }
1406}
1407
1408impl fidl::Persistable for SentPacket {}
1409
1410#[derive(Clone, Debug)]
1411pub enum SnoopPacket {
1412 Event(Vec<u8>),
1413 Command(Vec<u8>),
1414 Acl(Vec<u8>),
1415 Sco(Vec<u8>),
1416 Iso(Vec<u8>),
1417 #[doc(hidden)]
1418 __SourceBreaking {
1419 unknown_ordinal: u64,
1420 },
1421}
1422
1423#[macro_export]
1425macro_rules! SnoopPacketUnknown {
1426 () => {
1427 _
1428 };
1429}
1430
1431impl PartialEq for SnoopPacket {
1433 fn eq(&self, other: &Self) -> bool {
1434 match (self, other) {
1435 (Self::Event(x), Self::Event(y)) => *x == *y,
1436 (Self::Command(x), Self::Command(y)) => *x == *y,
1437 (Self::Acl(x), Self::Acl(y)) => *x == *y,
1438 (Self::Sco(x), Self::Sco(y)) => *x == *y,
1439 (Self::Iso(x), Self::Iso(y)) => *x == *y,
1440 _ => false,
1441 }
1442 }
1443}
1444
1445impl SnoopPacket {
1446 #[inline]
1447 pub fn ordinal(&self) -> u64 {
1448 match *self {
1449 Self::Event(_) => 1,
1450 Self::Command(_) => 2,
1451 Self::Acl(_) => 3,
1452 Self::Sco(_) => 4,
1453 Self::Iso(_) => 5,
1454 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1455 }
1456 }
1457
1458 #[inline]
1459 pub fn unknown_variant_for_testing() -> Self {
1460 Self::__SourceBreaking { unknown_ordinal: 0 }
1461 }
1462
1463 #[inline]
1464 pub fn is_unknown(&self) -> bool {
1465 match self {
1466 Self::__SourceBreaking { .. } => true,
1467 _ => false,
1468 }
1469 }
1470}
1471
1472impl fidl::Persistable for SnoopPacket {}
1473
1474#[derive(Clone, Debug)]
1475pub enum VendorCommand {
1476 SetAclPriority(VendorSetAclPriorityParams),
1477 #[doc(hidden)]
1478 __SourceBreaking {
1479 unknown_ordinal: u64,
1480 },
1481}
1482
1483#[macro_export]
1485macro_rules! VendorCommandUnknown {
1486 () => {
1487 _
1488 };
1489}
1490
1491impl PartialEq for VendorCommand {
1493 fn eq(&self, other: &Self) -> bool {
1494 match (self, other) {
1495 (Self::SetAclPriority(x), Self::SetAclPriority(y)) => *x == *y,
1496 _ => false,
1497 }
1498 }
1499}
1500
1501impl VendorCommand {
1502 #[inline]
1503 pub fn ordinal(&self) -> u64 {
1504 match *self {
1505 Self::SetAclPriority(_) => 1,
1506 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
1507 }
1508 }
1509
1510 #[inline]
1511 pub fn unknown_variant_for_testing() -> Self {
1512 Self::__SourceBreaking { unknown_ordinal: 0 }
1513 }
1514
1515 #[inline]
1516 pub fn is_unknown(&self) -> bool {
1517 match self {
1518 Self::__SourceBreaking { .. } => true,
1519 _ => false,
1520 }
1521 }
1522}
1523
1524impl fidl::Persistable for VendorCommand {}
1525
1526pub mod emulator_ordinals {
1527 pub const PUBLISH: u64 = 0x5b8aeb2ece853c39;
1528 pub const ADD_LOW_ENERGY_PEER: u64 = 0x4e1fb7adbebc6946;
1529 pub const ADD_BREDR_PEER: u64 = 0x6d15989a0373e07;
1530 pub const WATCH_CONTROLLER_PARAMETERS: u64 = 0x6ed7a918b5800270;
1531 pub const WATCH_LE_SCAN_STATES: u64 = 0x10e6c845831f3b4a;
1532 pub const WATCH_LEGACY_ADVERTISING_STATES: u64 = 0x7067acbe275d0219;
1533}
1534
1535pub mod hci_ordinals {
1536 pub const OPEN_COMMAND_CHANNEL: u64 = 0x2510b52ea3a51ce0;
1537 pub const OPEN_ACL_DATA_CHANNEL: u64 = 0x210c3dd69156385a;
1538 pub const OPEN_SCO_DATA_CHANNEL: u64 = 0x5bcb0bf2cbf35bdf;
1539 pub const CONFIGURE_SCO: u64 = 0x499ec7edfd65fad7;
1540 pub const RESET_SCO: u64 = 0x6ee56dcb2ce23fcb;
1541 pub const OPEN_ISO_DATA_CHANNEL: u64 = 0x9adfa1d466cefd4;
1542 pub const OPEN_SNOOP_CHANNEL: u64 = 0xd31c6d5cbc4e136;
1543}
1544
1545pub mod hci_transport_ordinals {
1546 pub const SEND_: u64 = 0x4793b5e66fd79e0b;
1547 pub const ON_RECEIVE: u64 = 0xcb102e573e5049c;
1548 pub const ACK_RECEIVE: u64 = 0x25de8c1f760f0c89;
1549 pub const CONFIGURE_SCO: u64 = 0x4298072d0498b612;
1550}
1551
1552pub mod peer_ordinals {
1553 pub const ASSIGN_CONNECTION_STATUS: u64 = 0x52810c5ba7a2555c;
1554 pub const EMULATE_LE_CONNECTION_COMPLETE: u64 = 0x3dfba319b8d2fc2a;
1555 pub const EMULATE_DISCONNECTION_COMPLETE: u64 = 0x4d3955084d85a15c;
1556 pub const WATCH_CONNECTION_STATES: u64 = 0x5a5190211980c70f;
1557 pub const SET_DEVICE_CLASS: u64 = 0x3e52fa234758e1ea;
1558 pub const SET_SERVICE_DEFINITIONS: u64 = 0x58ce9f22fce272df;
1559 pub const SET_LE_ADVERTISEMENT: u64 = 0x481b9aea1b39cfb4;
1560}
1561
1562pub mod sco_connection_ordinals {
1563 pub const SEND_: u64 = 0x6e0c000ccd50adec;
1564 pub const ON_RECEIVE: u64 = 0x4d4e96f6f7d1aa12;
1565 pub const ACK_RECEIVE: u64 = 0x7e6af45151224a6a;
1566 pub const STOP: u64 = 0x5df8b0ab265b449d;
1567}
1568
1569pub mod snoop_ordinals {
1570 pub const ON_OBSERVE_PACKET: u64 = 0x34d9f4c9c6bc10ca;
1571 pub const ACKNOWLEDGE_PACKETS: u64 = 0x3336b5082c111286;
1572 pub const ON_DROPPED_PACKETS: u64 = 0x102a8d21278578b9;
1573}
1574
1575pub mod vendor_ordinals {
1576 pub const GET_FEATURES: u64 = 0x102e70164c1dc911;
1577 pub const ENCODE_COMMAND: u64 = 0x75430542c197cbe8;
1578 pub const OPEN_HCI: u64 = 0x7f05862f7ef92ec8;
1579 pub const OPEN_HCI_TRANSPORT: u64 = 0x1f785b656fb00834;
1580 pub const OPEN_SNOOP: u64 = 0xafeca0e3c789043;
1581 pub const GET_CRASH_PARAMETERS: u64 = 0xb16601642b3a567;
1582}
1583
1584pub mod virtual_controller_ordinals {
1585 pub const CREATE_EMULATOR: u64 = 0x130273fc0a35cedb;
1586 pub const CREATE_LOOPBACK_DEVICE: u64 = 0x7525af8edecb6c0c;
1587}
1588
1589mod internal {
1590 use super::*;
1591 unsafe impl fidl::encoding::TypeMarker for ConnectionState {
1592 type Owned = Self;
1593
1594 #[inline(always)]
1595 fn inline_align(_context: fidl::encoding::Context) -> usize {
1596 std::mem::align_of::<u32>()
1597 }
1598
1599 #[inline(always)]
1600 fn inline_size(_context: fidl::encoding::Context) -> usize {
1601 std::mem::size_of::<u32>()
1602 }
1603
1604 #[inline(always)]
1605 fn encode_is_copy() -> bool {
1606 false
1607 }
1608
1609 #[inline(always)]
1610 fn decode_is_copy() -> bool {
1611 false
1612 }
1613 }
1614
1615 impl fidl::encoding::ValueTypeMarker for ConnectionState {
1616 type Borrowed<'a> = Self;
1617 #[inline(always)]
1618 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1619 *value
1620 }
1621 }
1622
1623 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1624 for ConnectionState
1625 {
1626 #[inline]
1627 unsafe fn encode(
1628 self,
1629 encoder: &mut fidl::encoding::Encoder<'_, D>,
1630 offset: usize,
1631 _depth: fidl::encoding::Depth,
1632 ) -> fidl::Result<()> {
1633 encoder.debug_check_bounds::<Self>(offset);
1634 encoder.write_num(self.into_primitive(), offset);
1635 Ok(())
1636 }
1637 }
1638
1639 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ConnectionState {
1640 #[inline(always)]
1641 fn new_empty() -> Self {
1642 Self::unknown()
1643 }
1644
1645 #[inline]
1646 unsafe fn decode(
1647 &mut self,
1648 decoder: &mut fidl::encoding::Decoder<'_, D>,
1649 offset: usize,
1650 _depth: fidl::encoding::Depth,
1651 ) -> fidl::Result<()> {
1652 decoder.debug_check_bounds::<Self>(offset);
1653 let prim = decoder.read_num::<u32>(offset);
1654
1655 *self = Self::from_primitive_allow_unknown(prim);
1656 Ok(())
1657 }
1658 }
1659 unsafe impl fidl::encoding::TypeMarker for EmulatorError {
1660 type Owned = Self;
1661
1662 #[inline(always)]
1663 fn inline_align(_context: fidl::encoding::Context) -> usize {
1664 std::mem::align_of::<u32>()
1665 }
1666
1667 #[inline(always)]
1668 fn inline_size(_context: fidl::encoding::Context) -> usize {
1669 std::mem::size_of::<u32>()
1670 }
1671
1672 #[inline(always)]
1673 fn encode_is_copy() -> bool {
1674 false
1675 }
1676
1677 #[inline(always)]
1678 fn decode_is_copy() -> bool {
1679 false
1680 }
1681 }
1682
1683 impl fidl::encoding::ValueTypeMarker for EmulatorError {
1684 type Borrowed<'a> = Self;
1685 #[inline(always)]
1686 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1687 *value
1688 }
1689 }
1690
1691 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for EmulatorError {
1692 #[inline]
1693 unsafe fn encode(
1694 self,
1695 encoder: &mut fidl::encoding::Encoder<'_, D>,
1696 offset: usize,
1697 _depth: fidl::encoding::Depth,
1698 ) -> fidl::Result<()> {
1699 encoder.debug_check_bounds::<Self>(offset);
1700 encoder.write_num(self.into_primitive(), offset);
1701 Ok(())
1702 }
1703 }
1704
1705 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EmulatorError {
1706 #[inline(always)]
1707 fn new_empty() -> Self {
1708 Self::unknown()
1709 }
1710
1711 #[inline]
1712 unsafe fn decode(
1713 &mut self,
1714 decoder: &mut fidl::encoding::Decoder<'_, D>,
1715 offset: usize,
1716 _depth: fidl::encoding::Depth,
1717 ) -> fidl::Result<()> {
1718 decoder.debug_check_bounds::<Self>(offset);
1719 let prim = decoder.read_num::<u32>(offset);
1720
1721 *self = Self::from_primitive_allow_unknown(prim);
1722 Ok(())
1723 }
1724 }
1725 unsafe impl fidl::encoding::TypeMarker for EmulatorPeerError {
1726 type Owned = Self;
1727
1728 #[inline(always)]
1729 fn inline_align(_context: fidl::encoding::Context) -> usize {
1730 std::mem::align_of::<u32>()
1731 }
1732
1733 #[inline(always)]
1734 fn inline_size(_context: fidl::encoding::Context) -> usize {
1735 std::mem::size_of::<u32>()
1736 }
1737
1738 #[inline(always)]
1739 fn encode_is_copy() -> bool {
1740 false
1741 }
1742
1743 #[inline(always)]
1744 fn decode_is_copy() -> bool {
1745 false
1746 }
1747 }
1748
1749 impl fidl::encoding::ValueTypeMarker for EmulatorPeerError {
1750 type Borrowed<'a> = Self;
1751 #[inline(always)]
1752 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1753 *value
1754 }
1755 }
1756
1757 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1758 for EmulatorPeerError
1759 {
1760 #[inline]
1761 unsafe fn encode(
1762 self,
1763 encoder: &mut fidl::encoding::Encoder<'_, D>,
1764 offset: usize,
1765 _depth: fidl::encoding::Depth,
1766 ) -> fidl::Result<()> {
1767 encoder.debug_check_bounds::<Self>(offset);
1768 encoder.write_num(self.into_primitive(), offset);
1769 Ok(())
1770 }
1771 }
1772
1773 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EmulatorPeerError {
1774 #[inline(always)]
1775 fn new_empty() -> Self {
1776 Self::unknown()
1777 }
1778
1779 #[inline]
1780 unsafe fn decode(
1781 &mut self,
1782 decoder: &mut fidl::encoding::Decoder<'_, D>,
1783 offset: usize,
1784 _depth: fidl::encoding::Depth,
1785 ) -> fidl::Result<()> {
1786 decoder.debug_check_bounds::<Self>(offset);
1787 let prim = decoder.read_num::<u32>(offset);
1788
1789 *self = Self::from_primitive_allow_unknown(prim);
1790 Ok(())
1791 }
1792 }
1793 unsafe impl fidl::encoding::TypeMarker for HciConfig {
1794 type Owned = Self;
1795
1796 #[inline(always)]
1797 fn inline_align(_context: fidl::encoding::Context) -> usize {
1798 std::mem::align_of::<u32>()
1799 }
1800
1801 #[inline(always)]
1802 fn inline_size(_context: fidl::encoding::Context) -> usize {
1803 std::mem::size_of::<u32>()
1804 }
1805
1806 #[inline(always)]
1807 fn encode_is_copy() -> bool {
1808 false
1809 }
1810
1811 #[inline(always)]
1812 fn decode_is_copy() -> bool {
1813 false
1814 }
1815 }
1816
1817 impl fidl::encoding::ValueTypeMarker for HciConfig {
1818 type Borrowed<'a> = Self;
1819 #[inline(always)]
1820 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1821 *value
1822 }
1823 }
1824
1825 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HciConfig {
1826 #[inline]
1827 unsafe fn encode(
1828 self,
1829 encoder: &mut fidl::encoding::Encoder<'_, D>,
1830 offset: usize,
1831 _depth: fidl::encoding::Depth,
1832 ) -> fidl::Result<()> {
1833 encoder.debug_check_bounds::<Self>(offset);
1834 encoder.write_num(self.into_primitive(), offset);
1835 Ok(())
1836 }
1837 }
1838
1839 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HciConfig {
1840 #[inline(always)]
1841 fn new_empty() -> Self {
1842 Self::unknown()
1843 }
1844
1845 #[inline]
1846 unsafe fn decode(
1847 &mut self,
1848 decoder: &mut fidl::encoding::Decoder<'_, D>,
1849 offset: usize,
1850 _depth: fidl::encoding::Depth,
1851 ) -> fidl::Result<()> {
1852 decoder.debug_check_bounds::<Self>(offset);
1853 let prim = decoder.read_num::<u32>(offset);
1854
1855 *self = Self::from_primitive_allow_unknown(prim);
1856 Ok(())
1857 }
1858 }
1859 unsafe impl fidl::encoding::TypeMarker for HciError {
1860 type Owned = Self;
1861
1862 #[inline(always)]
1863 fn inline_align(_context: fidl::encoding::Context) -> usize {
1864 std::mem::align_of::<u8>()
1865 }
1866
1867 #[inline(always)]
1868 fn inline_size(_context: fidl::encoding::Context) -> usize {
1869 std::mem::size_of::<u8>()
1870 }
1871
1872 #[inline(always)]
1873 fn encode_is_copy() -> bool {
1874 false
1875 }
1876
1877 #[inline(always)]
1878 fn decode_is_copy() -> bool {
1879 false
1880 }
1881 }
1882
1883 impl fidl::encoding::ValueTypeMarker for HciError {
1884 type Borrowed<'a> = Self;
1885 #[inline(always)]
1886 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1887 *value
1888 }
1889 }
1890
1891 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HciError {
1892 #[inline]
1893 unsafe fn encode(
1894 self,
1895 encoder: &mut fidl::encoding::Encoder<'_, D>,
1896 offset: usize,
1897 _depth: fidl::encoding::Depth,
1898 ) -> fidl::Result<()> {
1899 encoder.debug_check_bounds::<Self>(offset);
1900 encoder.write_num(self.into_primitive(), offset);
1901 Ok(())
1902 }
1903 }
1904
1905 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HciError {
1906 #[inline(always)]
1907 fn new_empty() -> Self {
1908 Self::unknown()
1909 }
1910
1911 #[inline]
1912 unsafe fn decode(
1913 &mut self,
1914 decoder: &mut fidl::encoding::Decoder<'_, D>,
1915 offset: usize,
1916 _depth: fidl::encoding::Depth,
1917 ) -> fidl::Result<()> {
1918 decoder.debug_check_bounds::<Self>(offset);
1919 let prim = decoder.read_num::<u8>(offset);
1920
1921 *self = Self::from_primitive_allow_unknown(prim);
1922 Ok(())
1923 }
1924 }
1925 unsafe impl fidl::encoding::TypeMarker for LegacyAdvertisingType {
1926 type Owned = Self;
1927
1928 #[inline(always)]
1929 fn inline_align(_context: fidl::encoding::Context) -> usize {
1930 std::mem::align_of::<u8>()
1931 }
1932
1933 #[inline(always)]
1934 fn inline_size(_context: fidl::encoding::Context) -> usize {
1935 std::mem::size_of::<u8>()
1936 }
1937
1938 #[inline(always)]
1939 fn encode_is_copy() -> bool {
1940 true
1941 }
1942
1943 #[inline(always)]
1944 fn decode_is_copy() -> bool {
1945 false
1946 }
1947 }
1948
1949 impl fidl::encoding::ValueTypeMarker for LegacyAdvertisingType {
1950 type Borrowed<'a> = Self;
1951 #[inline(always)]
1952 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1953 *value
1954 }
1955 }
1956
1957 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1958 for LegacyAdvertisingType
1959 {
1960 #[inline]
1961 unsafe fn encode(
1962 self,
1963 encoder: &mut fidl::encoding::Encoder<'_, D>,
1964 offset: usize,
1965 _depth: fidl::encoding::Depth,
1966 ) -> fidl::Result<()> {
1967 encoder.debug_check_bounds::<Self>(offset);
1968 encoder.write_num(self.into_primitive(), offset);
1969 Ok(())
1970 }
1971 }
1972
1973 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LegacyAdvertisingType {
1974 #[inline(always)]
1975 fn new_empty() -> Self {
1976 Self::AdvInd
1977 }
1978
1979 #[inline]
1980 unsafe fn decode(
1981 &mut self,
1982 decoder: &mut fidl::encoding::Decoder<'_, D>,
1983 offset: usize,
1984 _depth: fidl::encoding::Depth,
1985 ) -> fidl::Result<()> {
1986 decoder.debug_check_bounds::<Self>(offset);
1987 let prim = decoder.read_num::<u8>(offset);
1988
1989 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1990 Ok(())
1991 }
1992 }
1993 unsafe impl fidl::encoding::TypeMarker for PacketDirection {
1994 type Owned = Self;
1995
1996 #[inline(always)]
1997 fn inline_align(_context: fidl::encoding::Context) -> usize {
1998 std::mem::align_of::<u32>()
1999 }
2000
2001 #[inline(always)]
2002 fn inline_size(_context: fidl::encoding::Context) -> usize {
2003 std::mem::size_of::<u32>()
2004 }
2005
2006 #[inline(always)]
2007 fn encode_is_copy() -> bool {
2008 true
2009 }
2010
2011 #[inline(always)]
2012 fn decode_is_copy() -> bool {
2013 false
2014 }
2015 }
2016
2017 impl fidl::encoding::ValueTypeMarker for PacketDirection {
2018 type Borrowed<'a> = Self;
2019 #[inline(always)]
2020 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2021 *value
2022 }
2023 }
2024
2025 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2026 for PacketDirection
2027 {
2028 #[inline]
2029 unsafe fn encode(
2030 self,
2031 encoder: &mut fidl::encoding::Encoder<'_, D>,
2032 offset: usize,
2033 _depth: fidl::encoding::Depth,
2034 ) -> fidl::Result<()> {
2035 encoder.debug_check_bounds::<Self>(offset);
2036 encoder.write_num(self.into_primitive(), offset);
2037 Ok(())
2038 }
2039 }
2040
2041 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PacketDirection {
2042 #[inline(always)]
2043 fn new_empty() -> Self {
2044 Self::HostToController
2045 }
2046
2047 #[inline]
2048 unsafe fn decode(
2049 &mut self,
2050 decoder: &mut fidl::encoding::Decoder<'_, D>,
2051 offset: usize,
2052 _depth: fidl::encoding::Depth,
2053 ) -> fidl::Result<()> {
2054 decoder.debug_check_bounds::<Self>(offset);
2055 let prim = decoder.read_num::<u32>(offset);
2056
2057 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
2058 Ok(())
2059 }
2060 }
2061 unsafe impl fidl::encoding::TypeMarker for ScoCodingFormat {
2062 type Owned = Self;
2063
2064 #[inline(always)]
2065 fn inline_align(_context: fidl::encoding::Context) -> usize {
2066 std::mem::align_of::<u8>()
2067 }
2068
2069 #[inline(always)]
2070 fn inline_size(_context: fidl::encoding::Context) -> usize {
2071 std::mem::size_of::<u8>()
2072 }
2073
2074 #[inline(always)]
2075 fn encode_is_copy() -> bool {
2076 false
2077 }
2078
2079 #[inline(always)]
2080 fn decode_is_copy() -> bool {
2081 false
2082 }
2083 }
2084
2085 impl fidl::encoding::ValueTypeMarker for ScoCodingFormat {
2086 type Borrowed<'a> = Self;
2087 #[inline(always)]
2088 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2089 *value
2090 }
2091 }
2092
2093 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2094 for ScoCodingFormat
2095 {
2096 #[inline]
2097 unsafe fn encode(
2098 self,
2099 encoder: &mut fidl::encoding::Encoder<'_, D>,
2100 offset: usize,
2101 _depth: fidl::encoding::Depth,
2102 ) -> fidl::Result<()> {
2103 encoder.debug_check_bounds::<Self>(offset);
2104 encoder.write_num(self.into_primitive(), offset);
2105 Ok(())
2106 }
2107 }
2108
2109 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScoCodingFormat {
2110 #[inline(always)]
2111 fn new_empty() -> Self {
2112 Self::unknown()
2113 }
2114
2115 #[inline]
2116 unsafe fn decode(
2117 &mut self,
2118 decoder: &mut fidl::encoding::Decoder<'_, D>,
2119 offset: usize,
2120 _depth: fidl::encoding::Depth,
2121 ) -> fidl::Result<()> {
2122 decoder.debug_check_bounds::<Self>(offset);
2123 let prim = decoder.read_num::<u8>(offset);
2124
2125 *self = Self::from_primitive_allow_unknown(prim);
2126 Ok(())
2127 }
2128 }
2129 unsafe impl fidl::encoding::TypeMarker for ScoEncoding {
2130 type Owned = Self;
2131
2132 #[inline(always)]
2133 fn inline_align(_context: fidl::encoding::Context) -> usize {
2134 std::mem::align_of::<u8>()
2135 }
2136
2137 #[inline(always)]
2138 fn inline_size(_context: fidl::encoding::Context) -> usize {
2139 std::mem::size_of::<u8>()
2140 }
2141
2142 #[inline(always)]
2143 fn encode_is_copy() -> bool {
2144 false
2145 }
2146
2147 #[inline(always)]
2148 fn decode_is_copy() -> bool {
2149 false
2150 }
2151 }
2152
2153 impl fidl::encoding::ValueTypeMarker for ScoEncoding {
2154 type Borrowed<'a> = Self;
2155 #[inline(always)]
2156 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2157 *value
2158 }
2159 }
2160
2161 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScoEncoding {
2162 #[inline]
2163 unsafe fn encode(
2164 self,
2165 encoder: &mut fidl::encoding::Encoder<'_, D>,
2166 offset: usize,
2167 _depth: fidl::encoding::Depth,
2168 ) -> fidl::Result<()> {
2169 encoder.debug_check_bounds::<Self>(offset);
2170 encoder.write_num(self.into_primitive(), offset);
2171 Ok(())
2172 }
2173 }
2174
2175 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScoEncoding {
2176 #[inline(always)]
2177 fn new_empty() -> Self {
2178 Self::unknown()
2179 }
2180
2181 #[inline]
2182 unsafe fn decode(
2183 &mut self,
2184 decoder: &mut fidl::encoding::Decoder<'_, D>,
2185 offset: usize,
2186 _depth: fidl::encoding::Depth,
2187 ) -> fidl::Result<()> {
2188 decoder.debug_check_bounds::<Self>(offset);
2189 let prim = decoder.read_num::<u8>(offset);
2190
2191 *self = Self::from_primitive_allow_unknown(prim);
2192 Ok(())
2193 }
2194 }
2195 unsafe impl fidl::encoding::TypeMarker for ScoSampleRate {
2196 type Owned = Self;
2197
2198 #[inline(always)]
2199 fn inline_align(_context: fidl::encoding::Context) -> usize {
2200 std::mem::align_of::<u8>()
2201 }
2202
2203 #[inline(always)]
2204 fn inline_size(_context: fidl::encoding::Context) -> usize {
2205 std::mem::size_of::<u8>()
2206 }
2207
2208 #[inline(always)]
2209 fn encode_is_copy() -> bool {
2210 false
2211 }
2212
2213 #[inline(always)]
2214 fn decode_is_copy() -> bool {
2215 false
2216 }
2217 }
2218
2219 impl fidl::encoding::ValueTypeMarker for ScoSampleRate {
2220 type Borrowed<'a> = Self;
2221 #[inline(always)]
2222 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2223 *value
2224 }
2225 }
2226
2227 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScoSampleRate {
2228 #[inline]
2229 unsafe fn encode(
2230 self,
2231 encoder: &mut fidl::encoding::Encoder<'_, D>,
2232 offset: usize,
2233 _depth: fidl::encoding::Depth,
2234 ) -> fidl::Result<()> {
2235 encoder.debug_check_bounds::<Self>(offset);
2236 encoder.write_num(self.into_primitive(), offset);
2237 Ok(())
2238 }
2239 }
2240
2241 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScoSampleRate {
2242 #[inline(always)]
2243 fn new_empty() -> Self {
2244 Self::unknown()
2245 }
2246
2247 #[inline]
2248 unsafe fn decode(
2249 &mut self,
2250 decoder: &mut fidl::encoding::Decoder<'_, D>,
2251 offset: usize,
2252 _depth: fidl::encoding::Depth,
2253 ) -> fidl::Result<()> {
2254 decoder.debug_check_bounds::<Self>(offset);
2255 let prim = decoder.read_num::<u8>(offset);
2256
2257 *self = Self::from_primitive_allow_unknown(prim);
2258 Ok(())
2259 }
2260 }
2261 unsafe impl fidl::encoding::TypeMarker for VendorAclDirection {
2262 type Owned = Self;
2263
2264 #[inline(always)]
2265 fn inline_align(_context: fidl::encoding::Context) -> usize {
2266 std::mem::align_of::<u8>()
2267 }
2268
2269 #[inline(always)]
2270 fn inline_size(_context: fidl::encoding::Context) -> usize {
2271 std::mem::size_of::<u8>()
2272 }
2273
2274 #[inline(always)]
2275 fn encode_is_copy() -> bool {
2276 false
2277 }
2278
2279 #[inline(always)]
2280 fn decode_is_copy() -> bool {
2281 false
2282 }
2283 }
2284
2285 impl fidl::encoding::ValueTypeMarker for VendorAclDirection {
2286 type Borrowed<'a> = Self;
2287 #[inline(always)]
2288 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2289 *value
2290 }
2291 }
2292
2293 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2294 for VendorAclDirection
2295 {
2296 #[inline]
2297 unsafe fn encode(
2298 self,
2299 encoder: &mut fidl::encoding::Encoder<'_, D>,
2300 offset: usize,
2301 _depth: fidl::encoding::Depth,
2302 ) -> fidl::Result<()> {
2303 encoder.debug_check_bounds::<Self>(offset);
2304 encoder.write_num(self.into_primitive(), offset);
2305 Ok(())
2306 }
2307 }
2308
2309 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VendorAclDirection {
2310 #[inline(always)]
2311 fn new_empty() -> Self {
2312 Self::unknown()
2313 }
2314
2315 #[inline]
2316 unsafe fn decode(
2317 &mut self,
2318 decoder: &mut fidl::encoding::Decoder<'_, D>,
2319 offset: usize,
2320 _depth: fidl::encoding::Depth,
2321 ) -> fidl::Result<()> {
2322 decoder.debug_check_bounds::<Self>(offset);
2323 let prim = decoder.read_num::<u8>(offset);
2324
2325 *self = Self::from_primitive_allow_unknown(prim);
2326 Ok(())
2327 }
2328 }
2329 unsafe impl fidl::encoding::TypeMarker for VendorAclPriority {
2330 type Owned = Self;
2331
2332 #[inline(always)]
2333 fn inline_align(_context: fidl::encoding::Context) -> usize {
2334 std::mem::align_of::<u8>()
2335 }
2336
2337 #[inline(always)]
2338 fn inline_size(_context: fidl::encoding::Context) -> usize {
2339 std::mem::size_of::<u8>()
2340 }
2341
2342 #[inline(always)]
2343 fn encode_is_copy() -> bool {
2344 false
2345 }
2346
2347 #[inline(always)]
2348 fn decode_is_copy() -> bool {
2349 false
2350 }
2351 }
2352
2353 impl fidl::encoding::ValueTypeMarker for VendorAclPriority {
2354 type Borrowed<'a> = Self;
2355 #[inline(always)]
2356 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2357 *value
2358 }
2359 }
2360
2361 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
2362 for VendorAclPriority
2363 {
2364 #[inline]
2365 unsafe fn encode(
2366 self,
2367 encoder: &mut fidl::encoding::Encoder<'_, D>,
2368 offset: usize,
2369 _depth: fidl::encoding::Depth,
2370 ) -> fidl::Result<()> {
2371 encoder.debug_check_bounds::<Self>(offset);
2372 encoder.write_num(self.into_primitive(), offset);
2373 Ok(())
2374 }
2375 }
2376
2377 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VendorAclPriority {
2378 #[inline(always)]
2379 fn new_empty() -> Self {
2380 Self::unknown()
2381 }
2382
2383 #[inline]
2384 unsafe fn decode(
2385 &mut self,
2386 decoder: &mut fidl::encoding::Decoder<'_, D>,
2387 offset: usize,
2388 _depth: fidl::encoding::Depth,
2389 ) -> fidl::Result<()> {
2390 decoder.debug_check_bounds::<Self>(offset);
2391 let prim = decoder.read_num::<u8>(offset);
2392
2393 *self = Self::from_primitive_allow_unknown(prim);
2394 Ok(())
2395 }
2396 }
2397
2398 impl fidl::encoding::ValueTypeMarker for EmulatorWatchLeScanStatesResponse {
2399 type Borrowed<'a> = &'a Self;
2400 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2401 value
2402 }
2403 }
2404
2405 unsafe impl fidl::encoding::TypeMarker for EmulatorWatchLeScanStatesResponse {
2406 type Owned = Self;
2407
2408 #[inline(always)]
2409 fn inline_align(_context: fidl::encoding::Context) -> usize {
2410 8
2411 }
2412
2413 #[inline(always)]
2414 fn inline_size(_context: fidl::encoding::Context) -> usize {
2415 16
2416 }
2417 }
2418
2419 unsafe impl<D: fidl::encoding::ResourceDialect>
2420 fidl::encoding::Encode<EmulatorWatchLeScanStatesResponse, D>
2421 for &EmulatorWatchLeScanStatesResponse
2422 {
2423 #[inline]
2424 unsafe fn encode(
2425 self,
2426 encoder: &mut fidl::encoding::Encoder<'_, D>,
2427 offset: usize,
2428 _depth: fidl::encoding::Depth,
2429 ) -> fidl::Result<()> {
2430 encoder.debug_check_bounds::<EmulatorWatchLeScanStatesResponse>(offset);
2431 fidl::encoding::Encode::<EmulatorWatchLeScanStatesResponse, D>::encode(
2433 (
2434 <fidl::encoding::UnboundedVector<LeScanState> as fidl::encoding::ValueTypeMarker>::borrow(&self.states),
2435 ),
2436 encoder, offset, _depth
2437 )
2438 }
2439 }
2440 unsafe impl<
2441 D: fidl::encoding::ResourceDialect,
2442 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<LeScanState>, D>,
2443 > fidl::encoding::Encode<EmulatorWatchLeScanStatesResponse, D> for (T0,)
2444 {
2445 #[inline]
2446 unsafe fn encode(
2447 self,
2448 encoder: &mut fidl::encoding::Encoder<'_, D>,
2449 offset: usize,
2450 depth: fidl::encoding::Depth,
2451 ) -> fidl::Result<()> {
2452 encoder.debug_check_bounds::<EmulatorWatchLeScanStatesResponse>(offset);
2453 self.0.encode(encoder, offset + 0, depth)?;
2457 Ok(())
2458 }
2459 }
2460
2461 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2462 for EmulatorWatchLeScanStatesResponse
2463 {
2464 #[inline(always)]
2465 fn new_empty() -> Self {
2466 Self { states: fidl::new_empty!(fidl::encoding::UnboundedVector<LeScanState>, D) }
2467 }
2468
2469 #[inline]
2470 unsafe fn decode(
2471 &mut self,
2472 decoder: &mut fidl::encoding::Decoder<'_, D>,
2473 offset: usize,
2474 _depth: fidl::encoding::Depth,
2475 ) -> fidl::Result<()> {
2476 decoder.debug_check_bounds::<Self>(offset);
2477 fidl::decode!(
2479 fidl::encoding::UnboundedVector<LeScanState>,
2480 D,
2481 &mut self.states,
2482 decoder,
2483 offset + 0,
2484 _depth
2485 )?;
2486 Ok(())
2487 }
2488 }
2489
2490 impl fidl::encoding::ValueTypeMarker for EmulatorWatchLegacyAdvertisingStatesResponse {
2491 type Borrowed<'a> = &'a Self;
2492 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2493 value
2494 }
2495 }
2496
2497 unsafe impl fidl::encoding::TypeMarker for EmulatorWatchLegacyAdvertisingStatesResponse {
2498 type Owned = Self;
2499
2500 #[inline(always)]
2501 fn inline_align(_context: fidl::encoding::Context) -> usize {
2502 8
2503 }
2504
2505 #[inline(always)]
2506 fn inline_size(_context: fidl::encoding::Context) -> usize {
2507 16
2508 }
2509 }
2510
2511 unsafe impl<D: fidl::encoding::ResourceDialect>
2512 fidl::encoding::Encode<EmulatorWatchLegacyAdvertisingStatesResponse, D>
2513 for &EmulatorWatchLegacyAdvertisingStatesResponse
2514 {
2515 #[inline]
2516 unsafe fn encode(
2517 self,
2518 encoder: &mut fidl::encoding::Encoder<'_, D>,
2519 offset: usize,
2520 _depth: fidl::encoding::Depth,
2521 ) -> fidl::Result<()> {
2522 encoder.debug_check_bounds::<EmulatorWatchLegacyAdvertisingStatesResponse>(offset);
2523 fidl::encoding::Encode::<EmulatorWatchLegacyAdvertisingStatesResponse, D>::encode(
2525 (
2526 <fidl::encoding::UnboundedVector<LegacyAdvertisingState> as fidl::encoding::ValueTypeMarker>::borrow(&self.states),
2527 ),
2528 encoder, offset, _depth
2529 )
2530 }
2531 }
2532 unsafe impl<
2533 D: fidl::encoding::ResourceDialect,
2534 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<LegacyAdvertisingState>, D>,
2535 > fidl::encoding::Encode<EmulatorWatchLegacyAdvertisingStatesResponse, D> for (T0,)
2536 {
2537 #[inline]
2538 unsafe fn encode(
2539 self,
2540 encoder: &mut fidl::encoding::Encoder<'_, D>,
2541 offset: usize,
2542 depth: fidl::encoding::Depth,
2543 ) -> fidl::Result<()> {
2544 encoder.debug_check_bounds::<EmulatorWatchLegacyAdvertisingStatesResponse>(offset);
2545 self.0.encode(encoder, offset + 0, depth)?;
2549 Ok(())
2550 }
2551 }
2552
2553 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2554 for EmulatorWatchLegacyAdvertisingStatesResponse
2555 {
2556 #[inline(always)]
2557 fn new_empty() -> Self {
2558 Self {
2559 states: fidl::new_empty!(
2560 fidl::encoding::UnboundedVector<LegacyAdvertisingState>,
2561 D
2562 ),
2563 }
2564 }
2565
2566 #[inline]
2567 unsafe fn decode(
2568 &mut self,
2569 decoder: &mut fidl::encoding::Decoder<'_, D>,
2570 offset: usize,
2571 _depth: fidl::encoding::Depth,
2572 ) -> fidl::Result<()> {
2573 decoder.debug_check_bounds::<Self>(offset);
2574 fidl::decode!(
2576 fidl::encoding::UnboundedVector<LegacyAdvertisingState>,
2577 D,
2578 &mut self.states,
2579 decoder,
2580 offset + 0,
2581 _depth
2582 )?;
2583 Ok(())
2584 }
2585 }
2586
2587 impl fidl::encoding::ValueTypeMarker for HciConfigureScoRequest {
2588 type Borrowed<'a> = &'a Self;
2589 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2590 value
2591 }
2592 }
2593
2594 unsafe impl fidl::encoding::TypeMarker for HciConfigureScoRequest {
2595 type Owned = Self;
2596
2597 #[inline(always)]
2598 fn inline_align(_context: fidl::encoding::Context) -> usize {
2599 1
2600 }
2601
2602 #[inline(always)]
2603 fn inline_size(_context: fidl::encoding::Context) -> usize {
2604 3
2605 }
2606 }
2607
2608 unsafe impl<D: fidl::encoding::ResourceDialect>
2609 fidl::encoding::Encode<HciConfigureScoRequest, D> for &HciConfigureScoRequest
2610 {
2611 #[inline]
2612 unsafe fn encode(
2613 self,
2614 encoder: &mut fidl::encoding::Encoder<'_, D>,
2615 offset: usize,
2616 _depth: fidl::encoding::Depth,
2617 ) -> fidl::Result<()> {
2618 encoder.debug_check_bounds::<HciConfigureScoRequest>(offset);
2619 fidl::encoding::Encode::<HciConfigureScoRequest, D>::encode(
2621 (
2622 <ScoCodingFormat as fidl::encoding::ValueTypeMarker>::borrow(
2623 &self.coding_format,
2624 ),
2625 <ScoEncoding as fidl::encoding::ValueTypeMarker>::borrow(&self.encoding),
2626 <ScoSampleRate as fidl::encoding::ValueTypeMarker>::borrow(&self.sample_rate),
2627 ),
2628 encoder,
2629 offset,
2630 _depth,
2631 )
2632 }
2633 }
2634 unsafe impl<
2635 D: fidl::encoding::ResourceDialect,
2636 T0: fidl::encoding::Encode<ScoCodingFormat, D>,
2637 T1: fidl::encoding::Encode<ScoEncoding, D>,
2638 T2: fidl::encoding::Encode<ScoSampleRate, D>,
2639 > fidl::encoding::Encode<HciConfigureScoRequest, D> for (T0, T1, T2)
2640 {
2641 #[inline]
2642 unsafe fn encode(
2643 self,
2644 encoder: &mut fidl::encoding::Encoder<'_, D>,
2645 offset: usize,
2646 depth: fidl::encoding::Depth,
2647 ) -> fidl::Result<()> {
2648 encoder.debug_check_bounds::<HciConfigureScoRequest>(offset);
2649 self.0.encode(encoder, offset + 0, depth)?;
2653 self.1.encode(encoder, offset + 1, depth)?;
2654 self.2.encode(encoder, offset + 2, depth)?;
2655 Ok(())
2656 }
2657 }
2658
2659 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2660 for HciConfigureScoRequest
2661 {
2662 #[inline(always)]
2663 fn new_empty() -> Self {
2664 Self {
2665 coding_format: fidl::new_empty!(ScoCodingFormat, D),
2666 encoding: fidl::new_empty!(ScoEncoding, D),
2667 sample_rate: fidl::new_empty!(ScoSampleRate, D),
2668 }
2669 }
2670
2671 #[inline]
2672 unsafe fn decode(
2673 &mut self,
2674 decoder: &mut fidl::encoding::Decoder<'_, D>,
2675 offset: usize,
2676 _depth: fidl::encoding::Depth,
2677 ) -> fidl::Result<()> {
2678 decoder.debug_check_bounds::<Self>(offset);
2679 fidl::decode!(
2681 ScoCodingFormat,
2682 D,
2683 &mut self.coding_format,
2684 decoder,
2685 offset + 0,
2686 _depth
2687 )?;
2688 fidl::decode!(ScoEncoding, D, &mut self.encoding, decoder, offset + 1, _depth)?;
2689 fidl::decode!(ScoSampleRate, D, &mut self.sample_rate, decoder, offset + 2, _depth)?;
2690 Ok(())
2691 }
2692 }
2693
2694 impl fidl::encoding::ValueTypeMarker for PeerAssignConnectionStatusRequest {
2695 type Borrowed<'a> = &'a Self;
2696 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2697 value
2698 }
2699 }
2700
2701 unsafe impl fidl::encoding::TypeMarker for PeerAssignConnectionStatusRequest {
2702 type Owned = Self;
2703
2704 #[inline(always)]
2705 fn inline_align(_context: fidl::encoding::Context) -> usize {
2706 1
2707 }
2708
2709 #[inline(always)]
2710 fn inline_size(_context: fidl::encoding::Context) -> usize {
2711 1
2712 }
2713 }
2714
2715 unsafe impl<D: fidl::encoding::ResourceDialect>
2716 fidl::encoding::Encode<PeerAssignConnectionStatusRequest, D>
2717 for &PeerAssignConnectionStatusRequest
2718 {
2719 #[inline]
2720 unsafe fn encode(
2721 self,
2722 encoder: &mut fidl::encoding::Encoder<'_, D>,
2723 offset: usize,
2724 _depth: fidl::encoding::Depth,
2725 ) -> fidl::Result<()> {
2726 encoder.debug_check_bounds::<PeerAssignConnectionStatusRequest>(offset);
2727 fidl::encoding::Encode::<PeerAssignConnectionStatusRequest, D>::encode(
2729 (<HciError as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
2730 encoder,
2731 offset,
2732 _depth,
2733 )
2734 }
2735 }
2736 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HciError, D>>
2737 fidl::encoding::Encode<PeerAssignConnectionStatusRequest, D> for (T0,)
2738 {
2739 #[inline]
2740 unsafe fn encode(
2741 self,
2742 encoder: &mut fidl::encoding::Encoder<'_, D>,
2743 offset: usize,
2744 depth: fidl::encoding::Depth,
2745 ) -> fidl::Result<()> {
2746 encoder.debug_check_bounds::<PeerAssignConnectionStatusRequest>(offset);
2747 self.0.encode(encoder, offset + 0, depth)?;
2751 Ok(())
2752 }
2753 }
2754
2755 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2756 for PeerAssignConnectionStatusRequest
2757 {
2758 #[inline(always)]
2759 fn new_empty() -> Self {
2760 Self { status: fidl::new_empty!(HciError, D) }
2761 }
2762
2763 #[inline]
2764 unsafe fn decode(
2765 &mut self,
2766 decoder: &mut fidl::encoding::Decoder<'_, D>,
2767 offset: usize,
2768 _depth: fidl::encoding::Depth,
2769 ) -> fidl::Result<()> {
2770 decoder.debug_check_bounds::<Self>(offset);
2771 fidl::decode!(HciError, D, &mut self.status, decoder, offset + 0, _depth)?;
2773 Ok(())
2774 }
2775 }
2776
2777 impl fidl::encoding::ValueTypeMarker for PeerEmulateLeConnectionCompleteRequest {
2778 type Borrowed<'a> = &'a Self;
2779 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2780 value
2781 }
2782 }
2783
2784 unsafe impl fidl::encoding::TypeMarker for PeerEmulateLeConnectionCompleteRequest {
2785 type Owned = Self;
2786
2787 #[inline(always)]
2788 fn inline_align(_context: fidl::encoding::Context) -> usize {
2789 4
2790 }
2791
2792 #[inline(always)]
2793 fn inline_size(_context: fidl::encoding::Context) -> usize {
2794 4
2795 }
2796 }
2797
2798 unsafe impl<D: fidl::encoding::ResourceDialect>
2799 fidl::encoding::Encode<PeerEmulateLeConnectionCompleteRequest, D>
2800 for &PeerEmulateLeConnectionCompleteRequest
2801 {
2802 #[inline]
2803 unsafe fn encode(
2804 self,
2805 encoder: &mut fidl::encoding::Encoder<'_, D>,
2806 offset: usize,
2807 _depth: fidl::encoding::Depth,
2808 ) -> fidl::Result<()> {
2809 encoder.debug_check_bounds::<PeerEmulateLeConnectionCompleteRequest>(offset);
2810 fidl::encoding::Encode::<PeerEmulateLeConnectionCompleteRequest, D>::encode(
2812 (
2813 <fidl_fuchsia_bluetooth__common::ConnectionRole as fidl::encoding::ValueTypeMarker>::borrow(&self.role),
2814 ),
2815 encoder, offset, _depth
2816 )
2817 }
2818 }
2819 unsafe impl<
2820 D: fidl::encoding::ResourceDialect,
2821 T0: fidl::encoding::Encode<fidl_fuchsia_bluetooth__common::ConnectionRole, D>,
2822 > fidl::encoding::Encode<PeerEmulateLeConnectionCompleteRequest, D> for (T0,)
2823 {
2824 #[inline]
2825 unsafe fn encode(
2826 self,
2827 encoder: &mut fidl::encoding::Encoder<'_, D>,
2828 offset: usize,
2829 depth: fidl::encoding::Depth,
2830 ) -> fidl::Result<()> {
2831 encoder.debug_check_bounds::<PeerEmulateLeConnectionCompleteRequest>(offset);
2832 self.0.encode(encoder, offset + 0, depth)?;
2836 Ok(())
2837 }
2838 }
2839
2840 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2841 for PeerEmulateLeConnectionCompleteRequest
2842 {
2843 #[inline(always)]
2844 fn new_empty() -> Self {
2845 Self { role: fidl::new_empty!(fidl_fuchsia_bluetooth__common::ConnectionRole, D) }
2846 }
2847
2848 #[inline]
2849 unsafe fn decode(
2850 &mut self,
2851 decoder: &mut fidl::encoding::Decoder<'_, D>,
2852 offset: usize,
2853 _depth: fidl::encoding::Depth,
2854 ) -> fidl::Result<()> {
2855 decoder.debug_check_bounds::<Self>(offset);
2856 fidl::decode!(
2858 fidl_fuchsia_bluetooth__common::ConnectionRole,
2859 D,
2860 &mut self.role,
2861 decoder,
2862 offset + 0,
2863 _depth
2864 )?;
2865 Ok(())
2866 }
2867 }
2868
2869 impl fidl::encoding::ValueTypeMarker for PeerSetServiceDefinitionsRequest {
2870 type Borrowed<'a> = &'a Self;
2871 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2872 value
2873 }
2874 }
2875
2876 unsafe impl fidl::encoding::TypeMarker for PeerSetServiceDefinitionsRequest {
2877 type Owned = Self;
2878
2879 #[inline(always)]
2880 fn inline_align(_context: fidl::encoding::Context) -> usize {
2881 8
2882 }
2883
2884 #[inline(always)]
2885 fn inline_size(_context: fidl::encoding::Context) -> usize {
2886 16
2887 }
2888 }
2889
2890 unsafe impl<D: fidl::encoding::ResourceDialect>
2891 fidl::encoding::Encode<PeerSetServiceDefinitionsRequest, D>
2892 for &PeerSetServiceDefinitionsRequest
2893 {
2894 #[inline]
2895 unsafe fn encode(
2896 self,
2897 encoder: &mut fidl::encoding::Encoder<'_, D>,
2898 offset: usize,
2899 _depth: fidl::encoding::Depth,
2900 ) -> fidl::Result<()> {
2901 encoder.debug_check_bounds::<PeerSetServiceDefinitionsRequest>(offset);
2902 fidl::encoding::Encode::<PeerSetServiceDefinitionsRequest, D>::encode(
2904 (<fidl::encoding::Vector<
2905 fidl_fuchsia_bluetooth_bredr__common::ServiceDefinition,
2906 32,
2907 > as fidl::encoding::ValueTypeMarker>::borrow(
2908 &self.service_definitions
2909 ),),
2910 encoder,
2911 offset,
2912 _depth,
2913 )
2914 }
2915 }
2916 unsafe impl<
2917 D: fidl::encoding::ResourceDialect,
2918 T0: fidl::encoding::Encode<
2919 fidl::encoding::Vector<fidl_fuchsia_bluetooth_bredr__common::ServiceDefinition, 32>,
2920 D,
2921 >,
2922 > fidl::encoding::Encode<PeerSetServiceDefinitionsRequest, D> for (T0,)
2923 {
2924 #[inline]
2925 unsafe fn encode(
2926 self,
2927 encoder: &mut fidl::encoding::Encoder<'_, D>,
2928 offset: usize,
2929 depth: fidl::encoding::Depth,
2930 ) -> fidl::Result<()> {
2931 encoder.debug_check_bounds::<PeerSetServiceDefinitionsRequest>(offset);
2932 self.0.encode(encoder, offset + 0, depth)?;
2936 Ok(())
2937 }
2938 }
2939
2940 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2941 for PeerSetServiceDefinitionsRequest
2942 {
2943 #[inline(always)]
2944 fn new_empty() -> Self {
2945 Self {
2946 service_definitions: fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_bluetooth_bredr__common::ServiceDefinition, 32>, D),
2947 }
2948 }
2949
2950 #[inline]
2951 unsafe fn decode(
2952 &mut self,
2953 decoder: &mut fidl::encoding::Decoder<'_, D>,
2954 offset: usize,
2955 _depth: fidl::encoding::Depth,
2956 ) -> fidl::Result<()> {
2957 decoder.debug_check_bounds::<Self>(offset);
2958 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_bluetooth_bredr__common::ServiceDefinition, 32>, D, &mut self.service_definitions, decoder, offset + 0, _depth)?;
2960 Ok(())
2961 }
2962 }
2963
2964 impl fidl::encoding::ValueTypeMarker for PeerWatchConnectionStatesResponse {
2965 type Borrowed<'a> = &'a Self;
2966 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2967 value
2968 }
2969 }
2970
2971 unsafe impl fidl::encoding::TypeMarker for PeerWatchConnectionStatesResponse {
2972 type Owned = Self;
2973
2974 #[inline(always)]
2975 fn inline_align(_context: fidl::encoding::Context) -> usize {
2976 8
2977 }
2978
2979 #[inline(always)]
2980 fn inline_size(_context: fidl::encoding::Context) -> usize {
2981 16
2982 }
2983 }
2984
2985 unsafe impl<D: fidl::encoding::ResourceDialect>
2986 fidl::encoding::Encode<PeerWatchConnectionStatesResponse, D>
2987 for &PeerWatchConnectionStatesResponse
2988 {
2989 #[inline]
2990 unsafe fn encode(
2991 self,
2992 encoder: &mut fidl::encoding::Encoder<'_, D>,
2993 offset: usize,
2994 _depth: fidl::encoding::Depth,
2995 ) -> fidl::Result<()> {
2996 encoder.debug_check_bounds::<PeerWatchConnectionStatesResponse>(offset);
2997 fidl::encoding::Encode::<PeerWatchConnectionStatesResponse, D>::encode(
2999 (
3000 <fidl::encoding::UnboundedVector<ConnectionState> as fidl::encoding::ValueTypeMarker>::borrow(&self.states),
3001 ),
3002 encoder, offset, _depth
3003 )
3004 }
3005 }
3006 unsafe impl<
3007 D: fidl::encoding::ResourceDialect,
3008 T0: fidl::encoding::Encode<fidl::encoding::UnboundedVector<ConnectionState>, D>,
3009 > fidl::encoding::Encode<PeerWatchConnectionStatesResponse, D> for (T0,)
3010 {
3011 #[inline]
3012 unsafe fn encode(
3013 self,
3014 encoder: &mut fidl::encoding::Encoder<'_, D>,
3015 offset: usize,
3016 depth: fidl::encoding::Depth,
3017 ) -> fidl::Result<()> {
3018 encoder.debug_check_bounds::<PeerWatchConnectionStatesResponse>(offset);
3019 self.0.encode(encoder, offset + 0, depth)?;
3023 Ok(())
3024 }
3025 }
3026
3027 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3028 for PeerWatchConnectionStatesResponse
3029 {
3030 #[inline(always)]
3031 fn new_empty() -> Self {
3032 Self { states: fidl::new_empty!(fidl::encoding::UnboundedVector<ConnectionState>, D) }
3033 }
3034
3035 #[inline]
3036 unsafe fn decode(
3037 &mut self,
3038 decoder: &mut fidl::encoding::Decoder<'_, D>,
3039 offset: usize,
3040 _depth: fidl::encoding::Depth,
3041 ) -> fidl::Result<()> {
3042 decoder.debug_check_bounds::<Self>(offset);
3043 fidl::decode!(
3045 fidl::encoding::UnboundedVector<ConnectionState>,
3046 D,
3047 &mut self.states,
3048 decoder,
3049 offset + 0,
3050 _depth
3051 )?;
3052 Ok(())
3053 }
3054 }
3055
3056 impl fidl::encoding::ValueTypeMarker for ScoPacket {
3057 type Borrowed<'a> = &'a Self;
3058 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3059 value
3060 }
3061 }
3062
3063 unsafe impl fidl::encoding::TypeMarker for ScoPacket {
3064 type Owned = Self;
3065
3066 #[inline(always)]
3067 fn inline_align(_context: fidl::encoding::Context) -> usize {
3068 8
3069 }
3070
3071 #[inline(always)]
3072 fn inline_size(_context: fidl::encoding::Context) -> usize {
3073 16
3074 }
3075 }
3076
3077 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScoPacket, D>
3078 for &ScoPacket
3079 {
3080 #[inline]
3081 unsafe fn encode(
3082 self,
3083 encoder: &mut fidl::encoding::Encoder<'_, D>,
3084 offset: usize,
3085 _depth: fidl::encoding::Depth,
3086 ) -> fidl::Result<()> {
3087 encoder.debug_check_bounds::<ScoPacket>(offset);
3088 fidl::encoding::Encode::<ScoPacket, D>::encode(
3090 (<fidl::encoding::Vector<u8, 258> as fidl::encoding::ValueTypeMarker>::borrow(
3091 &self.packet,
3092 ),),
3093 encoder,
3094 offset,
3095 _depth,
3096 )
3097 }
3098 }
3099 unsafe impl<
3100 D: fidl::encoding::ResourceDialect,
3101 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 258>, D>,
3102 > fidl::encoding::Encode<ScoPacket, D> for (T0,)
3103 {
3104 #[inline]
3105 unsafe fn encode(
3106 self,
3107 encoder: &mut fidl::encoding::Encoder<'_, D>,
3108 offset: usize,
3109 depth: fidl::encoding::Depth,
3110 ) -> fidl::Result<()> {
3111 encoder.debug_check_bounds::<ScoPacket>(offset);
3112 self.0.encode(encoder, offset + 0, depth)?;
3116 Ok(())
3117 }
3118 }
3119
3120 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScoPacket {
3121 #[inline(always)]
3122 fn new_empty() -> Self {
3123 Self { packet: fidl::new_empty!(fidl::encoding::Vector<u8, 258>, D) }
3124 }
3125
3126 #[inline]
3127 unsafe fn decode(
3128 &mut self,
3129 decoder: &mut fidl::encoding::Decoder<'_, D>,
3130 offset: usize,
3131 _depth: fidl::encoding::Depth,
3132 ) -> fidl::Result<()> {
3133 decoder.debug_check_bounds::<Self>(offset);
3134 fidl::decode!(fidl::encoding::Vector<u8, 258>, D, &mut self.packet, decoder, offset + 0, _depth)?;
3136 Ok(())
3137 }
3138 }
3139
3140 impl fidl::encoding::ValueTypeMarker for SnoopAcknowledgePacketsRequest {
3141 type Borrowed<'a> = &'a Self;
3142 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3143 value
3144 }
3145 }
3146
3147 unsafe impl fidl::encoding::TypeMarker for SnoopAcknowledgePacketsRequest {
3148 type Owned = Self;
3149
3150 #[inline(always)]
3151 fn inline_align(_context: fidl::encoding::Context) -> usize {
3152 8
3153 }
3154
3155 #[inline(always)]
3156 fn inline_size(_context: fidl::encoding::Context) -> usize {
3157 8
3158 }
3159 #[inline(always)]
3160 fn encode_is_copy() -> bool {
3161 true
3162 }
3163
3164 #[inline(always)]
3165 fn decode_is_copy() -> bool {
3166 true
3167 }
3168 }
3169
3170 unsafe impl<D: fidl::encoding::ResourceDialect>
3171 fidl::encoding::Encode<SnoopAcknowledgePacketsRequest, D>
3172 for &SnoopAcknowledgePacketsRequest
3173 {
3174 #[inline]
3175 unsafe fn encode(
3176 self,
3177 encoder: &mut fidl::encoding::Encoder<'_, D>,
3178 offset: usize,
3179 _depth: fidl::encoding::Depth,
3180 ) -> fidl::Result<()> {
3181 encoder.debug_check_bounds::<SnoopAcknowledgePacketsRequest>(offset);
3182 unsafe {
3183 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
3185 (buf_ptr as *mut SnoopAcknowledgePacketsRequest)
3186 .write_unaligned((self as *const SnoopAcknowledgePacketsRequest).read());
3187 }
3190 Ok(())
3191 }
3192 }
3193 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u64, D>>
3194 fidl::encoding::Encode<SnoopAcknowledgePacketsRequest, D> for (T0,)
3195 {
3196 #[inline]
3197 unsafe fn encode(
3198 self,
3199 encoder: &mut fidl::encoding::Encoder<'_, D>,
3200 offset: usize,
3201 depth: fidl::encoding::Depth,
3202 ) -> fidl::Result<()> {
3203 encoder.debug_check_bounds::<SnoopAcknowledgePacketsRequest>(offset);
3204 self.0.encode(encoder, offset + 0, depth)?;
3208 Ok(())
3209 }
3210 }
3211
3212 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3213 for SnoopAcknowledgePacketsRequest
3214 {
3215 #[inline(always)]
3216 fn new_empty() -> Self {
3217 Self { sequence: fidl::new_empty!(u64, D) }
3218 }
3219
3220 #[inline]
3221 unsafe fn decode(
3222 &mut self,
3223 decoder: &mut fidl::encoding::Decoder<'_, D>,
3224 offset: usize,
3225 _depth: fidl::encoding::Depth,
3226 ) -> fidl::Result<()> {
3227 decoder.debug_check_bounds::<Self>(offset);
3228 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
3229 unsafe {
3232 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
3233 }
3234 Ok(())
3235 }
3236 }
3237
3238 impl fidl::encoding::ValueTypeMarker for VendorEncodeCommandResponse {
3239 type Borrowed<'a> = &'a Self;
3240 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3241 value
3242 }
3243 }
3244
3245 unsafe impl fidl::encoding::TypeMarker for VendorEncodeCommandResponse {
3246 type Owned = Self;
3247
3248 #[inline(always)]
3249 fn inline_align(_context: fidl::encoding::Context) -> usize {
3250 8
3251 }
3252
3253 #[inline(always)]
3254 fn inline_size(_context: fidl::encoding::Context) -> usize {
3255 16
3256 }
3257 }
3258
3259 unsafe impl<D: fidl::encoding::ResourceDialect>
3260 fidl::encoding::Encode<VendorEncodeCommandResponse, D> for &VendorEncodeCommandResponse
3261 {
3262 #[inline]
3263 unsafe fn encode(
3264 self,
3265 encoder: &mut fidl::encoding::Encoder<'_, D>,
3266 offset: usize,
3267 _depth: fidl::encoding::Depth,
3268 ) -> fidl::Result<()> {
3269 encoder.debug_check_bounds::<VendorEncodeCommandResponse>(offset);
3270 fidl::encoding::Encode::<VendorEncodeCommandResponse, D>::encode(
3272 (<fidl::encoding::Vector<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow(
3273 &self.encoded,
3274 ),),
3275 encoder,
3276 offset,
3277 _depth,
3278 )
3279 }
3280 }
3281 unsafe impl<
3282 D: fidl::encoding::ResourceDialect,
3283 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 16>, D>,
3284 > fidl::encoding::Encode<VendorEncodeCommandResponse, D> for (T0,)
3285 {
3286 #[inline]
3287 unsafe fn encode(
3288 self,
3289 encoder: &mut fidl::encoding::Encoder<'_, D>,
3290 offset: usize,
3291 depth: fidl::encoding::Depth,
3292 ) -> fidl::Result<()> {
3293 encoder.debug_check_bounds::<VendorEncodeCommandResponse>(offset);
3294 self.0.encode(encoder, offset + 0, depth)?;
3298 Ok(())
3299 }
3300 }
3301
3302 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3303 for VendorEncodeCommandResponse
3304 {
3305 #[inline(always)]
3306 fn new_empty() -> Self {
3307 Self { encoded: fidl::new_empty!(fidl::encoding::Vector<u8, 16>, D) }
3308 }
3309
3310 #[inline]
3311 unsafe fn decode(
3312 &mut self,
3313 decoder: &mut fidl::encoding::Decoder<'_, D>,
3314 offset: usize,
3315 _depth: fidl::encoding::Depth,
3316 ) -> fidl::Result<()> {
3317 decoder.debug_check_bounds::<Self>(offset);
3318 fidl::decode!(fidl::encoding::Vector<u8, 16>, D, &mut self.encoded, decoder, offset + 0, _depth)?;
3320 Ok(())
3321 }
3322 }
3323
3324 impl fidl::encoding::ValueTypeMarker for VirtualControllerCreateEmulatorResponse {
3325 type Borrowed<'a> = &'a Self;
3326 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3327 value
3328 }
3329 }
3330
3331 unsafe impl fidl::encoding::TypeMarker for VirtualControllerCreateEmulatorResponse {
3332 type Owned = Self;
3333
3334 #[inline(always)]
3335 fn inline_align(_context: fidl::encoding::Context) -> usize {
3336 8
3337 }
3338
3339 #[inline(always)]
3340 fn inline_size(_context: fidl::encoding::Context) -> usize {
3341 16
3342 }
3343 }
3344
3345 unsafe impl<D: fidl::encoding::ResourceDialect>
3346 fidl::encoding::Encode<VirtualControllerCreateEmulatorResponse, D>
3347 for &VirtualControllerCreateEmulatorResponse
3348 {
3349 #[inline]
3350 unsafe fn encode(
3351 self,
3352 encoder: &mut fidl::encoding::Encoder<'_, D>,
3353 offset: usize,
3354 _depth: fidl::encoding::Depth,
3355 ) -> fidl::Result<()> {
3356 encoder.debug_check_bounds::<VirtualControllerCreateEmulatorResponse>(offset);
3357 fidl::encoding::Encode::<VirtualControllerCreateEmulatorResponse, D>::encode(
3359 (
3360 <fidl::encoding::Optional<fidl::encoding::BoundedString<32>> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
3361 ),
3362 encoder, offset, _depth
3363 )
3364 }
3365 }
3366 unsafe impl<
3367 D: fidl::encoding::ResourceDialect,
3368 T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::BoundedString<32>>, D>,
3369 > fidl::encoding::Encode<VirtualControllerCreateEmulatorResponse, D> for (T0,)
3370 {
3371 #[inline]
3372 unsafe fn encode(
3373 self,
3374 encoder: &mut fidl::encoding::Encoder<'_, D>,
3375 offset: usize,
3376 depth: fidl::encoding::Depth,
3377 ) -> fidl::Result<()> {
3378 encoder.debug_check_bounds::<VirtualControllerCreateEmulatorResponse>(offset);
3379 self.0.encode(encoder, offset + 0, depth)?;
3383 Ok(())
3384 }
3385 }
3386
3387 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3388 for VirtualControllerCreateEmulatorResponse
3389 {
3390 #[inline(always)]
3391 fn new_empty() -> Self {
3392 Self {
3393 name: fidl::new_empty!(
3394 fidl::encoding::Optional<fidl::encoding::BoundedString<32>>,
3395 D
3396 ),
3397 }
3398 }
3399
3400 #[inline]
3401 unsafe fn decode(
3402 &mut self,
3403 decoder: &mut fidl::encoding::Decoder<'_, D>,
3404 offset: usize,
3405 _depth: fidl::encoding::Depth,
3406 ) -> fidl::Result<()> {
3407 decoder.debug_check_bounds::<Self>(offset);
3408 fidl::decode!(
3410 fidl::encoding::Optional<fidl::encoding::BoundedString<32>>,
3411 D,
3412 &mut self.name,
3413 decoder,
3414 offset + 0,
3415 _depth
3416 )?;
3417 Ok(())
3418 }
3419 }
3420
3421 impl AclBufferSettings {
3422 #[inline(always)]
3423 fn max_ordinal_present(&self) -> u64 {
3424 if let Some(_) = self.total_num_data_packets {
3425 return 2;
3426 }
3427 if let Some(_) = self.data_packet_length {
3428 return 1;
3429 }
3430 0
3431 }
3432 }
3433
3434 impl fidl::encoding::ValueTypeMarker for AclBufferSettings {
3435 type Borrowed<'a> = &'a Self;
3436 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3437 value
3438 }
3439 }
3440
3441 unsafe impl fidl::encoding::TypeMarker for AclBufferSettings {
3442 type Owned = Self;
3443
3444 #[inline(always)]
3445 fn inline_align(_context: fidl::encoding::Context) -> usize {
3446 8
3447 }
3448
3449 #[inline(always)]
3450 fn inline_size(_context: fidl::encoding::Context) -> usize {
3451 16
3452 }
3453 }
3454
3455 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AclBufferSettings, D>
3456 for &AclBufferSettings
3457 {
3458 unsafe fn encode(
3459 self,
3460 encoder: &mut fidl::encoding::Encoder<'_, D>,
3461 offset: usize,
3462 mut depth: fidl::encoding::Depth,
3463 ) -> fidl::Result<()> {
3464 encoder.debug_check_bounds::<AclBufferSettings>(offset);
3465 let max_ordinal: u64 = self.max_ordinal_present();
3467 encoder.write_num(max_ordinal, offset);
3468 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3469 if max_ordinal == 0 {
3471 return Ok(());
3472 }
3473 depth.increment()?;
3474 let envelope_size = 8;
3475 let bytes_len = max_ordinal as usize * envelope_size;
3476 #[allow(unused_variables)]
3477 let offset = encoder.out_of_line_offset(bytes_len);
3478 let mut _prev_end_offset: usize = 0;
3479 if 1 > max_ordinal {
3480 return Ok(());
3481 }
3482
3483 let cur_offset: usize = (1 - 1) * envelope_size;
3486
3487 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3489
3490 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3495 self.data_packet_length
3496 .as_ref()
3497 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3498 encoder,
3499 offset + cur_offset,
3500 depth,
3501 )?;
3502
3503 _prev_end_offset = cur_offset + envelope_size;
3504 if 2 > max_ordinal {
3505 return Ok(());
3506 }
3507
3508 let cur_offset: usize = (2 - 1) * envelope_size;
3511
3512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3514
3515 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3520 self.total_num_data_packets
3521 .as_ref()
3522 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3523 encoder,
3524 offset + cur_offset,
3525 depth,
3526 )?;
3527
3528 _prev_end_offset = cur_offset + envelope_size;
3529
3530 Ok(())
3531 }
3532 }
3533
3534 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AclBufferSettings {
3535 #[inline(always)]
3536 fn new_empty() -> Self {
3537 Self::default()
3538 }
3539
3540 unsafe fn decode(
3541 &mut self,
3542 decoder: &mut fidl::encoding::Decoder<'_, D>,
3543 offset: usize,
3544 mut depth: fidl::encoding::Depth,
3545 ) -> fidl::Result<()> {
3546 decoder.debug_check_bounds::<Self>(offset);
3547 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3548 None => return Err(fidl::Error::NotNullable),
3549 Some(len) => len,
3550 };
3551 if len == 0 {
3553 return Ok(());
3554 };
3555 depth.increment()?;
3556 let envelope_size = 8;
3557 let bytes_len = len * envelope_size;
3558 let offset = decoder.out_of_line_offset(bytes_len)?;
3559 let mut _next_ordinal_to_read = 0;
3561 let mut next_offset = offset;
3562 let end_offset = offset + bytes_len;
3563 _next_ordinal_to_read += 1;
3564 if next_offset >= end_offset {
3565 return Ok(());
3566 }
3567
3568 while _next_ordinal_to_read < 1 {
3570 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3571 _next_ordinal_to_read += 1;
3572 next_offset += envelope_size;
3573 }
3574
3575 let next_out_of_line = decoder.next_out_of_line();
3576 let handles_before = decoder.remaining_handles();
3577 if let Some((inlined, num_bytes, num_handles)) =
3578 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3579 {
3580 let member_inline_size =
3581 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3582 if inlined != (member_inline_size <= 4) {
3583 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3584 }
3585 let inner_offset;
3586 let mut inner_depth = depth.clone();
3587 if inlined {
3588 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3589 inner_offset = next_offset;
3590 } else {
3591 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3592 inner_depth.increment()?;
3593 }
3594 let val_ref =
3595 self.data_packet_length.get_or_insert_with(|| fidl::new_empty!(u16, D));
3596 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
3597 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3598 {
3599 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3600 }
3601 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3602 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3603 }
3604 }
3605
3606 next_offset += envelope_size;
3607 _next_ordinal_to_read += 1;
3608 if next_offset >= end_offset {
3609 return Ok(());
3610 }
3611
3612 while _next_ordinal_to_read < 2 {
3614 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3615 _next_ordinal_to_read += 1;
3616 next_offset += envelope_size;
3617 }
3618
3619 let next_out_of_line = decoder.next_out_of_line();
3620 let handles_before = decoder.remaining_handles();
3621 if let Some((inlined, num_bytes, num_handles)) =
3622 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3623 {
3624 let member_inline_size =
3625 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3626 if inlined != (member_inline_size <= 4) {
3627 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3628 }
3629 let inner_offset;
3630 let mut inner_depth = depth.clone();
3631 if inlined {
3632 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3633 inner_offset = next_offset;
3634 } else {
3635 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3636 inner_depth.increment()?;
3637 }
3638 let val_ref =
3639 self.total_num_data_packets.get_or_insert_with(|| fidl::new_empty!(u8, D));
3640 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
3641 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3642 {
3643 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3644 }
3645 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3646 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3647 }
3648 }
3649
3650 next_offset += envelope_size;
3651
3652 while next_offset < end_offset {
3654 _next_ordinal_to_read += 1;
3655 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3656 next_offset += envelope_size;
3657 }
3658
3659 Ok(())
3660 }
3661 }
3662
3663 impl AdvertisingData {
3664 #[inline(always)]
3665 fn max_ordinal_present(&self) -> u64 {
3666 if let Some(_) = self.data {
3667 return 1;
3668 }
3669 0
3670 }
3671 }
3672
3673 impl fidl::encoding::ValueTypeMarker for AdvertisingData {
3674 type Borrowed<'a> = &'a Self;
3675 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3676 value
3677 }
3678 }
3679
3680 unsafe impl fidl::encoding::TypeMarker for AdvertisingData {
3681 type Owned = Self;
3682
3683 #[inline(always)]
3684 fn inline_align(_context: fidl::encoding::Context) -> usize {
3685 8
3686 }
3687
3688 #[inline(always)]
3689 fn inline_size(_context: fidl::encoding::Context) -> usize {
3690 16
3691 }
3692 }
3693
3694 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AdvertisingData, D>
3695 for &AdvertisingData
3696 {
3697 unsafe fn encode(
3698 self,
3699 encoder: &mut fidl::encoding::Encoder<'_, D>,
3700 offset: usize,
3701 mut depth: fidl::encoding::Depth,
3702 ) -> fidl::Result<()> {
3703 encoder.debug_check_bounds::<AdvertisingData>(offset);
3704 let max_ordinal: u64 = self.max_ordinal_present();
3706 encoder.write_num(max_ordinal, offset);
3707 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3708 if max_ordinal == 0 {
3710 return Ok(());
3711 }
3712 depth.increment()?;
3713 let envelope_size = 8;
3714 let bytes_len = max_ordinal as usize * envelope_size;
3715 #[allow(unused_variables)]
3716 let offset = encoder.out_of_line_offset(bytes_len);
3717 let mut _prev_end_offset: usize = 0;
3718 if 1 > max_ordinal {
3719 return Ok(());
3720 }
3721
3722 let cur_offset: usize = (1 - 1) * envelope_size;
3725
3726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3728
3729 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 31>, D>(
3734 self.data.as_ref().map(
3735 <fidl::encoding::Vector<u8, 31> as fidl::encoding::ValueTypeMarker>::borrow,
3736 ),
3737 encoder,
3738 offset + cur_offset,
3739 depth,
3740 )?;
3741
3742 _prev_end_offset = cur_offset + envelope_size;
3743
3744 Ok(())
3745 }
3746 }
3747
3748 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AdvertisingData {
3749 #[inline(always)]
3750 fn new_empty() -> Self {
3751 Self::default()
3752 }
3753
3754 unsafe fn decode(
3755 &mut self,
3756 decoder: &mut fidl::encoding::Decoder<'_, D>,
3757 offset: usize,
3758 mut depth: fidl::encoding::Depth,
3759 ) -> fidl::Result<()> {
3760 decoder.debug_check_bounds::<Self>(offset);
3761 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3762 None => return Err(fidl::Error::NotNullable),
3763 Some(len) => len,
3764 };
3765 if len == 0 {
3767 return Ok(());
3768 };
3769 depth.increment()?;
3770 let envelope_size = 8;
3771 let bytes_len = len * envelope_size;
3772 let offset = decoder.out_of_line_offset(bytes_len)?;
3773 let mut _next_ordinal_to_read = 0;
3775 let mut next_offset = offset;
3776 let end_offset = offset + bytes_len;
3777 _next_ordinal_to_read += 1;
3778 if next_offset >= end_offset {
3779 return Ok(());
3780 }
3781
3782 while _next_ordinal_to_read < 1 {
3784 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3785 _next_ordinal_to_read += 1;
3786 next_offset += envelope_size;
3787 }
3788
3789 let next_out_of_line = decoder.next_out_of_line();
3790 let handles_before = decoder.remaining_handles();
3791 if let Some((inlined, num_bytes, num_handles)) =
3792 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3793 {
3794 let member_inline_size =
3795 <fidl::encoding::Vector<u8, 31> as fidl::encoding::TypeMarker>::inline_size(
3796 decoder.context,
3797 );
3798 if inlined != (member_inline_size <= 4) {
3799 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3800 }
3801 let inner_offset;
3802 let mut inner_depth = depth.clone();
3803 if inlined {
3804 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3805 inner_offset = next_offset;
3806 } else {
3807 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3808 inner_depth.increment()?;
3809 }
3810 let val_ref = self
3811 .data
3812 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 31>, D));
3813 fidl::decode!(fidl::encoding::Vector<u8, 31>, D, val_ref, decoder, inner_offset, inner_depth)?;
3814 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3815 {
3816 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3817 }
3818 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3819 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3820 }
3821 }
3822
3823 next_offset += envelope_size;
3824
3825 while next_offset < end_offset {
3827 _next_ordinal_to_read += 1;
3828 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3829 next_offset += envelope_size;
3830 }
3831
3832 Ok(())
3833 }
3834 }
3835
3836 impl AndroidVendorSupport {
3837 #[inline(always)]
3838 fn max_ordinal_present(&self) -> u64 {
3839 if let Some(_) = self.minor_version {
3840 return 2;
3841 }
3842 if let Some(_) = self.major_version {
3843 return 1;
3844 }
3845 0
3846 }
3847 }
3848
3849 impl fidl::encoding::ValueTypeMarker for AndroidVendorSupport {
3850 type Borrowed<'a> = &'a Self;
3851 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3852 value
3853 }
3854 }
3855
3856 unsafe impl fidl::encoding::TypeMarker for AndroidVendorSupport {
3857 type Owned = Self;
3858
3859 #[inline(always)]
3860 fn inline_align(_context: fidl::encoding::Context) -> usize {
3861 8
3862 }
3863
3864 #[inline(always)]
3865 fn inline_size(_context: fidl::encoding::Context) -> usize {
3866 16
3867 }
3868 }
3869
3870 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AndroidVendorSupport, D>
3871 for &AndroidVendorSupport
3872 {
3873 unsafe fn encode(
3874 self,
3875 encoder: &mut fidl::encoding::Encoder<'_, D>,
3876 offset: usize,
3877 mut depth: fidl::encoding::Depth,
3878 ) -> fidl::Result<()> {
3879 encoder.debug_check_bounds::<AndroidVendorSupport>(offset);
3880 let max_ordinal: u64 = self.max_ordinal_present();
3882 encoder.write_num(max_ordinal, offset);
3883 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3884 if max_ordinal == 0 {
3886 return Ok(());
3887 }
3888 depth.increment()?;
3889 let envelope_size = 8;
3890 let bytes_len = max_ordinal as usize * envelope_size;
3891 #[allow(unused_variables)]
3892 let offset = encoder.out_of_line_offset(bytes_len);
3893 let mut _prev_end_offset: usize = 0;
3894 if 1 > max_ordinal {
3895 return Ok(());
3896 }
3897
3898 let cur_offset: usize = (1 - 1) * envelope_size;
3901
3902 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3904
3905 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3910 self.major_version.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3911 encoder,
3912 offset + cur_offset,
3913 depth,
3914 )?;
3915
3916 _prev_end_offset = cur_offset + envelope_size;
3917 if 2 > max_ordinal {
3918 return Ok(());
3919 }
3920
3921 let cur_offset: usize = (2 - 1) * envelope_size;
3924
3925 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3927
3928 fidl::encoding::encode_in_envelope_optional::<u8, D>(
3933 self.minor_version.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
3934 encoder,
3935 offset + cur_offset,
3936 depth,
3937 )?;
3938
3939 _prev_end_offset = cur_offset + envelope_size;
3940
3941 Ok(())
3942 }
3943 }
3944
3945 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AndroidVendorSupport {
3946 #[inline(always)]
3947 fn new_empty() -> Self {
3948 Self::default()
3949 }
3950
3951 unsafe fn decode(
3952 &mut self,
3953 decoder: &mut fidl::encoding::Decoder<'_, D>,
3954 offset: usize,
3955 mut depth: fidl::encoding::Depth,
3956 ) -> fidl::Result<()> {
3957 decoder.debug_check_bounds::<Self>(offset);
3958 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3959 None => return Err(fidl::Error::NotNullable),
3960 Some(len) => len,
3961 };
3962 if len == 0 {
3964 return Ok(());
3965 };
3966 depth.increment()?;
3967 let envelope_size = 8;
3968 let bytes_len = len * envelope_size;
3969 let offset = decoder.out_of_line_offset(bytes_len)?;
3970 let mut _next_ordinal_to_read = 0;
3972 let mut next_offset = offset;
3973 let end_offset = offset + bytes_len;
3974 _next_ordinal_to_read += 1;
3975 if next_offset >= end_offset {
3976 return Ok(());
3977 }
3978
3979 while _next_ordinal_to_read < 1 {
3981 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3982 _next_ordinal_to_read += 1;
3983 next_offset += envelope_size;
3984 }
3985
3986 let next_out_of_line = decoder.next_out_of_line();
3987 let handles_before = decoder.remaining_handles();
3988 if let Some((inlined, num_bytes, num_handles)) =
3989 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3990 {
3991 let member_inline_size =
3992 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3993 if inlined != (member_inline_size <= 4) {
3994 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3995 }
3996 let inner_offset;
3997 let mut inner_depth = depth.clone();
3998 if inlined {
3999 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4000 inner_offset = next_offset;
4001 } else {
4002 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4003 inner_depth.increment()?;
4004 }
4005 let val_ref = self.major_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4006 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4007 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4008 {
4009 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4010 }
4011 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4012 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4013 }
4014 }
4015
4016 next_offset += envelope_size;
4017 _next_ordinal_to_read += 1;
4018 if next_offset >= end_offset {
4019 return Ok(());
4020 }
4021
4022 while _next_ordinal_to_read < 2 {
4024 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4025 _next_ordinal_to_read += 1;
4026 next_offset += envelope_size;
4027 }
4028
4029 let next_out_of_line = decoder.next_out_of_line();
4030 let handles_before = decoder.remaining_handles();
4031 if let Some((inlined, num_bytes, num_handles)) =
4032 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4033 {
4034 let member_inline_size =
4035 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4036 if inlined != (member_inline_size <= 4) {
4037 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4038 }
4039 let inner_offset;
4040 let mut inner_depth = depth.clone();
4041 if inlined {
4042 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4043 inner_offset = next_offset;
4044 } else {
4045 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4046 inner_depth.increment()?;
4047 }
4048 let val_ref = self.minor_version.get_or_insert_with(|| fidl::new_empty!(u8, D));
4049 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4050 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4051 {
4052 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4053 }
4054 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4055 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4056 }
4057 }
4058
4059 next_offset += envelope_size;
4060
4061 while next_offset < end_offset {
4063 _next_ordinal_to_read += 1;
4064 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4065 next_offset += envelope_size;
4066 }
4067
4068 Ok(())
4069 }
4070 }
4071
4072 impl AudioOffloadSettings {
4073 #[inline(always)]
4074 fn max_ordinal_present(&self) -> u64 {
4075 if let Some(_) = self.sco_offload_index {
4076 return 1;
4077 }
4078 0
4079 }
4080 }
4081
4082 impl fidl::encoding::ValueTypeMarker for AudioOffloadSettings {
4083 type Borrowed<'a> = &'a Self;
4084 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4085 value
4086 }
4087 }
4088
4089 unsafe impl fidl::encoding::TypeMarker for AudioOffloadSettings {
4090 type Owned = Self;
4091
4092 #[inline(always)]
4093 fn inline_align(_context: fidl::encoding::Context) -> usize {
4094 8
4095 }
4096
4097 #[inline(always)]
4098 fn inline_size(_context: fidl::encoding::Context) -> usize {
4099 16
4100 }
4101 }
4102
4103 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<AudioOffloadSettings, D>
4104 for &AudioOffloadSettings
4105 {
4106 unsafe fn encode(
4107 self,
4108 encoder: &mut fidl::encoding::Encoder<'_, D>,
4109 offset: usize,
4110 mut depth: fidl::encoding::Depth,
4111 ) -> fidl::Result<()> {
4112 encoder.debug_check_bounds::<AudioOffloadSettings>(offset);
4113 let max_ordinal: u64 = self.max_ordinal_present();
4115 encoder.write_num(max_ordinal, offset);
4116 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4117 if max_ordinal == 0 {
4119 return Ok(());
4120 }
4121 depth.increment()?;
4122 let envelope_size = 8;
4123 let bytes_len = max_ordinal as usize * envelope_size;
4124 #[allow(unused_variables)]
4125 let offset = encoder.out_of_line_offset(bytes_len);
4126 let mut _prev_end_offset: usize = 0;
4127 if 1 > max_ordinal {
4128 return Ok(());
4129 }
4130
4131 let cur_offset: usize = (1 - 1) * envelope_size;
4134
4135 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4137
4138 fidl::encoding::encode_in_envelope_optional::<u8, D>(
4143 self.sco_offload_index
4144 .as_ref()
4145 .map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
4146 encoder,
4147 offset + cur_offset,
4148 depth,
4149 )?;
4150
4151 _prev_end_offset = cur_offset + envelope_size;
4152
4153 Ok(())
4154 }
4155 }
4156
4157 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for AudioOffloadSettings {
4158 #[inline(always)]
4159 fn new_empty() -> Self {
4160 Self::default()
4161 }
4162
4163 unsafe fn decode(
4164 &mut self,
4165 decoder: &mut fidl::encoding::Decoder<'_, D>,
4166 offset: usize,
4167 mut depth: fidl::encoding::Depth,
4168 ) -> fidl::Result<()> {
4169 decoder.debug_check_bounds::<Self>(offset);
4170 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4171 None => return Err(fidl::Error::NotNullable),
4172 Some(len) => len,
4173 };
4174 if len == 0 {
4176 return Ok(());
4177 };
4178 depth.increment()?;
4179 let envelope_size = 8;
4180 let bytes_len = len * envelope_size;
4181 let offset = decoder.out_of_line_offset(bytes_len)?;
4182 let mut _next_ordinal_to_read = 0;
4184 let mut next_offset = offset;
4185 let end_offset = offset + bytes_len;
4186 _next_ordinal_to_read += 1;
4187 if next_offset >= end_offset {
4188 return Ok(());
4189 }
4190
4191 while _next_ordinal_to_read < 1 {
4193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4194 _next_ordinal_to_read += 1;
4195 next_offset += envelope_size;
4196 }
4197
4198 let next_out_of_line = decoder.next_out_of_line();
4199 let handles_before = decoder.remaining_handles();
4200 if let Some((inlined, num_bytes, num_handles)) =
4201 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4202 {
4203 let member_inline_size =
4204 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4205 if inlined != (member_inline_size <= 4) {
4206 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4207 }
4208 let inner_offset;
4209 let mut inner_depth = depth.clone();
4210 if inlined {
4211 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4212 inner_offset = next_offset;
4213 } else {
4214 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4215 inner_depth.increment()?;
4216 }
4217 let val_ref = self.sco_offload_index.get_or_insert_with(|| fidl::new_empty!(u8, D));
4218 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
4219 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4220 {
4221 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4222 }
4223 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4224 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4225 }
4226 }
4227
4228 next_offset += envelope_size;
4229
4230 while next_offset < end_offset {
4232 _next_ordinal_to_read += 1;
4233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4234 next_offset += envelope_size;
4235 }
4236
4237 Ok(())
4238 }
4239 }
4240
4241 impl ControllerParameters {
4242 #[inline(always)]
4243 fn max_ordinal_present(&self) -> u64 {
4244 if let Some(_) = self.device_class {
4245 return 2;
4246 }
4247 if let Some(_) = self.local_name {
4248 return 1;
4249 }
4250 0
4251 }
4252 }
4253
4254 impl fidl::encoding::ValueTypeMarker for ControllerParameters {
4255 type Borrowed<'a> = &'a Self;
4256 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4257 value
4258 }
4259 }
4260
4261 unsafe impl fidl::encoding::TypeMarker for ControllerParameters {
4262 type Owned = Self;
4263
4264 #[inline(always)]
4265 fn inline_align(_context: fidl::encoding::Context) -> usize {
4266 8
4267 }
4268
4269 #[inline(always)]
4270 fn inline_size(_context: fidl::encoding::Context) -> usize {
4271 16
4272 }
4273 }
4274
4275 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ControllerParameters, D>
4276 for &ControllerParameters
4277 {
4278 unsafe fn encode(
4279 self,
4280 encoder: &mut fidl::encoding::Encoder<'_, D>,
4281 offset: usize,
4282 mut depth: fidl::encoding::Depth,
4283 ) -> fidl::Result<()> {
4284 encoder.debug_check_bounds::<ControllerParameters>(offset);
4285 let max_ordinal: u64 = self.max_ordinal_present();
4287 encoder.write_num(max_ordinal, offset);
4288 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4289 if max_ordinal == 0 {
4291 return Ok(());
4292 }
4293 depth.increment()?;
4294 let envelope_size = 8;
4295 let bytes_len = max_ordinal as usize * envelope_size;
4296 #[allow(unused_variables)]
4297 let offset = encoder.out_of_line_offset(bytes_len);
4298 let mut _prev_end_offset: usize = 0;
4299 if 1 > max_ordinal {
4300 return Ok(());
4301 }
4302
4303 let cur_offset: usize = (1 - 1) * envelope_size;
4306
4307 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4309
4310 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<248>, D>(
4315 self.local_name.as_ref().map(
4316 <fidl::encoding::BoundedString<248> as fidl::encoding::ValueTypeMarker>::borrow,
4317 ),
4318 encoder,
4319 offset + cur_offset,
4320 depth,
4321 )?;
4322
4323 _prev_end_offset = cur_offset + envelope_size;
4324 if 2 > max_ordinal {
4325 return Ok(());
4326 }
4327
4328 let cur_offset: usize = (2 - 1) * envelope_size;
4331
4332 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4334
4335 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::DeviceClass, D>(
4340 self.device_class.as_ref().map(<fidl_fuchsia_bluetooth__common::DeviceClass as fidl::encoding::ValueTypeMarker>::borrow),
4341 encoder, offset + cur_offset, depth
4342 )?;
4343
4344 _prev_end_offset = cur_offset + envelope_size;
4345
4346 Ok(())
4347 }
4348 }
4349
4350 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ControllerParameters {
4351 #[inline(always)]
4352 fn new_empty() -> Self {
4353 Self::default()
4354 }
4355
4356 unsafe fn decode(
4357 &mut self,
4358 decoder: &mut fidl::encoding::Decoder<'_, D>,
4359 offset: usize,
4360 mut depth: fidl::encoding::Depth,
4361 ) -> fidl::Result<()> {
4362 decoder.debug_check_bounds::<Self>(offset);
4363 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4364 None => return Err(fidl::Error::NotNullable),
4365 Some(len) => len,
4366 };
4367 if len == 0 {
4369 return Ok(());
4370 };
4371 depth.increment()?;
4372 let envelope_size = 8;
4373 let bytes_len = len * envelope_size;
4374 let offset = decoder.out_of_line_offset(bytes_len)?;
4375 let mut _next_ordinal_to_read = 0;
4377 let mut next_offset = offset;
4378 let end_offset = offset + bytes_len;
4379 _next_ordinal_to_read += 1;
4380 if next_offset >= end_offset {
4381 return Ok(());
4382 }
4383
4384 while _next_ordinal_to_read < 1 {
4386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4387 _next_ordinal_to_read += 1;
4388 next_offset += envelope_size;
4389 }
4390
4391 let next_out_of_line = decoder.next_out_of_line();
4392 let handles_before = decoder.remaining_handles();
4393 if let Some((inlined, num_bytes, num_handles)) =
4394 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4395 {
4396 let member_inline_size =
4397 <fidl::encoding::BoundedString<248> as fidl::encoding::TypeMarker>::inline_size(
4398 decoder.context,
4399 );
4400 if inlined != (member_inline_size <= 4) {
4401 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4402 }
4403 let inner_offset;
4404 let mut inner_depth = depth.clone();
4405 if inlined {
4406 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4407 inner_offset = next_offset;
4408 } else {
4409 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4410 inner_depth.increment()?;
4411 }
4412 let val_ref = self
4413 .local_name
4414 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<248>, D));
4415 fidl::decode!(
4416 fidl::encoding::BoundedString<248>,
4417 D,
4418 val_ref,
4419 decoder,
4420 inner_offset,
4421 inner_depth
4422 )?;
4423 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4424 {
4425 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4426 }
4427 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4428 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4429 }
4430 }
4431
4432 next_offset += envelope_size;
4433 _next_ordinal_to_read += 1;
4434 if next_offset >= end_offset {
4435 return Ok(());
4436 }
4437
4438 while _next_ordinal_to_read < 2 {
4440 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4441 _next_ordinal_to_read += 1;
4442 next_offset += envelope_size;
4443 }
4444
4445 let next_out_of_line = decoder.next_out_of_line();
4446 let handles_before = decoder.remaining_handles();
4447 if let Some((inlined, num_bytes, num_handles)) =
4448 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4449 {
4450 let member_inline_size = <fidl_fuchsia_bluetooth__common::DeviceClass as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4451 if inlined != (member_inline_size <= 4) {
4452 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4453 }
4454 let inner_offset;
4455 let mut inner_depth = depth.clone();
4456 if inlined {
4457 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4458 inner_offset = next_offset;
4459 } else {
4460 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4461 inner_depth.increment()?;
4462 }
4463 let val_ref = self.device_class.get_or_insert_with(|| {
4464 fidl::new_empty!(fidl_fuchsia_bluetooth__common::DeviceClass, D)
4465 });
4466 fidl::decode!(
4467 fidl_fuchsia_bluetooth__common::DeviceClass,
4468 D,
4469 val_ref,
4470 decoder,
4471 inner_offset,
4472 inner_depth
4473 )?;
4474 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4475 {
4476 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4477 }
4478 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4479 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4480 }
4481 }
4482
4483 next_offset += envelope_size;
4484
4485 while next_offset < end_offset {
4487 _next_ordinal_to_read += 1;
4488 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4489 next_offset += envelope_size;
4490 }
4491
4492 Ok(())
4493 }
4494 }
4495
4496 impl EmulatorSettings {
4497 #[inline(always)]
4498 fn max_ordinal_present(&self) -> u64 {
4499 if let Some(_) = self.le_acl_buffer_settings {
4500 return 5;
4501 }
4502 if let Some(_) = self.acl_buffer_settings {
4503 return 4;
4504 }
4505 if let Some(_) = self.extended_advertising {
4506 return 3;
4507 }
4508 if let Some(_) = self.hci_config {
4509 return 2;
4510 }
4511 if let Some(_) = self.address {
4512 return 1;
4513 }
4514 0
4515 }
4516 }
4517
4518 impl fidl::encoding::ValueTypeMarker for EmulatorSettings {
4519 type Borrowed<'a> = &'a Self;
4520 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4521 value
4522 }
4523 }
4524
4525 unsafe impl fidl::encoding::TypeMarker for EmulatorSettings {
4526 type Owned = Self;
4527
4528 #[inline(always)]
4529 fn inline_align(_context: fidl::encoding::Context) -> usize {
4530 8
4531 }
4532
4533 #[inline(always)]
4534 fn inline_size(_context: fidl::encoding::Context) -> usize {
4535 16
4536 }
4537 }
4538
4539 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EmulatorSettings, D>
4540 for &EmulatorSettings
4541 {
4542 unsafe fn encode(
4543 self,
4544 encoder: &mut fidl::encoding::Encoder<'_, D>,
4545 offset: usize,
4546 mut depth: fidl::encoding::Depth,
4547 ) -> fidl::Result<()> {
4548 encoder.debug_check_bounds::<EmulatorSettings>(offset);
4549 let max_ordinal: u64 = self.max_ordinal_present();
4551 encoder.write_num(max_ordinal, offset);
4552 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4553 if max_ordinal == 0 {
4555 return Ok(());
4556 }
4557 depth.increment()?;
4558 let envelope_size = 8;
4559 let bytes_len = max_ordinal as usize * envelope_size;
4560 #[allow(unused_variables)]
4561 let offset = encoder.out_of_line_offset(bytes_len);
4562 let mut _prev_end_offset: usize = 0;
4563 if 1 > max_ordinal {
4564 return Ok(());
4565 }
4566
4567 let cur_offset: usize = (1 - 1) * envelope_size;
4570
4571 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4573
4574 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Address, D>(
4579 self.address.as_ref().map(<fidl_fuchsia_bluetooth__common::Address as fidl::encoding::ValueTypeMarker>::borrow),
4580 encoder, offset + cur_offset, depth
4581 )?;
4582
4583 _prev_end_offset = cur_offset + envelope_size;
4584 if 2 > max_ordinal {
4585 return Ok(());
4586 }
4587
4588 let cur_offset: usize = (2 - 1) * envelope_size;
4591
4592 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4594
4595 fidl::encoding::encode_in_envelope_optional::<HciConfig, D>(
4600 self.hci_config
4601 .as_ref()
4602 .map(<HciConfig as fidl::encoding::ValueTypeMarker>::borrow),
4603 encoder,
4604 offset + cur_offset,
4605 depth,
4606 )?;
4607
4608 _prev_end_offset = cur_offset + envelope_size;
4609 if 3 > max_ordinal {
4610 return Ok(());
4611 }
4612
4613 let cur_offset: usize = (3 - 1) * envelope_size;
4616
4617 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4619
4620 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4625 self.extended_advertising
4626 .as_ref()
4627 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4628 encoder,
4629 offset + cur_offset,
4630 depth,
4631 )?;
4632
4633 _prev_end_offset = cur_offset + envelope_size;
4634 if 4 > max_ordinal {
4635 return Ok(());
4636 }
4637
4638 let cur_offset: usize = (4 - 1) * envelope_size;
4641
4642 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4644
4645 fidl::encoding::encode_in_envelope_optional::<AclBufferSettings, D>(
4650 self.acl_buffer_settings
4651 .as_ref()
4652 .map(<AclBufferSettings as fidl::encoding::ValueTypeMarker>::borrow),
4653 encoder,
4654 offset + cur_offset,
4655 depth,
4656 )?;
4657
4658 _prev_end_offset = cur_offset + envelope_size;
4659 if 5 > max_ordinal {
4660 return Ok(());
4661 }
4662
4663 let cur_offset: usize = (5 - 1) * envelope_size;
4666
4667 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4669
4670 fidl::encoding::encode_in_envelope_optional::<AclBufferSettings, D>(
4675 self.le_acl_buffer_settings
4676 .as_ref()
4677 .map(<AclBufferSettings as fidl::encoding::ValueTypeMarker>::borrow),
4678 encoder,
4679 offset + cur_offset,
4680 depth,
4681 )?;
4682
4683 _prev_end_offset = cur_offset + envelope_size;
4684
4685 Ok(())
4686 }
4687 }
4688
4689 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EmulatorSettings {
4690 #[inline(always)]
4691 fn new_empty() -> Self {
4692 Self::default()
4693 }
4694
4695 unsafe fn decode(
4696 &mut self,
4697 decoder: &mut fidl::encoding::Decoder<'_, D>,
4698 offset: usize,
4699 mut depth: fidl::encoding::Depth,
4700 ) -> fidl::Result<()> {
4701 decoder.debug_check_bounds::<Self>(offset);
4702 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4703 None => return Err(fidl::Error::NotNullable),
4704 Some(len) => len,
4705 };
4706 if len == 0 {
4708 return Ok(());
4709 };
4710 depth.increment()?;
4711 let envelope_size = 8;
4712 let bytes_len = len * envelope_size;
4713 let offset = decoder.out_of_line_offset(bytes_len)?;
4714 let mut _next_ordinal_to_read = 0;
4716 let mut next_offset = offset;
4717 let end_offset = offset + bytes_len;
4718 _next_ordinal_to_read += 1;
4719 if next_offset >= end_offset {
4720 return Ok(());
4721 }
4722
4723 while _next_ordinal_to_read < 1 {
4725 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4726 _next_ordinal_to_read += 1;
4727 next_offset += envelope_size;
4728 }
4729
4730 let next_out_of_line = decoder.next_out_of_line();
4731 let handles_before = decoder.remaining_handles();
4732 if let Some((inlined, num_bytes, num_handles)) =
4733 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4734 {
4735 let member_inline_size = <fidl_fuchsia_bluetooth__common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4736 if inlined != (member_inline_size <= 4) {
4737 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4738 }
4739 let inner_offset;
4740 let mut inner_depth = depth.clone();
4741 if inlined {
4742 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4743 inner_offset = next_offset;
4744 } else {
4745 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4746 inner_depth.increment()?;
4747 }
4748 let val_ref = self.address.get_or_insert_with(|| {
4749 fidl::new_empty!(fidl_fuchsia_bluetooth__common::Address, D)
4750 });
4751 fidl::decode!(
4752 fidl_fuchsia_bluetooth__common::Address,
4753 D,
4754 val_ref,
4755 decoder,
4756 inner_offset,
4757 inner_depth
4758 )?;
4759 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4760 {
4761 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4762 }
4763 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4764 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4765 }
4766 }
4767
4768 next_offset += envelope_size;
4769 _next_ordinal_to_read += 1;
4770 if next_offset >= end_offset {
4771 return Ok(());
4772 }
4773
4774 while _next_ordinal_to_read < 2 {
4776 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4777 _next_ordinal_to_read += 1;
4778 next_offset += envelope_size;
4779 }
4780
4781 let next_out_of_line = decoder.next_out_of_line();
4782 let handles_before = decoder.remaining_handles();
4783 if let Some((inlined, num_bytes, num_handles)) =
4784 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4785 {
4786 let member_inline_size =
4787 <HciConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4788 if inlined != (member_inline_size <= 4) {
4789 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4790 }
4791 let inner_offset;
4792 let mut inner_depth = depth.clone();
4793 if inlined {
4794 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4795 inner_offset = next_offset;
4796 } else {
4797 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4798 inner_depth.increment()?;
4799 }
4800 let val_ref = self.hci_config.get_or_insert_with(|| fidl::new_empty!(HciConfig, D));
4801 fidl::decode!(HciConfig, D, val_ref, decoder, inner_offset, inner_depth)?;
4802 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4803 {
4804 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4805 }
4806 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4807 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4808 }
4809 }
4810
4811 next_offset += envelope_size;
4812 _next_ordinal_to_read += 1;
4813 if next_offset >= end_offset {
4814 return Ok(());
4815 }
4816
4817 while _next_ordinal_to_read < 3 {
4819 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4820 _next_ordinal_to_read += 1;
4821 next_offset += envelope_size;
4822 }
4823
4824 let next_out_of_line = decoder.next_out_of_line();
4825 let handles_before = decoder.remaining_handles();
4826 if let Some((inlined, num_bytes, num_handles)) =
4827 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4828 {
4829 let member_inline_size =
4830 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4831 if inlined != (member_inline_size <= 4) {
4832 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4833 }
4834 let inner_offset;
4835 let mut inner_depth = depth.clone();
4836 if inlined {
4837 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4838 inner_offset = next_offset;
4839 } else {
4840 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4841 inner_depth.increment()?;
4842 }
4843 let val_ref =
4844 self.extended_advertising.get_or_insert_with(|| fidl::new_empty!(bool, D));
4845 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4846 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4847 {
4848 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4849 }
4850 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4851 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4852 }
4853 }
4854
4855 next_offset += envelope_size;
4856 _next_ordinal_to_read += 1;
4857 if next_offset >= end_offset {
4858 return Ok(());
4859 }
4860
4861 while _next_ordinal_to_read < 4 {
4863 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4864 _next_ordinal_to_read += 1;
4865 next_offset += envelope_size;
4866 }
4867
4868 let next_out_of_line = decoder.next_out_of_line();
4869 let handles_before = decoder.remaining_handles();
4870 if let Some((inlined, num_bytes, num_handles)) =
4871 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4872 {
4873 let member_inline_size =
4874 <AclBufferSettings as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4875 if inlined != (member_inline_size <= 4) {
4876 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4877 }
4878 let inner_offset;
4879 let mut inner_depth = depth.clone();
4880 if inlined {
4881 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4882 inner_offset = next_offset;
4883 } else {
4884 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4885 inner_depth.increment()?;
4886 }
4887 let val_ref = self
4888 .acl_buffer_settings
4889 .get_or_insert_with(|| fidl::new_empty!(AclBufferSettings, D));
4890 fidl::decode!(AclBufferSettings, D, val_ref, decoder, inner_offset, inner_depth)?;
4891 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4892 {
4893 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4894 }
4895 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4896 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4897 }
4898 }
4899
4900 next_offset += envelope_size;
4901 _next_ordinal_to_read += 1;
4902 if next_offset >= end_offset {
4903 return Ok(());
4904 }
4905
4906 while _next_ordinal_to_read < 5 {
4908 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4909 _next_ordinal_to_read += 1;
4910 next_offset += envelope_size;
4911 }
4912
4913 let next_out_of_line = decoder.next_out_of_line();
4914 let handles_before = decoder.remaining_handles();
4915 if let Some((inlined, num_bytes, num_handles)) =
4916 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4917 {
4918 let member_inline_size =
4919 <AclBufferSettings as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4920 if inlined != (member_inline_size <= 4) {
4921 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4922 }
4923 let inner_offset;
4924 let mut inner_depth = depth.clone();
4925 if inlined {
4926 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4927 inner_offset = next_offset;
4928 } else {
4929 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4930 inner_depth.increment()?;
4931 }
4932 let val_ref = self
4933 .le_acl_buffer_settings
4934 .get_or_insert_with(|| fidl::new_empty!(AclBufferSettings, D));
4935 fidl::decode!(AclBufferSettings, D, val_ref, decoder, inner_offset, inner_depth)?;
4936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4937 {
4938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4939 }
4940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4942 }
4943 }
4944
4945 next_offset += envelope_size;
4946
4947 while next_offset < end_offset {
4949 _next_ordinal_to_read += 1;
4950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4951 next_offset += envelope_size;
4952 }
4953
4954 Ok(())
4955 }
4956 }
4957
4958 impl LeScanState {
4959 #[inline(always)]
4960 fn max_ordinal_present(&self) -> u64 {
4961 if let Some(_) = self.address_type {
4962 return 6;
4963 }
4964 if let Some(_) = self.filter_duplicates {
4965 return 5;
4966 }
4967 if let Some(_) = self.window {
4968 return 4;
4969 }
4970 if let Some(_) = self.interval {
4971 return 3;
4972 }
4973 if let Some(_) = self.active {
4974 return 2;
4975 }
4976 if let Some(_) = self.enabled {
4977 return 1;
4978 }
4979 0
4980 }
4981 }
4982
4983 impl fidl::encoding::ValueTypeMarker for LeScanState {
4984 type Borrowed<'a> = &'a Self;
4985 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4986 value
4987 }
4988 }
4989
4990 unsafe impl fidl::encoding::TypeMarker for LeScanState {
4991 type Owned = Self;
4992
4993 #[inline(always)]
4994 fn inline_align(_context: fidl::encoding::Context) -> usize {
4995 8
4996 }
4997
4998 #[inline(always)]
4999 fn inline_size(_context: fidl::encoding::Context) -> usize {
5000 16
5001 }
5002 }
5003
5004 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<LeScanState, D>
5005 for &LeScanState
5006 {
5007 unsafe fn encode(
5008 self,
5009 encoder: &mut fidl::encoding::Encoder<'_, D>,
5010 offset: usize,
5011 mut depth: fidl::encoding::Depth,
5012 ) -> fidl::Result<()> {
5013 encoder.debug_check_bounds::<LeScanState>(offset);
5014 let max_ordinal: u64 = self.max_ordinal_present();
5016 encoder.write_num(max_ordinal, offset);
5017 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5018 if max_ordinal == 0 {
5020 return Ok(());
5021 }
5022 depth.increment()?;
5023 let envelope_size = 8;
5024 let bytes_len = max_ordinal as usize * envelope_size;
5025 #[allow(unused_variables)]
5026 let offset = encoder.out_of_line_offset(bytes_len);
5027 let mut _prev_end_offset: usize = 0;
5028 if 1 > max_ordinal {
5029 return Ok(());
5030 }
5031
5032 let cur_offset: usize = (1 - 1) * envelope_size;
5035
5036 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5038
5039 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5044 self.enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5045 encoder,
5046 offset + cur_offset,
5047 depth,
5048 )?;
5049
5050 _prev_end_offset = cur_offset + envelope_size;
5051 if 2 > max_ordinal {
5052 return Ok(());
5053 }
5054
5055 let cur_offset: usize = (2 - 1) * envelope_size;
5058
5059 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5061
5062 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5067 self.active.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5068 encoder,
5069 offset + cur_offset,
5070 depth,
5071 )?;
5072
5073 _prev_end_offset = cur_offset + envelope_size;
5074 if 3 > max_ordinal {
5075 return Ok(());
5076 }
5077
5078 let cur_offset: usize = (3 - 1) * envelope_size;
5081
5082 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5084
5085 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5090 self.interval.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5091 encoder,
5092 offset + cur_offset,
5093 depth,
5094 )?;
5095
5096 _prev_end_offset = cur_offset + envelope_size;
5097 if 4 > max_ordinal {
5098 return Ok(());
5099 }
5100
5101 let cur_offset: usize = (4 - 1) * envelope_size;
5104
5105 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5107
5108 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5113 self.window.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5114 encoder,
5115 offset + cur_offset,
5116 depth,
5117 )?;
5118
5119 _prev_end_offset = cur_offset + envelope_size;
5120 if 5 > max_ordinal {
5121 return Ok(());
5122 }
5123
5124 let cur_offset: usize = (5 - 1) * envelope_size;
5127
5128 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5130
5131 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5136 self.filter_duplicates
5137 .as_ref()
5138 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5139 encoder,
5140 offset + cur_offset,
5141 depth,
5142 )?;
5143
5144 _prev_end_offset = cur_offset + envelope_size;
5145 if 6 > max_ordinal {
5146 return Ok(());
5147 }
5148
5149 let cur_offset: usize = (6 - 1) * envelope_size;
5152
5153 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5155
5156 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AddressType, D>(
5161 self.address_type.as_ref().map(<fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
5162 encoder, offset + cur_offset, depth
5163 )?;
5164
5165 _prev_end_offset = cur_offset + envelope_size;
5166
5167 Ok(())
5168 }
5169 }
5170
5171 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for LeScanState {
5172 #[inline(always)]
5173 fn new_empty() -> Self {
5174 Self::default()
5175 }
5176
5177 unsafe fn decode(
5178 &mut self,
5179 decoder: &mut fidl::encoding::Decoder<'_, D>,
5180 offset: usize,
5181 mut depth: fidl::encoding::Depth,
5182 ) -> fidl::Result<()> {
5183 decoder.debug_check_bounds::<Self>(offset);
5184 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5185 None => return Err(fidl::Error::NotNullable),
5186 Some(len) => len,
5187 };
5188 if len == 0 {
5190 return Ok(());
5191 };
5192 depth.increment()?;
5193 let envelope_size = 8;
5194 let bytes_len = len * envelope_size;
5195 let offset = decoder.out_of_line_offset(bytes_len)?;
5196 let mut _next_ordinal_to_read = 0;
5198 let mut next_offset = offset;
5199 let end_offset = offset + bytes_len;
5200 _next_ordinal_to_read += 1;
5201 if next_offset >= end_offset {
5202 return Ok(());
5203 }
5204
5205 while _next_ordinal_to_read < 1 {
5207 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5208 _next_ordinal_to_read += 1;
5209 next_offset += envelope_size;
5210 }
5211
5212 let next_out_of_line = decoder.next_out_of_line();
5213 let handles_before = decoder.remaining_handles();
5214 if let Some((inlined, num_bytes, num_handles)) =
5215 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5216 {
5217 let member_inline_size =
5218 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5219 if inlined != (member_inline_size <= 4) {
5220 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5221 }
5222 let inner_offset;
5223 let mut inner_depth = depth.clone();
5224 if inlined {
5225 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5226 inner_offset = next_offset;
5227 } else {
5228 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5229 inner_depth.increment()?;
5230 }
5231 let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5232 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5233 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5234 {
5235 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5236 }
5237 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5238 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5239 }
5240 }
5241
5242 next_offset += envelope_size;
5243 _next_ordinal_to_read += 1;
5244 if next_offset >= end_offset {
5245 return Ok(());
5246 }
5247
5248 while _next_ordinal_to_read < 2 {
5250 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5251 _next_ordinal_to_read += 1;
5252 next_offset += envelope_size;
5253 }
5254
5255 let next_out_of_line = decoder.next_out_of_line();
5256 let handles_before = decoder.remaining_handles();
5257 if let Some((inlined, num_bytes, num_handles)) =
5258 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5259 {
5260 let member_inline_size =
5261 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5262 if inlined != (member_inline_size <= 4) {
5263 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5264 }
5265 let inner_offset;
5266 let mut inner_depth = depth.clone();
5267 if inlined {
5268 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5269 inner_offset = next_offset;
5270 } else {
5271 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5272 inner_depth.increment()?;
5273 }
5274 let val_ref = self.active.get_or_insert_with(|| fidl::new_empty!(bool, D));
5275 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5276 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5277 {
5278 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5279 }
5280 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5281 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5282 }
5283 }
5284
5285 next_offset += envelope_size;
5286 _next_ordinal_to_read += 1;
5287 if next_offset >= end_offset {
5288 return Ok(());
5289 }
5290
5291 while _next_ordinal_to_read < 3 {
5293 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5294 _next_ordinal_to_read += 1;
5295 next_offset += envelope_size;
5296 }
5297
5298 let next_out_of_line = decoder.next_out_of_line();
5299 let handles_before = decoder.remaining_handles();
5300 if let Some((inlined, num_bytes, num_handles)) =
5301 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5302 {
5303 let member_inline_size =
5304 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5305 if inlined != (member_inline_size <= 4) {
5306 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5307 }
5308 let inner_offset;
5309 let mut inner_depth = depth.clone();
5310 if inlined {
5311 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5312 inner_offset = next_offset;
5313 } else {
5314 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5315 inner_depth.increment()?;
5316 }
5317 let val_ref = self.interval.get_or_insert_with(|| fidl::new_empty!(u16, D));
5318 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5319 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5320 {
5321 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5322 }
5323 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5324 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5325 }
5326 }
5327
5328 next_offset += envelope_size;
5329 _next_ordinal_to_read += 1;
5330 if next_offset >= end_offset {
5331 return Ok(());
5332 }
5333
5334 while _next_ordinal_to_read < 4 {
5336 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5337 _next_ordinal_to_read += 1;
5338 next_offset += envelope_size;
5339 }
5340
5341 let next_out_of_line = decoder.next_out_of_line();
5342 let handles_before = decoder.remaining_handles();
5343 if let Some((inlined, num_bytes, num_handles)) =
5344 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5345 {
5346 let member_inline_size =
5347 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5348 if inlined != (member_inline_size <= 4) {
5349 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5350 }
5351 let inner_offset;
5352 let mut inner_depth = depth.clone();
5353 if inlined {
5354 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5355 inner_offset = next_offset;
5356 } else {
5357 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5358 inner_depth.increment()?;
5359 }
5360 let val_ref = self.window.get_or_insert_with(|| fidl::new_empty!(u16, D));
5361 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5362 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5363 {
5364 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5365 }
5366 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5367 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5368 }
5369 }
5370
5371 next_offset += envelope_size;
5372 _next_ordinal_to_read += 1;
5373 if next_offset >= end_offset {
5374 return Ok(());
5375 }
5376
5377 while _next_ordinal_to_read < 5 {
5379 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5380 _next_ordinal_to_read += 1;
5381 next_offset += envelope_size;
5382 }
5383
5384 let next_out_of_line = decoder.next_out_of_line();
5385 let handles_before = decoder.remaining_handles();
5386 if let Some((inlined, num_bytes, num_handles)) =
5387 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5388 {
5389 let member_inline_size =
5390 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5391 if inlined != (member_inline_size <= 4) {
5392 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5393 }
5394 let inner_offset;
5395 let mut inner_depth = depth.clone();
5396 if inlined {
5397 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5398 inner_offset = next_offset;
5399 } else {
5400 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5401 inner_depth.increment()?;
5402 }
5403 let val_ref =
5404 self.filter_duplicates.get_or_insert_with(|| fidl::new_empty!(bool, D));
5405 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5407 {
5408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5409 }
5410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5412 }
5413 }
5414
5415 next_offset += envelope_size;
5416 _next_ordinal_to_read += 1;
5417 if next_offset >= end_offset {
5418 return Ok(());
5419 }
5420
5421 while _next_ordinal_to_read < 6 {
5423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5424 _next_ordinal_to_read += 1;
5425 next_offset += envelope_size;
5426 }
5427
5428 let next_out_of_line = decoder.next_out_of_line();
5429 let handles_before = decoder.remaining_handles();
5430 if let Some((inlined, num_bytes, num_handles)) =
5431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5432 {
5433 let member_inline_size = <fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5434 if inlined != (member_inline_size <= 4) {
5435 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5436 }
5437 let inner_offset;
5438 let mut inner_depth = depth.clone();
5439 if inlined {
5440 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5441 inner_offset = next_offset;
5442 } else {
5443 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5444 inner_depth.increment()?;
5445 }
5446 let val_ref = self.address_type.get_or_insert_with(|| {
5447 fidl::new_empty!(fidl_fuchsia_bluetooth__common::AddressType, D)
5448 });
5449 fidl::decode!(
5450 fidl_fuchsia_bluetooth__common::AddressType,
5451 D,
5452 val_ref,
5453 decoder,
5454 inner_offset,
5455 inner_depth
5456 )?;
5457 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5458 {
5459 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5460 }
5461 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5462 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5463 }
5464 }
5465
5466 next_offset += envelope_size;
5467
5468 while next_offset < end_offset {
5470 _next_ordinal_to_read += 1;
5471 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5472 next_offset += envelope_size;
5473 }
5474
5475 Ok(())
5476 }
5477 }
5478
5479 impl LegacyAdvertisingState {
5480 #[inline(always)]
5481 fn max_ordinal_present(&self) -> u64 {
5482 if let Some(_) = self.scan_response {
5483 return 7;
5484 }
5485 if let Some(_) = self.advertising_data {
5486 return 6;
5487 }
5488 if let Some(_) = self.interval_max {
5489 return 5;
5490 }
5491 if let Some(_) = self.interval_min {
5492 return 4;
5493 }
5494 if let Some(_) = self.address_type {
5495 return 3;
5496 }
5497 if let Some(_) = self.type_ {
5498 return 2;
5499 }
5500 if let Some(_) = self.enabled {
5501 return 1;
5502 }
5503 0
5504 }
5505 }
5506
5507 impl fidl::encoding::ValueTypeMarker for LegacyAdvertisingState {
5508 type Borrowed<'a> = &'a Self;
5509 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5510 value
5511 }
5512 }
5513
5514 unsafe impl fidl::encoding::TypeMarker for LegacyAdvertisingState {
5515 type Owned = Self;
5516
5517 #[inline(always)]
5518 fn inline_align(_context: fidl::encoding::Context) -> usize {
5519 8
5520 }
5521
5522 #[inline(always)]
5523 fn inline_size(_context: fidl::encoding::Context) -> usize {
5524 16
5525 }
5526 }
5527
5528 unsafe impl<D: fidl::encoding::ResourceDialect>
5529 fidl::encoding::Encode<LegacyAdvertisingState, D> for &LegacyAdvertisingState
5530 {
5531 unsafe fn encode(
5532 self,
5533 encoder: &mut fidl::encoding::Encoder<'_, D>,
5534 offset: usize,
5535 mut depth: fidl::encoding::Depth,
5536 ) -> fidl::Result<()> {
5537 encoder.debug_check_bounds::<LegacyAdvertisingState>(offset);
5538 let max_ordinal: u64 = self.max_ordinal_present();
5540 encoder.write_num(max_ordinal, offset);
5541 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5542 if max_ordinal == 0 {
5544 return Ok(());
5545 }
5546 depth.increment()?;
5547 let envelope_size = 8;
5548 let bytes_len = max_ordinal as usize * envelope_size;
5549 #[allow(unused_variables)]
5550 let offset = encoder.out_of_line_offset(bytes_len);
5551 let mut _prev_end_offset: usize = 0;
5552 if 1 > max_ordinal {
5553 return Ok(());
5554 }
5555
5556 let cur_offset: usize = (1 - 1) * envelope_size;
5559
5560 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5562
5563 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5568 self.enabled.as_ref().map(<bool 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::<LegacyAdvertisingType, D>(
5591 self.type_
5592 .as_ref()
5593 .map(<LegacyAdvertisingType as fidl::encoding::ValueTypeMarker>::borrow),
5594 encoder,
5595 offset + cur_offset,
5596 depth,
5597 )?;
5598
5599 _prev_end_offset = cur_offset + envelope_size;
5600 if 3 > max_ordinal {
5601 return Ok(());
5602 }
5603
5604 let cur_offset: usize = (3 - 1) * envelope_size;
5607
5608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5610
5611 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::AddressType, D>(
5616 self.address_type.as_ref().map(<fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::ValueTypeMarker>::borrow),
5617 encoder, offset + cur_offset, depth
5618 )?;
5619
5620 _prev_end_offset = cur_offset + envelope_size;
5621 if 4 > max_ordinal {
5622 return Ok(());
5623 }
5624
5625 let cur_offset: usize = (4 - 1) * envelope_size;
5628
5629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5631
5632 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5637 self.interval_min.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5638 encoder,
5639 offset + cur_offset,
5640 depth,
5641 )?;
5642
5643 _prev_end_offset = cur_offset + envelope_size;
5644 if 5 > max_ordinal {
5645 return Ok(());
5646 }
5647
5648 let cur_offset: usize = (5 - 1) * envelope_size;
5651
5652 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5654
5655 fidl::encoding::encode_in_envelope_optional::<u16, D>(
5660 self.interval_max.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
5661 encoder,
5662 offset + cur_offset,
5663 depth,
5664 )?;
5665
5666 _prev_end_offset = cur_offset + envelope_size;
5667 if 6 > max_ordinal {
5668 return Ok(());
5669 }
5670
5671 let cur_offset: usize = (6 - 1) * envelope_size;
5674
5675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5677
5678 fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
5683 self.advertising_data
5684 .as_ref()
5685 .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
5686 encoder,
5687 offset + cur_offset,
5688 depth,
5689 )?;
5690
5691 _prev_end_offset = cur_offset + envelope_size;
5692 if 7 > max_ordinal {
5693 return Ok(());
5694 }
5695
5696 let cur_offset: usize = (7 - 1) * envelope_size;
5699
5700 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5702
5703 fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
5708 self.scan_response
5709 .as_ref()
5710 .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
5711 encoder,
5712 offset + cur_offset,
5713 depth,
5714 )?;
5715
5716 _prev_end_offset = cur_offset + envelope_size;
5717
5718 Ok(())
5719 }
5720 }
5721
5722 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5723 for LegacyAdvertisingState
5724 {
5725 #[inline(always)]
5726 fn new_empty() -> Self {
5727 Self::default()
5728 }
5729
5730 unsafe fn decode(
5731 &mut self,
5732 decoder: &mut fidl::encoding::Decoder<'_, D>,
5733 offset: usize,
5734 mut depth: fidl::encoding::Depth,
5735 ) -> fidl::Result<()> {
5736 decoder.debug_check_bounds::<Self>(offset);
5737 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5738 None => return Err(fidl::Error::NotNullable),
5739 Some(len) => len,
5740 };
5741 if len == 0 {
5743 return Ok(());
5744 };
5745 depth.increment()?;
5746 let envelope_size = 8;
5747 let bytes_len = len * envelope_size;
5748 let offset = decoder.out_of_line_offset(bytes_len)?;
5749 let mut _next_ordinal_to_read = 0;
5751 let mut next_offset = offset;
5752 let end_offset = offset + bytes_len;
5753 _next_ordinal_to_read += 1;
5754 if next_offset >= end_offset {
5755 return Ok(());
5756 }
5757
5758 while _next_ordinal_to_read < 1 {
5760 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5761 _next_ordinal_to_read += 1;
5762 next_offset += envelope_size;
5763 }
5764
5765 let next_out_of_line = decoder.next_out_of_line();
5766 let handles_before = decoder.remaining_handles();
5767 if let Some((inlined, num_bytes, num_handles)) =
5768 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5769 {
5770 let member_inline_size =
5771 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5772 if inlined != (member_inline_size <= 4) {
5773 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5774 }
5775 let inner_offset;
5776 let mut inner_depth = depth.clone();
5777 if inlined {
5778 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5779 inner_offset = next_offset;
5780 } else {
5781 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5782 inner_depth.increment()?;
5783 }
5784 let val_ref = self.enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
5785 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5786 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5787 {
5788 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5789 }
5790 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5791 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5792 }
5793 }
5794
5795 next_offset += envelope_size;
5796 _next_ordinal_to_read += 1;
5797 if next_offset >= end_offset {
5798 return Ok(());
5799 }
5800
5801 while _next_ordinal_to_read < 2 {
5803 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5804 _next_ordinal_to_read += 1;
5805 next_offset += envelope_size;
5806 }
5807
5808 let next_out_of_line = decoder.next_out_of_line();
5809 let handles_before = decoder.remaining_handles();
5810 if let Some((inlined, num_bytes, num_handles)) =
5811 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5812 {
5813 let member_inline_size =
5814 <LegacyAdvertisingType as fidl::encoding::TypeMarker>::inline_size(
5815 decoder.context,
5816 );
5817 if inlined != (member_inline_size <= 4) {
5818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5819 }
5820 let inner_offset;
5821 let mut inner_depth = depth.clone();
5822 if inlined {
5823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5824 inner_offset = next_offset;
5825 } else {
5826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5827 inner_depth.increment()?;
5828 }
5829 let val_ref =
5830 self.type_.get_or_insert_with(|| fidl::new_empty!(LegacyAdvertisingType, D));
5831 fidl::decode!(
5832 LegacyAdvertisingType,
5833 D,
5834 val_ref,
5835 decoder,
5836 inner_offset,
5837 inner_depth
5838 )?;
5839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5840 {
5841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5842 }
5843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5845 }
5846 }
5847
5848 next_offset += envelope_size;
5849 _next_ordinal_to_read += 1;
5850 if next_offset >= end_offset {
5851 return Ok(());
5852 }
5853
5854 while _next_ordinal_to_read < 3 {
5856 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5857 _next_ordinal_to_read += 1;
5858 next_offset += envelope_size;
5859 }
5860
5861 let next_out_of_line = decoder.next_out_of_line();
5862 let handles_before = decoder.remaining_handles();
5863 if let Some((inlined, num_bytes, num_handles)) =
5864 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5865 {
5866 let member_inline_size = <fidl_fuchsia_bluetooth__common::AddressType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5867 if inlined != (member_inline_size <= 4) {
5868 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5869 }
5870 let inner_offset;
5871 let mut inner_depth = depth.clone();
5872 if inlined {
5873 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5874 inner_offset = next_offset;
5875 } else {
5876 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5877 inner_depth.increment()?;
5878 }
5879 let val_ref = self.address_type.get_or_insert_with(|| {
5880 fidl::new_empty!(fidl_fuchsia_bluetooth__common::AddressType, D)
5881 });
5882 fidl::decode!(
5883 fidl_fuchsia_bluetooth__common::AddressType,
5884 D,
5885 val_ref,
5886 decoder,
5887 inner_offset,
5888 inner_depth
5889 )?;
5890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5891 {
5892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5893 }
5894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5896 }
5897 }
5898
5899 next_offset += envelope_size;
5900 _next_ordinal_to_read += 1;
5901 if next_offset >= end_offset {
5902 return Ok(());
5903 }
5904
5905 while _next_ordinal_to_read < 4 {
5907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5908 _next_ordinal_to_read += 1;
5909 next_offset += envelope_size;
5910 }
5911
5912 let next_out_of_line = decoder.next_out_of_line();
5913 let handles_before = decoder.remaining_handles();
5914 if let Some((inlined, num_bytes, num_handles)) =
5915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5916 {
5917 let member_inline_size =
5918 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5919 if inlined != (member_inline_size <= 4) {
5920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5921 }
5922 let inner_offset;
5923 let mut inner_depth = depth.clone();
5924 if inlined {
5925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5926 inner_offset = next_offset;
5927 } else {
5928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5929 inner_depth.increment()?;
5930 }
5931 let val_ref = self.interval_min.get_or_insert_with(|| fidl::new_empty!(u16, D));
5932 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5934 {
5935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5936 }
5937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5939 }
5940 }
5941
5942 next_offset += envelope_size;
5943 _next_ordinal_to_read += 1;
5944 if next_offset >= end_offset {
5945 return Ok(());
5946 }
5947
5948 while _next_ordinal_to_read < 5 {
5950 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5951 _next_ordinal_to_read += 1;
5952 next_offset += envelope_size;
5953 }
5954
5955 let next_out_of_line = decoder.next_out_of_line();
5956 let handles_before = decoder.remaining_handles();
5957 if let Some((inlined, num_bytes, num_handles)) =
5958 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5959 {
5960 let member_inline_size =
5961 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5962 if inlined != (member_inline_size <= 4) {
5963 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5964 }
5965 let inner_offset;
5966 let mut inner_depth = depth.clone();
5967 if inlined {
5968 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5969 inner_offset = next_offset;
5970 } else {
5971 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5972 inner_depth.increment()?;
5973 }
5974 let val_ref = self.interval_max.get_or_insert_with(|| fidl::new_empty!(u16, D));
5975 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
5976 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5977 {
5978 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5979 }
5980 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5981 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5982 }
5983 }
5984
5985 next_offset += envelope_size;
5986 _next_ordinal_to_read += 1;
5987 if next_offset >= end_offset {
5988 return Ok(());
5989 }
5990
5991 while _next_ordinal_to_read < 6 {
5993 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5994 _next_ordinal_to_read += 1;
5995 next_offset += envelope_size;
5996 }
5997
5998 let next_out_of_line = decoder.next_out_of_line();
5999 let handles_before = decoder.remaining_handles();
6000 if let Some((inlined, num_bytes, num_handles)) =
6001 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6002 {
6003 let member_inline_size =
6004 <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6005 if inlined != (member_inline_size <= 4) {
6006 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6007 }
6008 let inner_offset;
6009 let mut inner_depth = depth.clone();
6010 if inlined {
6011 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6012 inner_offset = next_offset;
6013 } else {
6014 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6015 inner_depth.increment()?;
6016 }
6017 let val_ref = self
6018 .advertising_data
6019 .get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6020 fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6021 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6022 {
6023 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6024 }
6025 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6026 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6027 }
6028 }
6029
6030 next_offset += envelope_size;
6031 _next_ordinal_to_read += 1;
6032 if next_offset >= end_offset {
6033 return Ok(());
6034 }
6035
6036 while _next_ordinal_to_read < 7 {
6038 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6039 _next_ordinal_to_read += 1;
6040 next_offset += envelope_size;
6041 }
6042
6043 let next_out_of_line = decoder.next_out_of_line();
6044 let handles_before = decoder.remaining_handles();
6045 if let Some((inlined, num_bytes, num_handles)) =
6046 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6047 {
6048 let member_inline_size =
6049 <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6050 if inlined != (member_inline_size <= 4) {
6051 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6052 }
6053 let inner_offset;
6054 let mut inner_depth = depth.clone();
6055 if inlined {
6056 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6057 inner_offset = next_offset;
6058 } else {
6059 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6060 inner_depth.increment()?;
6061 }
6062 let val_ref =
6063 self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6064 fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6065 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6066 {
6067 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6068 }
6069 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6070 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6071 }
6072 }
6073
6074 next_offset += envelope_size;
6075
6076 while next_offset < end_offset {
6078 _next_ordinal_to_read += 1;
6079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6080 next_offset += envelope_size;
6081 }
6082
6083 Ok(())
6084 }
6085 }
6086
6087 impl PeerSetLeAdvertisementRequest {
6088 #[inline(always)]
6089 fn max_ordinal_present(&self) -> u64 {
6090 if let Some(_) = self.scan_response {
6091 return 3;
6092 }
6093 if let Some(_) = self.advertisement {
6094 return 2;
6095 }
6096 if let Some(_) = self.le_address {
6097 return 1;
6098 }
6099 0
6100 }
6101 }
6102
6103 impl fidl::encoding::ValueTypeMarker for PeerSetLeAdvertisementRequest {
6104 type Borrowed<'a> = &'a Self;
6105 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6106 value
6107 }
6108 }
6109
6110 unsafe impl fidl::encoding::TypeMarker for PeerSetLeAdvertisementRequest {
6111 type Owned = Self;
6112
6113 #[inline(always)]
6114 fn inline_align(_context: fidl::encoding::Context) -> usize {
6115 8
6116 }
6117
6118 #[inline(always)]
6119 fn inline_size(_context: fidl::encoding::Context) -> usize {
6120 16
6121 }
6122 }
6123
6124 unsafe impl<D: fidl::encoding::ResourceDialect>
6125 fidl::encoding::Encode<PeerSetLeAdvertisementRequest, D>
6126 for &PeerSetLeAdvertisementRequest
6127 {
6128 unsafe fn encode(
6129 self,
6130 encoder: &mut fidl::encoding::Encoder<'_, D>,
6131 offset: usize,
6132 mut depth: fidl::encoding::Depth,
6133 ) -> fidl::Result<()> {
6134 encoder.debug_check_bounds::<PeerSetLeAdvertisementRequest>(offset);
6135 let max_ordinal: u64 = self.max_ordinal_present();
6137 encoder.write_num(max_ordinal, offset);
6138 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6139 if max_ordinal == 0 {
6141 return Ok(());
6142 }
6143 depth.increment()?;
6144 let envelope_size = 8;
6145 let bytes_len = max_ordinal as usize * envelope_size;
6146 #[allow(unused_variables)]
6147 let offset = encoder.out_of_line_offset(bytes_len);
6148 let mut _prev_end_offset: usize = 0;
6149 if 1 > max_ordinal {
6150 return Ok(());
6151 }
6152
6153 let cur_offset: usize = (1 - 1) * envelope_size;
6156
6157 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6159
6160 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_bluetooth__common::Address, D>(
6165 self.le_address.as_ref().map(<fidl_fuchsia_bluetooth__common::Address as fidl::encoding::ValueTypeMarker>::borrow),
6166 encoder, offset + cur_offset, depth
6167 )?;
6168
6169 _prev_end_offset = cur_offset + envelope_size;
6170 if 2 > max_ordinal {
6171 return Ok(());
6172 }
6173
6174 let cur_offset: usize = (2 - 1) * envelope_size;
6177
6178 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6180
6181 fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6186 self.advertisement
6187 .as_ref()
6188 .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6189 encoder,
6190 offset + cur_offset,
6191 depth,
6192 )?;
6193
6194 _prev_end_offset = cur_offset + envelope_size;
6195 if 3 > max_ordinal {
6196 return Ok(());
6197 }
6198
6199 let cur_offset: usize = (3 - 1) * envelope_size;
6202
6203 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6205
6206 fidl::encoding::encode_in_envelope_optional::<AdvertisingData, D>(
6211 self.scan_response
6212 .as_ref()
6213 .map(<AdvertisingData as fidl::encoding::ValueTypeMarker>::borrow),
6214 encoder,
6215 offset + cur_offset,
6216 depth,
6217 )?;
6218
6219 _prev_end_offset = cur_offset + envelope_size;
6220
6221 Ok(())
6222 }
6223 }
6224
6225 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6226 for PeerSetLeAdvertisementRequest
6227 {
6228 #[inline(always)]
6229 fn new_empty() -> Self {
6230 Self::default()
6231 }
6232
6233 unsafe fn decode(
6234 &mut self,
6235 decoder: &mut fidl::encoding::Decoder<'_, D>,
6236 offset: usize,
6237 mut depth: fidl::encoding::Depth,
6238 ) -> fidl::Result<()> {
6239 decoder.debug_check_bounds::<Self>(offset);
6240 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6241 None => return Err(fidl::Error::NotNullable),
6242 Some(len) => len,
6243 };
6244 if len == 0 {
6246 return Ok(());
6247 };
6248 depth.increment()?;
6249 let envelope_size = 8;
6250 let bytes_len = len * envelope_size;
6251 let offset = decoder.out_of_line_offset(bytes_len)?;
6252 let mut _next_ordinal_to_read = 0;
6254 let mut next_offset = offset;
6255 let end_offset = offset + bytes_len;
6256 _next_ordinal_to_read += 1;
6257 if next_offset >= end_offset {
6258 return Ok(());
6259 }
6260
6261 while _next_ordinal_to_read < 1 {
6263 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6264 _next_ordinal_to_read += 1;
6265 next_offset += envelope_size;
6266 }
6267
6268 let next_out_of_line = decoder.next_out_of_line();
6269 let handles_before = decoder.remaining_handles();
6270 if let Some((inlined, num_bytes, num_handles)) =
6271 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6272 {
6273 let member_inline_size = <fidl_fuchsia_bluetooth__common::Address as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6274 if inlined != (member_inline_size <= 4) {
6275 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6276 }
6277 let inner_offset;
6278 let mut inner_depth = depth.clone();
6279 if inlined {
6280 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6281 inner_offset = next_offset;
6282 } else {
6283 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6284 inner_depth.increment()?;
6285 }
6286 let val_ref = self.le_address.get_or_insert_with(|| {
6287 fidl::new_empty!(fidl_fuchsia_bluetooth__common::Address, D)
6288 });
6289 fidl::decode!(
6290 fidl_fuchsia_bluetooth__common::Address,
6291 D,
6292 val_ref,
6293 decoder,
6294 inner_offset,
6295 inner_depth
6296 )?;
6297 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6298 {
6299 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6300 }
6301 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6302 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6303 }
6304 }
6305
6306 next_offset += envelope_size;
6307 _next_ordinal_to_read += 1;
6308 if next_offset >= end_offset {
6309 return Ok(());
6310 }
6311
6312 while _next_ordinal_to_read < 2 {
6314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6315 _next_ordinal_to_read += 1;
6316 next_offset += envelope_size;
6317 }
6318
6319 let next_out_of_line = decoder.next_out_of_line();
6320 let handles_before = decoder.remaining_handles();
6321 if let Some((inlined, num_bytes, num_handles)) =
6322 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6323 {
6324 let member_inline_size =
6325 <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6326 if inlined != (member_inline_size <= 4) {
6327 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6328 }
6329 let inner_offset;
6330 let mut inner_depth = depth.clone();
6331 if inlined {
6332 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6333 inner_offset = next_offset;
6334 } else {
6335 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6336 inner_depth.increment()?;
6337 }
6338 let val_ref =
6339 self.advertisement.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6340 fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6341 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6342 {
6343 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6344 }
6345 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6346 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6347 }
6348 }
6349
6350 next_offset += envelope_size;
6351 _next_ordinal_to_read += 1;
6352 if next_offset >= end_offset {
6353 return Ok(());
6354 }
6355
6356 while _next_ordinal_to_read < 3 {
6358 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6359 _next_ordinal_to_read += 1;
6360 next_offset += envelope_size;
6361 }
6362
6363 let next_out_of_line = decoder.next_out_of_line();
6364 let handles_before = decoder.remaining_handles();
6365 if let Some((inlined, num_bytes, num_handles)) =
6366 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6367 {
6368 let member_inline_size =
6369 <AdvertisingData as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6370 if inlined != (member_inline_size <= 4) {
6371 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6372 }
6373 let inner_offset;
6374 let mut inner_depth = depth.clone();
6375 if inlined {
6376 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6377 inner_offset = next_offset;
6378 } else {
6379 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6380 inner_depth.increment()?;
6381 }
6382 let val_ref =
6383 self.scan_response.get_or_insert_with(|| fidl::new_empty!(AdvertisingData, D));
6384 fidl::decode!(AdvertisingData, D, val_ref, decoder, inner_offset, inner_depth)?;
6385 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6386 {
6387 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6388 }
6389 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6390 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6391 }
6392 }
6393
6394 next_offset += envelope_size;
6395
6396 while next_offset < end_offset {
6398 _next_ordinal_to_read += 1;
6399 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6400 next_offset += envelope_size;
6401 }
6402
6403 Ok(())
6404 }
6405 }
6406
6407 impl SnoopOnDroppedPacketsRequest {
6408 #[inline(always)]
6409 fn max_ordinal_present(&self) -> u64 {
6410 if let Some(_) = self.received {
6411 return 2;
6412 }
6413 if let Some(_) = self.sent {
6414 return 1;
6415 }
6416 0
6417 }
6418 }
6419
6420 impl fidl::encoding::ValueTypeMarker for SnoopOnDroppedPacketsRequest {
6421 type Borrowed<'a> = &'a Self;
6422 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6423 value
6424 }
6425 }
6426
6427 unsafe impl fidl::encoding::TypeMarker for SnoopOnDroppedPacketsRequest {
6428 type Owned = Self;
6429
6430 #[inline(always)]
6431 fn inline_align(_context: fidl::encoding::Context) -> usize {
6432 8
6433 }
6434
6435 #[inline(always)]
6436 fn inline_size(_context: fidl::encoding::Context) -> usize {
6437 16
6438 }
6439 }
6440
6441 unsafe impl<D: fidl::encoding::ResourceDialect>
6442 fidl::encoding::Encode<SnoopOnDroppedPacketsRequest, D> for &SnoopOnDroppedPacketsRequest
6443 {
6444 unsafe fn encode(
6445 self,
6446 encoder: &mut fidl::encoding::Encoder<'_, D>,
6447 offset: usize,
6448 mut depth: fidl::encoding::Depth,
6449 ) -> fidl::Result<()> {
6450 encoder.debug_check_bounds::<SnoopOnDroppedPacketsRequest>(offset);
6451 let max_ordinal: u64 = self.max_ordinal_present();
6453 encoder.write_num(max_ordinal, offset);
6454 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6455 if max_ordinal == 0 {
6457 return Ok(());
6458 }
6459 depth.increment()?;
6460 let envelope_size = 8;
6461 let bytes_len = max_ordinal as usize * envelope_size;
6462 #[allow(unused_variables)]
6463 let offset = encoder.out_of_line_offset(bytes_len);
6464 let mut _prev_end_offset: usize = 0;
6465 if 1 > max_ordinal {
6466 return Ok(());
6467 }
6468
6469 let cur_offset: usize = (1 - 1) * envelope_size;
6472
6473 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6475
6476 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6481 self.sent.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6482 encoder,
6483 offset + cur_offset,
6484 depth,
6485 )?;
6486
6487 _prev_end_offset = cur_offset + envelope_size;
6488 if 2 > max_ordinal {
6489 return Ok(());
6490 }
6491
6492 let cur_offset: usize = (2 - 1) * envelope_size;
6495
6496 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6498
6499 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6504 self.received.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6505 encoder,
6506 offset + cur_offset,
6507 depth,
6508 )?;
6509
6510 _prev_end_offset = cur_offset + envelope_size;
6511
6512 Ok(())
6513 }
6514 }
6515
6516 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6517 for SnoopOnDroppedPacketsRequest
6518 {
6519 #[inline(always)]
6520 fn new_empty() -> Self {
6521 Self::default()
6522 }
6523
6524 unsafe fn decode(
6525 &mut self,
6526 decoder: &mut fidl::encoding::Decoder<'_, D>,
6527 offset: usize,
6528 mut depth: fidl::encoding::Depth,
6529 ) -> fidl::Result<()> {
6530 decoder.debug_check_bounds::<Self>(offset);
6531 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6532 None => return Err(fidl::Error::NotNullable),
6533 Some(len) => len,
6534 };
6535 if len == 0 {
6537 return Ok(());
6538 };
6539 depth.increment()?;
6540 let envelope_size = 8;
6541 let bytes_len = len * envelope_size;
6542 let offset = decoder.out_of_line_offset(bytes_len)?;
6543 let mut _next_ordinal_to_read = 0;
6545 let mut next_offset = offset;
6546 let end_offset = offset + bytes_len;
6547 _next_ordinal_to_read += 1;
6548 if next_offset >= end_offset {
6549 return Ok(());
6550 }
6551
6552 while _next_ordinal_to_read < 1 {
6554 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6555 _next_ordinal_to_read += 1;
6556 next_offset += envelope_size;
6557 }
6558
6559 let next_out_of_line = decoder.next_out_of_line();
6560 let handles_before = decoder.remaining_handles();
6561 if let Some((inlined, num_bytes, num_handles)) =
6562 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6563 {
6564 let member_inline_size =
6565 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6566 if inlined != (member_inline_size <= 4) {
6567 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6568 }
6569 let inner_offset;
6570 let mut inner_depth = depth.clone();
6571 if inlined {
6572 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6573 inner_offset = next_offset;
6574 } else {
6575 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6576 inner_depth.increment()?;
6577 }
6578 let val_ref = self.sent.get_or_insert_with(|| fidl::new_empty!(u32, D));
6579 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6580 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6581 {
6582 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6583 }
6584 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6585 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6586 }
6587 }
6588
6589 next_offset += envelope_size;
6590 _next_ordinal_to_read += 1;
6591 if next_offset >= end_offset {
6592 return Ok(());
6593 }
6594
6595 while _next_ordinal_to_read < 2 {
6597 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6598 _next_ordinal_to_read += 1;
6599 next_offset += envelope_size;
6600 }
6601
6602 let next_out_of_line = decoder.next_out_of_line();
6603 let handles_before = decoder.remaining_handles();
6604 if let Some((inlined, num_bytes, num_handles)) =
6605 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6606 {
6607 let member_inline_size =
6608 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6609 if inlined != (member_inline_size <= 4) {
6610 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6611 }
6612 let inner_offset;
6613 let mut inner_depth = depth.clone();
6614 if inlined {
6615 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6616 inner_offset = next_offset;
6617 } else {
6618 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6619 inner_depth.increment()?;
6620 }
6621 let val_ref = self.received.get_or_insert_with(|| fidl::new_empty!(u32, D));
6622 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6623 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6624 {
6625 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6626 }
6627 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6628 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6629 }
6630 }
6631
6632 next_offset += envelope_size;
6633
6634 while next_offset < end_offset {
6636 _next_ordinal_to_read += 1;
6637 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6638 next_offset += envelope_size;
6639 }
6640
6641 Ok(())
6642 }
6643 }
6644
6645 impl SnoopOnObservePacketRequest {
6646 #[inline(always)]
6647 fn max_ordinal_present(&self) -> u64 {
6648 if let Some(_) = self.packet {
6649 return 3;
6650 }
6651 if let Some(_) = self.direction {
6652 return 2;
6653 }
6654 if let Some(_) = self.sequence {
6655 return 1;
6656 }
6657 0
6658 }
6659 }
6660
6661 impl fidl::encoding::ValueTypeMarker for SnoopOnObservePacketRequest {
6662 type Borrowed<'a> = &'a Self;
6663 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6664 value
6665 }
6666 }
6667
6668 unsafe impl fidl::encoding::TypeMarker for SnoopOnObservePacketRequest {
6669 type Owned = Self;
6670
6671 #[inline(always)]
6672 fn inline_align(_context: fidl::encoding::Context) -> usize {
6673 8
6674 }
6675
6676 #[inline(always)]
6677 fn inline_size(_context: fidl::encoding::Context) -> usize {
6678 16
6679 }
6680 }
6681
6682 unsafe impl<D: fidl::encoding::ResourceDialect>
6683 fidl::encoding::Encode<SnoopOnObservePacketRequest, D> for &SnoopOnObservePacketRequest
6684 {
6685 unsafe fn encode(
6686 self,
6687 encoder: &mut fidl::encoding::Encoder<'_, D>,
6688 offset: usize,
6689 mut depth: fidl::encoding::Depth,
6690 ) -> fidl::Result<()> {
6691 encoder.debug_check_bounds::<SnoopOnObservePacketRequest>(offset);
6692 let max_ordinal: u64 = self.max_ordinal_present();
6694 encoder.write_num(max_ordinal, offset);
6695 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6696 if max_ordinal == 0 {
6698 return Ok(());
6699 }
6700 depth.increment()?;
6701 let envelope_size = 8;
6702 let bytes_len = max_ordinal as usize * envelope_size;
6703 #[allow(unused_variables)]
6704 let offset = encoder.out_of_line_offset(bytes_len);
6705 let mut _prev_end_offset: usize = 0;
6706 if 1 > max_ordinal {
6707 return Ok(());
6708 }
6709
6710 let cur_offset: usize = (1 - 1) * envelope_size;
6713
6714 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6716
6717 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6722 self.sequence.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6723 encoder,
6724 offset + cur_offset,
6725 depth,
6726 )?;
6727
6728 _prev_end_offset = cur_offset + envelope_size;
6729 if 2 > max_ordinal {
6730 return Ok(());
6731 }
6732
6733 let cur_offset: usize = (2 - 1) * envelope_size;
6736
6737 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6739
6740 fidl::encoding::encode_in_envelope_optional::<PacketDirection, D>(
6745 self.direction
6746 .as_ref()
6747 .map(<PacketDirection as fidl::encoding::ValueTypeMarker>::borrow),
6748 encoder,
6749 offset + cur_offset,
6750 depth,
6751 )?;
6752
6753 _prev_end_offset = cur_offset + envelope_size;
6754 if 3 > max_ordinal {
6755 return Ok(());
6756 }
6757
6758 let cur_offset: usize = (3 - 1) * envelope_size;
6761
6762 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6764
6765 fidl::encoding::encode_in_envelope_optional::<SnoopPacket, D>(
6770 self.packet.as_ref().map(<SnoopPacket as fidl::encoding::ValueTypeMarker>::borrow),
6771 encoder,
6772 offset + cur_offset,
6773 depth,
6774 )?;
6775
6776 _prev_end_offset = cur_offset + envelope_size;
6777
6778 Ok(())
6779 }
6780 }
6781
6782 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6783 for SnoopOnObservePacketRequest
6784 {
6785 #[inline(always)]
6786 fn new_empty() -> Self {
6787 Self::default()
6788 }
6789
6790 unsafe fn decode(
6791 &mut self,
6792 decoder: &mut fidl::encoding::Decoder<'_, D>,
6793 offset: usize,
6794 mut depth: fidl::encoding::Depth,
6795 ) -> fidl::Result<()> {
6796 decoder.debug_check_bounds::<Self>(offset);
6797 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6798 None => return Err(fidl::Error::NotNullable),
6799 Some(len) => len,
6800 };
6801 if len == 0 {
6803 return Ok(());
6804 };
6805 depth.increment()?;
6806 let envelope_size = 8;
6807 let bytes_len = len * envelope_size;
6808 let offset = decoder.out_of_line_offset(bytes_len)?;
6809 let mut _next_ordinal_to_read = 0;
6811 let mut next_offset = offset;
6812 let end_offset = offset + bytes_len;
6813 _next_ordinal_to_read += 1;
6814 if next_offset >= end_offset {
6815 return Ok(());
6816 }
6817
6818 while _next_ordinal_to_read < 1 {
6820 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6821 _next_ordinal_to_read += 1;
6822 next_offset += envelope_size;
6823 }
6824
6825 let next_out_of_line = decoder.next_out_of_line();
6826 let handles_before = decoder.remaining_handles();
6827 if let Some((inlined, num_bytes, num_handles)) =
6828 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6829 {
6830 let member_inline_size =
6831 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6832 if inlined != (member_inline_size <= 4) {
6833 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6834 }
6835 let inner_offset;
6836 let mut inner_depth = depth.clone();
6837 if inlined {
6838 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6839 inner_offset = next_offset;
6840 } else {
6841 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6842 inner_depth.increment()?;
6843 }
6844 let val_ref = self.sequence.get_or_insert_with(|| fidl::new_empty!(u64, D));
6845 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6846 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6847 {
6848 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6849 }
6850 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6851 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6852 }
6853 }
6854
6855 next_offset += envelope_size;
6856 _next_ordinal_to_read += 1;
6857 if next_offset >= end_offset {
6858 return Ok(());
6859 }
6860
6861 while _next_ordinal_to_read < 2 {
6863 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6864 _next_ordinal_to_read += 1;
6865 next_offset += envelope_size;
6866 }
6867
6868 let next_out_of_line = decoder.next_out_of_line();
6869 let handles_before = decoder.remaining_handles();
6870 if let Some((inlined, num_bytes, num_handles)) =
6871 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6872 {
6873 let member_inline_size =
6874 <PacketDirection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6875 if inlined != (member_inline_size <= 4) {
6876 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6877 }
6878 let inner_offset;
6879 let mut inner_depth = depth.clone();
6880 if inlined {
6881 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6882 inner_offset = next_offset;
6883 } else {
6884 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6885 inner_depth.increment()?;
6886 }
6887 let val_ref =
6888 self.direction.get_or_insert_with(|| fidl::new_empty!(PacketDirection, D));
6889 fidl::decode!(PacketDirection, D, val_ref, decoder, inner_offset, inner_depth)?;
6890 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6891 {
6892 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6893 }
6894 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6895 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6896 }
6897 }
6898
6899 next_offset += envelope_size;
6900 _next_ordinal_to_read += 1;
6901 if next_offset >= end_offset {
6902 return Ok(());
6903 }
6904
6905 while _next_ordinal_to_read < 3 {
6907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6908 _next_ordinal_to_read += 1;
6909 next_offset += envelope_size;
6910 }
6911
6912 let next_out_of_line = decoder.next_out_of_line();
6913 let handles_before = decoder.remaining_handles();
6914 if let Some((inlined, num_bytes, num_handles)) =
6915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6916 {
6917 let member_inline_size =
6918 <SnoopPacket as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6919 if inlined != (member_inline_size <= 4) {
6920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6921 }
6922 let inner_offset;
6923 let mut inner_depth = depth.clone();
6924 if inlined {
6925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6926 inner_offset = next_offset;
6927 } else {
6928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6929 inner_depth.increment()?;
6930 }
6931 let val_ref = self.packet.get_or_insert_with(|| fidl::new_empty!(SnoopPacket, D));
6932 fidl::decode!(SnoopPacket, D, val_ref, decoder, inner_offset, inner_depth)?;
6933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6934 {
6935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6936 }
6937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6939 }
6940 }
6941
6942 next_offset += envelope_size;
6943
6944 while next_offset < end_offset {
6946 _next_ordinal_to_read += 1;
6947 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6948 next_offset += envelope_size;
6949 }
6950
6951 Ok(())
6952 }
6953 }
6954
6955 impl VendorCrashParameters {
6956 #[inline(always)]
6957 fn max_ordinal_present(&self) -> u64 {
6958 if let Some(_) = self.crash_signature {
6959 return 3;
6960 }
6961 if let Some(_) = self.program_name {
6962 return 2;
6963 }
6964 if let Some(_) = self.crash_events {
6965 return 1;
6966 }
6967 0
6968 }
6969 }
6970
6971 impl fidl::encoding::ValueTypeMarker for VendorCrashParameters {
6972 type Borrowed<'a> = &'a Self;
6973 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6974 value
6975 }
6976 }
6977
6978 unsafe impl fidl::encoding::TypeMarker for VendorCrashParameters {
6979 type Owned = Self;
6980
6981 #[inline(always)]
6982 fn inline_align(_context: fidl::encoding::Context) -> usize {
6983 8
6984 }
6985
6986 #[inline(always)]
6987 fn inline_size(_context: fidl::encoding::Context) -> usize {
6988 16
6989 }
6990 }
6991
6992 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VendorCrashParameters, D>
6993 for &VendorCrashParameters
6994 {
6995 unsafe fn encode(
6996 self,
6997 encoder: &mut fidl::encoding::Encoder<'_, D>,
6998 offset: usize,
6999 mut depth: fidl::encoding::Depth,
7000 ) -> fidl::Result<()> {
7001 encoder.debug_check_bounds::<VendorCrashParameters>(offset);
7002 let max_ordinal: u64 = self.max_ordinal_present();
7004 encoder.write_num(max_ordinal, offset);
7005 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7006 if max_ordinal == 0 {
7008 return Ok(());
7009 }
7010 depth.increment()?;
7011 let envelope_size = 8;
7012 let bytes_len = max_ordinal as usize * envelope_size;
7013 #[allow(unused_variables)]
7014 let offset = encoder.out_of_line_offset(bytes_len);
7015 let mut _prev_end_offset: usize = 0;
7016 if 1 > max_ordinal {
7017 return Ok(());
7018 }
7019
7020 let cur_offset: usize = (1 - 1) * envelope_size;
7023
7024 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7026
7027 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 8>>, D>(
7032 self.crash_events.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 8>> as fidl::encoding::ValueTypeMarker>::borrow),
7033 encoder, offset + cur_offset, depth
7034 )?;
7035
7036 _prev_end_offset = cur_offset + envelope_size;
7037 if 2 > max_ordinal {
7038 return Ok(());
7039 }
7040
7041 let cur_offset: usize = (2 - 1) * envelope_size;
7044
7045 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7047
7048 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<1024>, D>(
7053 self.program_name.as_ref().map(<fidl::encoding::BoundedString<1024> as fidl::encoding::ValueTypeMarker>::borrow),
7054 encoder, offset + cur_offset, depth
7055 )?;
7056
7057 _prev_end_offset = cur_offset + envelope_size;
7058 if 3 > max_ordinal {
7059 return Ok(());
7060 }
7061
7062 let cur_offset: usize = (3 - 1) * envelope_size;
7065
7066 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7068
7069 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<128>, D>(
7074 self.crash_signature.as_ref().map(
7075 <fidl::encoding::BoundedString<128> as fidl::encoding::ValueTypeMarker>::borrow,
7076 ),
7077 encoder,
7078 offset + cur_offset,
7079 depth,
7080 )?;
7081
7082 _prev_end_offset = cur_offset + envelope_size;
7083
7084 Ok(())
7085 }
7086 }
7087
7088 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VendorCrashParameters {
7089 #[inline(always)]
7090 fn new_empty() -> Self {
7091 Self::default()
7092 }
7093
7094 unsafe fn decode(
7095 &mut self,
7096 decoder: &mut fidl::encoding::Decoder<'_, D>,
7097 offset: usize,
7098 mut depth: fidl::encoding::Depth,
7099 ) -> fidl::Result<()> {
7100 decoder.debug_check_bounds::<Self>(offset);
7101 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7102 None => return Err(fidl::Error::NotNullable),
7103 Some(len) => len,
7104 };
7105 if len == 0 {
7107 return Ok(());
7108 };
7109 depth.increment()?;
7110 let envelope_size = 8;
7111 let bytes_len = len * envelope_size;
7112 let offset = decoder.out_of_line_offset(bytes_len)?;
7113 let mut _next_ordinal_to_read = 0;
7115 let mut next_offset = offset;
7116 let end_offset = offset + bytes_len;
7117 _next_ordinal_to_read += 1;
7118 if next_offset >= end_offset {
7119 return Ok(());
7120 }
7121
7122 while _next_ordinal_to_read < 1 {
7124 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7125 _next_ordinal_to_read += 1;
7126 next_offset += envelope_size;
7127 }
7128
7129 let next_out_of_line = decoder.next_out_of_line();
7130 let handles_before = decoder.remaining_handles();
7131 if let Some((inlined, num_bytes, num_handles)) =
7132 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7133 {
7134 let member_inline_size = <fidl::encoding::UnboundedVector<
7135 fidl::encoding::Vector<u8, 8>,
7136 > as fidl::encoding::TypeMarker>::inline_size(
7137 decoder.context
7138 );
7139 if inlined != (member_inline_size <= 4) {
7140 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7141 }
7142 let inner_offset;
7143 let mut inner_depth = depth.clone();
7144 if inlined {
7145 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7146 inner_offset = next_offset;
7147 } else {
7148 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7149 inner_depth.increment()?;
7150 }
7151 let val_ref = self.crash_events.get_or_insert_with(|| {
7152 fidl::new_empty!(
7153 fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 8>>,
7154 D
7155 )
7156 });
7157 fidl::decode!(
7158 fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 8>>,
7159 D,
7160 val_ref,
7161 decoder,
7162 inner_offset,
7163 inner_depth
7164 )?;
7165 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7166 {
7167 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7168 }
7169 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7170 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7171 }
7172 }
7173
7174 next_offset += envelope_size;
7175 _next_ordinal_to_read += 1;
7176 if next_offset >= end_offset {
7177 return Ok(());
7178 }
7179
7180 while _next_ordinal_to_read < 2 {
7182 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7183 _next_ordinal_to_read += 1;
7184 next_offset += envelope_size;
7185 }
7186
7187 let next_out_of_line = decoder.next_out_of_line();
7188 let handles_before = decoder.remaining_handles();
7189 if let Some((inlined, num_bytes, num_handles)) =
7190 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7191 {
7192 let member_inline_size = <fidl::encoding::BoundedString<1024> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7193 if inlined != (member_inline_size <= 4) {
7194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7195 }
7196 let inner_offset;
7197 let mut inner_depth = depth.clone();
7198 if inlined {
7199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7200 inner_offset = next_offset;
7201 } else {
7202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7203 inner_depth.increment()?;
7204 }
7205 let val_ref = self.program_name.get_or_insert_with(|| {
7206 fidl::new_empty!(fidl::encoding::BoundedString<1024>, D)
7207 });
7208 fidl::decode!(
7209 fidl::encoding::BoundedString<1024>,
7210 D,
7211 val_ref,
7212 decoder,
7213 inner_offset,
7214 inner_depth
7215 )?;
7216 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7217 {
7218 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7219 }
7220 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7221 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7222 }
7223 }
7224
7225 next_offset += envelope_size;
7226 _next_ordinal_to_read += 1;
7227 if next_offset >= end_offset {
7228 return Ok(());
7229 }
7230
7231 while _next_ordinal_to_read < 3 {
7233 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7234 _next_ordinal_to_read += 1;
7235 next_offset += envelope_size;
7236 }
7237
7238 let next_out_of_line = decoder.next_out_of_line();
7239 let handles_before = decoder.remaining_handles();
7240 if let Some((inlined, num_bytes, num_handles)) =
7241 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7242 {
7243 let member_inline_size =
7244 <fidl::encoding::BoundedString<128> as fidl::encoding::TypeMarker>::inline_size(
7245 decoder.context,
7246 );
7247 if inlined != (member_inline_size <= 4) {
7248 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7249 }
7250 let inner_offset;
7251 let mut inner_depth = depth.clone();
7252 if inlined {
7253 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7254 inner_offset = next_offset;
7255 } else {
7256 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7257 inner_depth.increment()?;
7258 }
7259 let val_ref = self
7260 .crash_signature
7261 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<128>, D));
7262 fidl::decode!(
7263 fidl::encoding::BoundedString<128>,
7264 D,
7265 val_ref,
7266 decoder,
7267 inner_offset,
7268 inner_depth
7269 )?;
7270 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7271 {
7272 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7273 }
7274 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7275 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7276 }
7277 }
7278
7279 next_offset += envelope_size;
7280
7281 while next_offset < end_offset {
7283 _next_ordinal_to_read += 1;
7284 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7285 next_offset += envelope_size;
7286 }
7287
7288 Ok(())
7289 }
7290 }
7291
7292 impl VendorFeatures {
7293 #[inline(always)]
7294 fn max_ordinal_present(&self) -> u64 {
7295 if let Some(_) = self.audio_offload_settings {
7296 return 3;
7297 }
7298 if let Some(_) = self.android_vendor_extensions {
7299 return 2;
7300 }
7301 if let Some(_) = self.acl_priority_command {
7302 return 1;
7303 }
7304 0
7305 }
7306 }
7307
7308 impl fidl::encoding::ValueTypeMarker for VendorFeatures {
7309 type Borrowed<'a> = &'a Self;
7310 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7311 value
7312 }
7313 }
7314
7315 unsafe impl fidl::encoding::TypeMarker for VendorFeatures {
7316 type Owned = Self;
7317
7318 #[inline(always)]
7319 fn inline_align(_context: fidl::encoding::Context) -> usize {
7320 8
7321 }
7322
7323 #[inline(always)]
7324 fn inline_size(_context: fidl::encoding::Context) -> usize {
7325 16
7326 }
7327 }
7328
7329 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VendorFeatures, D>
7330 for &VendorFeatures
7331 {
7332 unsafe fn encode(
7333 self,
7334 encoder: &mut fidl::encoding::Encoder<'_, D>,
7335 offset: usize,
7336 mut depth: fidl::encoding::Depth,
7337 ) -> fidl::Result<()> {
7338 encoder.debug_check_bounds::<VendorFeatures>(offset);
7339 let max_ordinal: u64 = self.max_ordinal_present();
7341 encoder.write_num(max_ordinal, offset);
7342 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7343 if max_ordinal == 0 {
7345 return Ok(());
7346 }
7347 depth.increment()?;
7348 let envelope_size = 8;
7349 let bytes_len = max_ordinal as usize * envelope_size;
7350 #[allow(unused_variables)]
7351 let offset = encoder.out_of_line_offset(bytes_len);
7352 let mut _prev_end_offset: usize = 0;
7353 if 1 > max_ordinal {
7354 return Ok(());
7355 }
7356
7357 let cur_offset: usize = (1 - 1) * envelope_size;
7360
7361 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7363
7364 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7369 self.acl_priority_command
7370 .as_ref()
7371 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7372 encoder,
7373 offset + cur_offset,
7374 depth,
7375 )?;
7376
7377 _prev_end_offset = cur_offset + envelope_size;
7378 if 2 > max_ordinal {
7379 return Ok(());
7380 }
7381
7382 let cur_offset: usize = (2 - 1) * envelope_size;
7385
7386 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7388
7389 fidl::encoding::encode_in_envelope_optional::<AndroidVendorSupport, D>(
7394 self.android_vendor_extensions
7395 .as_ref()
7396 .map(<AndroidVendorSupport as fidl::encoding::ValueTypeMarker>::borrow),
7397 encoder,
7398 offset + cur_offset,
7399 depth,
7400 )?;
7401
7402 _prev_end_offset = cur_offset + envelope_size;
7403 if 3 > max_ordinal {
7404 return Ok(());
7405 }
7406
7407 let cur_offset: usize = (3 - 1) * envelope_size;
7410
7411 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7413
7414 fidl::encoding::encode_in_envelope_optional::<AudioOffloadSettings, D>(
7419 self.audio_offload_settings
7420 .as_ref()
7421 .map(<AudioOffloadSettings as fidl::encoding::ValueTypeMarker>::borrow),
7422 encoder,
7423 offset + cur_offset,
7424 depth,
7425 )?;
7426
7427 _prev_end_offset = cur_offset + envelope_size;
7428
7429 Ok(())
7430 }
7431 }
7432
7433 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VendorFeatures {
7434 #[inline(always)]
7435 fn new_empty() -> Self {
7436 Self::default()
7437 }
7438
7439 unsafe fn decode(
7440 &mut self,
7441 decoder: &mut fidl::encoding::Decoder<'_, D>,
7442 offset: usize,
7443 mut depth: fidl::encoding::Depth,
7444 ) -> fidl::Result<()> {
7445 decoder.debug_check_bounds::<Self>(offset);
7446 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7447 None => return Err(fidl::Error::NotNullable),
7448 Some(len) => len,
7449 };
7450 if len == 0 {
7452 return Ok(());
7453 };
7454 depth.increment()?;
7455 let envelope_size = 8;
7456 let bytes_len = len * envelope_size;
7457 let offset = decoder.out_of_line_offset(bytes_len)?;
7458 let mut _next_ordinal_to_read = 0;
7460 let mut next_offset = offset;
7461 let end_offset = offset + bytes_len;
7462 _next_ordinal_to_read += 1;
7463 if next_offset >= end_offset {
7464 return Ok(());
7465 }
7466
7467 while _next_ordinal_to_read < 1 {
7469 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7470 _next_ordinal_to_read += 1;
7471 next_offset += envelope_size;
7472 }
7473
7474 let next_out_of_line = decoder.next_out_of_line();
7475 let handles_before = decoder.remaining_handles();
7476 if let Some((inlined, num_bytes, num_handles)) =
7477 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7478 {
7479 let member_inline_size =
7480 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7481 if inlined != (member_inline_size <= 4) {
7482 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7483 }
7484 let inner_offset;
7485 let mut inner_depth = depth.clone();
7486 if inlined {
7487 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7488 inner_offset = next_offset;
7489 } else {
7490 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7491 inner_depth.increment()?;
7492 }
7493 let val_ref =
7494 self.acl_priority_command.get_or_insert_with(|| fidl::new_empty!(bool, D));
7495 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7496 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7497 {
7498 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7499 }
7500 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7501 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7502 }
7503 }
7504
7505 next_offset += envelope_size;
7506 _next_ordinal_to_read += 1;
7507 if next_offset >= end_offset {
7508 return Ok(());
7509 }
7510
7511 while _next_ordinal_to_read < 2 {
7513 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7514 _next_ordinal_to_read += 1;
7515 next_offset += envelope_size;
7516 }
7517
7518 let next_out_of_line = decoder.next_out_of_line();
7519 let handles_before = decoder.remaining_handles();
7520 if let Some((inlined, num_bytes, num_handles)) =
7521 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7522 {
7523 let member_inline_size =
7524 <AndroidVendorSupport as fidl::encoding::TypeMarker>::inline_size(
7525 decoder.context,
7526 );
7527 if inlined != (member_inline_size <= 4) {
7528 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7529 }
7530 let inner_offset;
7531 let mut inner_depth = depth.clone();
7532 if inlined {
7533 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7534 inner_offset = next_offset;
7535 } else {
7536 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7537 inner_depth.increment()?;
7538 }
7539 let val_ref = self
7540 .android_vendor_extensions
7541 .get_or_insert_with(|| fidl::new_empty!(AndroidVendorSupport, D));
7542 fidl::decode!(
7543 AndroidVendorSupport,
7544 D,
7545 val_ref,
7546 decoder,
7547 inner_offset,
7548 inner_depth
7549 )?;
7550 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7551 {
7552 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7553 }
7554 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7555 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7556 }
7557 }
7558
7559 next_offset += envelope_size;
7560 _next_ordinal_to_read += 1;
7561 if next_offset >= end_offset {
7562 return Ok(());
7563 }
7564
7565 while _next_ordinal_to_read < 3 {
7567 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7568 _next_ordinal_to_read += 1;
7569 next_offset += envelope_size;
7570 }
7571
7572 let next_out_of_line = decoder.next_out_of_line();
7573 let handles_before = decoder.remaining_handles();
7574 if let Some((inlined, num_bytes, num_handles)) =
7575 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7576 {
7577 let member_inline_size =
7578 <AudioOffloadSettings as fidl::encoding::TypeMarker>::inline_size(
7579 decoder.context,
7580 );
7581 if inlined != (member_inline_size <= 4) {
7582 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7583 }
7584 let inner_offset;
7585 let mut inner_depth = depth.clone();
7586 if inlined {
7587 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7588 inner_offset = next_offset;
7589 } else {
7590 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7591 inner_depth.increment()?;
7592 }
7593 let val_ref = self
7594 .audio_offload_settings
7595 .get_or_insert_with(|| fidl::new_empty!(AudioOffloadSettings, D));
7596 fidl::decode!(
7597 AudioOffloadSettings,
7598 D,
7599 val_ref,
7600 decoder,
7601 inner_offset,
7602 inner_depth
7603 )?;
7604 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7605 {
7606 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7607 }
7608 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7609 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7610 }
7611 }
7612
7613 next_offset += envelope_size;
7614
7615 while next_offset < end_offset {
7617 _next_ordinal_to_read += 1;
7618 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7619 next_offset += envelope_size;
7620 }
7621
7622 Ok(())
7623 }
7624 }
7625
7626 impl VendorSetAclPriorityParams {
7627 #[inline(always)]
7628 fn max_ordinal_present(&self) -> u64 {
7629 if let Some(_) = self.direction {
7630 return 3;
7631 }
7632 if let Some(_) = self.priority {
7633 return 2;
7634 }
7635 if let Some(_) = self.connection_handle {
7636 return 1;
7637 }
7638 0
7639 }
7640 }
7641
7642 impl fidl::encoding::ValueTypeMarker for VendorSetAclPriorityParams {
7643 type Borrowed<'a> = &'a Self;
7644 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7645 value
7646 }
7647 }
7648
7649 unsafe impl fidl::encoding::TypeMarker for VendorSetAclPriorityParams {
7650 type Owned = Self;
7651
7652 #[inline(always)]
7653 fn inline_align(_context: fidl::encoding::Context) -> usize {
7654 8
7655 }
7656
7657 #[inline(always)]
7658 fn inline_size(_context: fidl::encoding::Context) -> usize {
7659 16
7660 }
7661 }
7662
7663 unsafe impl<D: fidl::encoding::ResourceDialect>
7664 fidl::encoding::Encode<VendorSetAclPriorityParams, D> for &VendorSetAclPriorityParams
7665 {
7666 unsafe fn encode(
7667 self,
7668 encoder: &mut fidl::encoding::Encoder<'_, D>,
7669 offset: usize,
7670 mut depth: fidl::encoding::Depth,
7671 ) -> fidl::Result<()> {
7672 encoder.debug_check_bounds::<VendorSetAclPriorityParams>(offset);
7673 let max_ordinal: u64 = self.max_ordinal_present();
7675 encoder.write_num(max_ordinal, offset);
7676 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7677 if max_ordinal == 0 {
7679 return Ok(());
7680 }
7681 depth.increment()?;
7682 let envelope_size = 8;
7683 let bytes_len = max_ordinal as usize * envelope_size;
7684 #[allow(unused_variables)]
7685 let offset = encoder.out_of_line_offset(bytes_len);
7686 let mut _prev_end_offset: usize = 0;
7687 if 1 > max_ordinal {
7688 return Ok(());
7689 }
7690
7691 let cur_offset: usize = (1 - 1) * envelope_size;
7694
7695 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7697
7698 fidl::encoding::encode_in_envelope_optional::<u16, D>(
7703 self.connection_handle
7704 .as_ref()
7705 .map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
7706 encoder,
7707 offset + cur_offset,
7708 depth,
7709 )?;
7710
7711 _prev_end_offset = cur_offset + envelope_size;
7712 if 2 > max_ordinal {
7713 return Ok(());
7714 }
7715
7716 let cur_offset: usize = (2 - 1) * envelope_size;
7719
7720 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7722
7723 fidl::encoding::encode_in_envelope_optional::<VendorAclPriority, D>(
7728 self.priority
7729 .as_ref()
7730 .map(<VendorAclPriority as fidl::encoding::ValueTypeMarker>::borrow),
7731 encoder,
7732 offset + cur_offset,
7733 depth,
7734 )?;
7735
7736 _prev_end_offset = cur_offset + envelope_size;
7737 if 3 > max_ordinal {
7738 return Ok(());
7739 }
7740
7741 let cur_offset: usize = (3 - 1) * envelope_size;
7744
7745 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7747
7748 fidl::encoding::encode_in_envelope_optional::<VendorAclDirection, D>(
7753 self.direction
7754 .as_ref()
7755 .map(<VendorAclDirection as fidl::encoding::ValueTypeMarker>::borrow),
7756 encoder,
7757 offset + cur_offset,
7758 depth,
7759 )?;
7760
7761 _prev_end_offset = cur_offset + envelope_size;
7762
7763 Ok(())
7764 }
7765 }
7766
7767 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7768 for VendorSetAclPriorityParams
7769 {
7770 #[inline(always)]
7771 fn new_empty() -> Self {
7772 Self::default()
7773 }
7774
7775 unsafe fn decode(
7776 &mut self,
7777 decoder: &mut fidl::encoding::Decoder<'_, D>,
7778 offset: usize,
7779 mut depth: fidl::encoding::Depth,
7780 ) -> fidl::Result<()> {
7781 decoder.debug_check_bounds::<Self>(offset);
7782 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7783 None => return Err(fidl::Error::NotNullable),
7784 Some(len) => len,
7785 };
7786 if len == 0 {
7788 return Ok(());
7789 };
7790 depth.increment()?;
7791 let envelope_size = 8;
7792 let bytes_len = len * envelope_size;
7793 let offset = decoder.out_of_line_offset(bytes_len)?;
7794 let mut _next_ordinal_to_read = 0;
7796 let mut next_offset = offset;
7797 let end_offset = offset + bytes_len;
7798 _next_ordinal_to_read += 1;
7799 if next_offset >= end_offset {
7800 return Ok(());
7801 }
7802
7803 while _next_ordinal_to_read < 1 {
7805 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7806 _next_ordinal_to_read += 1;
7807 next_offset += envelope_size;
7808 }
7809
7810 let next_out_of_line = decoder.next_out_of_line();
7811 let handles_before = decoder.remaining_handles();
7812 if let Some((inlined, num_bytes, num_handles)) =
7813 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7814 {
7815 let member_inline_size =
7816 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7817 if inlined != (member_inline_size <= 4) {
7818 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7819 }
7820 let inner_offset;
7821 let mut inner_depth = depth.clone();
7822 if inlined {
7823 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7824 inner_offset = next_offset;
7825 } else {
7826 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7827 inner_depth.increment()?;
7828 }
7829 let val_ref =
7830 self.connection_handle.get_or_insert_with(|| fidl::new_empty!(u16, D));
7831 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
7832 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7833 {
7834 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7835 }
7836 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7837 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7838 }
7839 }
7840
7841 next_offset += envelope_size;
7842 _next_ordinal_to_read += 1;
7843 if next_offset >= end_offset {
7844 return Ok(());
7845 }
7846
7847 while _next_ordinal_to_read < 2 {
7849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7850 _next_ordinal_to_read += 1;
7851 next_offset += envelope_size;
7852 }
7853
7854 let next_out_of_line = decoder.next_out_of_line();
7855 let handles_before = decoder.remaining_handles();
7856 if let Some((inlined, num_bytes, num_handles)) =
7857 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7858 {
7859 let member_inline_size =
7860 <VendorAclPriority as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7861 if inlined != (member_inline_size <= 4) {
7862 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7863 }
7864 let inner_offset;
7865 let mut inner_depth = depth.clone();
7866 if inlined {
7867 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7868 inner_offset = next_offset;
7869 } else {
7870 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7871 inner_depth.increment()?;
7872 }
7873 let val_ref =
7874 self.priority.get_or_insert_with(|| fidl::new_empty!(VendorAclPriority, D));
7875 fidl::decode!(VendorAclPriority, D, val_ref, decoder, inner_offset, inner_depth)?;
7876 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7877 {
7878 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7879 }
7880 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7881 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7882 }
7883 }
7884
7885 next_offset += envelope_size;
7886 _next_ordinal_to_read += 1;
7887 if next_offset >= end_offset {
7888 return Ok(());
7889 }
7890
7891 while _next_ordinal_to_read < 3 {
7893 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7894 _next_ordinal_to_read += 1;
7895 next_offset += envelope_size;
7896 }
7897
7898 let next_out_of_line = decoder.next_out_of_line();
7899 let handles_before = decoder.remaining_handles();
7900 if let Some((inlined, num_bytes, num_handles)) =
7901 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7902 {
7903 let member_inline_size =
7904 <VendorAclDirection as fidl::encoding::TypeMarker>::inline_size(
7905 decoder.context,
7906 );
7907 if inlined != (member_inline_size <= 4) {
7908 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7909 }
7910 let inner_offset;
7911 let mut inner_depth = depth.clone();
7912 if inlined {
7913 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7914 inner_offset = next_offset;
7915 } else {
7916 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7917 inner_depth.increment()?;
7918 }
7919 let val_ref =
7920 self.direction.get_or_insert_with(|| fidl::new_empty!(VendorAclDirection, D));
7921 fidl::decode!(VendorAclDirection, D, val_ref, decoder, inner_offset, inner_depth)?;
7922 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7923 {
7924 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7925 }
7926 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7927 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7928 }
7929 }
7930
7931 next_offset += envelope_size;
7932
7933 while next_offset < end_offset {
7935 _next_ordinal_to_read += 1;
7936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7937 next_offset += envelope_size;
7938 }
7939
7940 Ok(())
7941 }
7942 }
7943
7944 impl fidl::encoding::ValueTypeMarker for ReceivedPacket {
7945 type Borrowed<'a> = &'a Self;
7946 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7947 value
7948 }
7949 }
7950
7951 unsafe impl fidl::encoding::TypeMarker for ReceivedPacket {
7952 type Owned = Self;
7953
7954 #[inline(always)]
7955 fn inline_align(_context: fidl::encoding::Context) -> usize {
7956 8
7957 }
7958
7959 #[inline(always)]
7960 fn inline_size(_context: fidl::encoding::Context) -> usize {
7961 16
7962 }
7963 }
7964
7965 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ReceivedPacket, D>
7966 for &ReceivedPacket
7967 {
7968 #[inline]
7969 unsafe fn encode(
7970 self,
7971 encoder: &mut fidl::encoding::Encoder<'_, D>,
7972 offset: usize,
7973 _depth: fidl::encoding::Depth,
7974 ) -> fidl::Result<()> {
7975 encoder.debug_check_bounds::<ReceivedPacket>(offset);
7976 encoder.write_num::<u64>(self.ordinal(), offset);
7977 match self {
7978 ReceivedPacket::Event(ref val) => fidl::encoding::encode_in_envelope::<
7979 fidl::encoding::Vector<u8, 257>,
7980 D,
7981 >(
7982 <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(
7983 val,
7984 ),
7985 encoder,
7986 offset + 8,
7987 _depth,
7988 ),
7989 ReceivedPacket::Acl(ref val) => fidl::encoding::encode_in_envelope::<
7990 fidl::encoding::Vector<u8, 65539>,
7991 D,
7992 >(
7993 <fidl::encoding::Vector<u8, 65539> as fidl::encoding::ValueTypeMarker>::borrow(
7994 val,
7995 ),
7996 encoder,
7997 offset + 8,
7998 _depth,
7999 ),
8000 ReceivedPacket::Iso(ref val) => fidl::encoding::encode_in_envelope::<
8001 fidl::encoding::Vector<u8, 16387>,
8002 D,
8003 >(
8004 <fidl::encoding::Vector<u8, 16387> as fidl::encoding::ValueTypeMarker>::borrow(
8005 val,
8006 ),
8007 encoder,
8008 offset + 8,
8009 _depth,
8010 ),
8011 ReceivedPacket::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8012 }
8013 }
8014 }
8015
8016 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReceivedPacket {
8017 #[inline(always)]
8018 fn new_empty() -> Self {
8019 Self::__SourceBreaking { unknown_ordinal: 0 }
8020 }
8021
8022 #[inline]
8023 unsafe fn decode(
8024 &mut self,
8025 decoder: &mut fidl::encoding::Decoder<'_, D>,
8026 offset: usize,
8027 mut depth: fidl::encoding::Depth,
8028 ) -> fidl::Result<()> {
8029 decoder.debug_check_bounds::<Self>(offset);
8030 #[allow(unused_variables)]
8031 let next_out_of_line = decoder.next_out_of_line();
8032 let handles_before = decoder.remaining_handles();
8033 let (ordinal, inlined, num_bytes, num_handles) =
8034 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8035
8036 let member_inline_size = match ordinal {
8037 1 => <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
8038 decoder.context,
8039 ),
8040 2 => {
8041 <fidl::encoding::Vector<u8, 65539> as fidl::encoding::TypeMarker>::inline_size(
8042 decoder.context,
8043 )
8044 }
8045 3 => {
8046 <fidl::encoding::Vector<u8, 16387> as fidl::encoding::TypeMarker>::inline_size(
8047 decoder.context,
8048 )
8049 }
8050 0 => return Err(fidl::Error::UnknownUnionTag),
8051 _ => num_bytes as usize,
8052 };
8053
8054 if inlined != (member_inline_size <= 4) {
8055 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8056 }
8057 let _inner_offset;
8058 if inlined {
8059 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8060 _inner_offset = offset + 8;
8061 } else {
8062 depth.increment()?;
8063 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8064 }
8065 match ordinal {
8066 1 => {
8067 #[allow(irrefutable_let_patterns)]
8068 if let ReceivedPacket::Event(_) = self {
8069 } else {
8071 *self = ReceivedPacket::Event(
8073 fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
8074 );
8075 }
8076 #[allow(irrefutable_let_patterns)]
8077 if let ReceivedPacket::Event(ref mut val) = self {
8078 fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val, decoder, _inner_offset, depth)?;
8079 } else {
8080 unreachable!()
8081 }
8082 }
8083 2 => {
8084 #[allow(irrefutable_let_patterns)]
8085 if let ReceivedPacket::Acl(_) = self {
8086 } else {
8088 *self = ReceivedPacket::Acl(
8090 fidl::new_empty!(fidl::encoding::Vector<u8, 65539>, D),
8091 );
8092 }
8093 #[allow(irrefutable_let_patterns)]
8094 if let ReceivedPacket::Acl(ref mut val) = self {
8095 fidl::decode!(fidl::encoding::Vector<u8, 65539>, D, val, decoder, _inner_offset, depth)?;
8096 } else {
8097 unreachable!()
8098 }
8099 }
8100 3 => {
8101 #[allow(irrefutable_let_patterns)]
8102 if let ReceivedPacket::Iso(_) = self {
8103 } else {
8105 *self = ReceivedPacket::Iso(
8107 fidl::new_empty!(fidl::encoding::Vector<u8, 16387>, D),
8108 );
8109 }
8110 #[allow(irrefutable_let_patterns)]
8111 if let ReceivedPacket::Iso(ref mut val) = self {
8112 fidl::decode!(fidl::encoding::Vector<u8, 16387>, D, val, decoder, _inner_offset, depth)?;
8113 } else {
8114 unreachable!()
8115 }
8116 }
8117 #[allow(deprecated)]
8118 ordinal => {
8119 for _ in 0..num_handles {
8120 decoder.drop_next_handle()?;
8121 }
8122 *self = ReceivedPacket::__SourceBreaking { unknown_ordinal: ordinal };
8123 }
8124 }
8125 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8126 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8127 }
8128 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8129 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8130 }
8131 Ok(())
8132 }
8133 }
8134
8135 impl fidl::encoding::ValueTypeMarker for SentPacket {
8136 type Borrowed<'a> = &'a Self;
8137 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8138 value
8139 }
8140 }
8141
8142 unsafe impl fidl::encoding::TypeMarker for SentPacket {
8143 type Owned = Self;
8144
8145 #[inline(always)]
8146 fn inline_align(_context: fidl::encoding::Context) -> usize {
8147 8
8148 }
8149
8150 #[inline(always)]
8151 fn inline_size(_context: fidl::encoding::Context) -> usize {
8152 16
8153 }
8154 }
8155
8156 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SentPacket, D>
8157 for &SentPacket
8158 {
8159 #[inline]
8160 unsafe fn encode(
8161 self,
8162 encoder: &mut fidl::encoding::Encoder<'_, D>,
8163 offset: usize,
8164 _depth: fidl::encoding::Depth,
8165 ) -> fidl::Result<()> {
8166 encoder.debug_check_bounds::<SentPacket>(offset);
8167 encoder.write_num::<u64>(self.ordinal(), offset);
8168 match self {
8169 SentPacket::Command(ref val) => fidl::encoding::encode_in_envelope::<
8170 fidl::encoding::Vector<u8, 258>,
8171 D,
8172 >(
8173 <fidl::encoding::Vector<u8, 258> as fidl::encoding::ValueTypeMarker>::borrow(
8174 val,
8175 ),
8176 encoder,
8177 offset + 8,
8178 _depth,
8179 ),
8180 SentPacket::Acl(ref val) => fidl::encoding::encode_in_envelope::<
8181 fidl::encoding::Vector<u8, 65539>,
8182 D,
8183 >(
8184 <fidl::encoding::Vector<u8, 65539> as fidl::encoding::ValueTypeMarker>::borrow(
8185 val,
8186 ),
8187 encoder,
8188 offset + 8,
8189 _depth,
8190 ),
8191 SentPacket::Iso(ref val) => fidl::encoding::encode_in_envelope::<
8192 fidl::encoding::Vector<u8, 16387>,
8193 D,
8194 >(
8195 <fidl::encoding::Vector<u8, 16387> as fidl::encoding::ValueTypeMarker>::borrow(
8196 val,
8197 ),
8198 encoder,
8199 offset + 8,
8200 _depth,
8201 ),
8202 SentPacket::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8203 }
8204 }
8205 }
8206
8207 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SentPacket {
8208 #[inline(always)]
8209 fn new_empty() -> Self {
8210 Self::__SourceBreaking { unknown_ordinal: 0 }
8211 }
8212
8213 #[inline]
8214 unsafe fn decode(
8215 &mut self,
8216 decoder: &mut fidl::encoding::Decoder<'_, D>,
8217 offset: usize,
8218 mut depth: fidl::encoding::Depth,
8219 ) -> fidl::Result<()> {
8220 decoder.debug_check_bounds::<Self>(offset);
8221 #[allow(unused_variables)]
8222 let next_out_of_line = decoder.next_out_of_line();
8223 let handles_before = decoder.remaining_handles();
8224 let (ordinal, inlined, num_bytes, num_handles) =
8225 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8226
8227 let member_inline_size = match ordinal {
8228 1 => <fidl::encoding::Vector<u8, 258> as fidl::encoding::TypeMarker>::inline_size(
8229 decoder.context,
8230 ),
8231 2 => {
8232 <fidl::encoding::Vector<u8, 65539> as fidl::encoding::TypeMarker>::inline_size(
8233 decoder.context,
8234 )
8235 }
8236 3 => {
8237 <fidl::encoding::Vector<u8, 16387> as fidl::encoding::TypeMarker>::inline_size(
8238 decoder.context,
8239 )
8240 }
8241 0 => return Err(fidl::Error::UnknownUnionTag),
8242 _ => num_bytes as usize,
8243 };
8244
8245 if inlined != (member_inline_size <= 4) {
8246 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8247 }
8248 let _inner_offset;
8249 if inlined {
8250 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8251 _inner_offset = offset + 8;
8252 } else {
8253 depth.increment()?;
8254 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8255 }
8256 match ordinal {
8257 1 => {
8258 #[allow(irrefutable_let_patterns)]
8259 if let SentPacket::Command(_) = self {
8260 } else {
8262 *self = SentPacket::Command(
8264 fidl::new_empty!(fidl::encoding::Vector<u8, 258>, D),
8265 );
8266 }
8267 #[allow(irrefutable_let_patterns)]
8268 if let SentPacket::Command(ref mut val) = self {
8269 fidl::decode!(fidl::encoding::Vector<u8, 258>, D, val, decoder, _inner_offset, depth)?;
8270 } else {
8271 unreachable!()
8272 }
8273 }
8274 2 => {
8275 #[allow(irrefutable_let_patterns)]
8276 if let SentPacket::Acl(_) = self {
8277 } else {
8279 *self =
8281 SentPacket::Acl(fidl::new_empty!(fidl::encoding::Vector<u8, 65539>, D));
8282 }
8283 #[allow(irrefutable_let_patterns)]
8284 if let SentPacket::Acl(ref mut val) = self {
8285 fidl::decode!(fidl::encoding::Vector<u8, 65539>, D, val, decoder, _inner_offset, depth)?;
8286 } else {
8287 unreachable!()
8288 }
8289 }
8290 3 => {
8291 #[allow(irrefutable_let_patterns)]
8292 if let SentPacket::Iso(_) = self {
8293 } else {
8295 *self =
8297 SentPacket::Iso(fidl::new_empty!(fidl::encoding::Vector<u8, 16387>, D));
8298 }
8299 #[allow(irrefutable_let_patterns)]
8300 if let SentPacket::Iso(ref mut val) = self {
8301 fidl::decode!(fidl::encoding::Vector<u8, 16387>, D, val, decoder, _inner_offset, depth)?;
8302 } else {
8303 unreachable!()
8304 }
8305 }
8306 #[allow(deprecated)]
8307 ordinal => {
8308 for _ in 0..num_handles {
8309 decoder.drop_next_handle()?;
8310 }
8311 *self = SentPacket::__SourceBreaking { unknown_ordinal: ordinal };
8312 }
8313 }
8314 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8315 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8316 }
8317 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8318 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8319 }
8320 Ok(())
8321 }
8322 }
8323
8324 impl fidl::encoding::ValueTypeMarker for SnoopPacket {
8325 type Borrowed<'a> = &'a Self;
8326 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8327 value
8328 }
8329 }
8330
8331 unsafe impl fidl::encoding::TypeMarker for SnoopPacket {
8332 type Owned = Self;
8333
8334 #[inline(always)]
8335 fn inline_align(_context: fidl::encoding::Context) -> usize {
8336 8
8337 }
8338
8339 #[inline(always)]
8340 fn inline_size(_context: fidl::encoding::Context) -> usize {
8341 16
8342 }
8343 }
8344
8345 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SnoopPacket, D>
8346 for &SnoopPacket
8347 {
8348 #[inline]
8349 unsafe fn encode(
8350 self,
8351 encoder: &mut fidl::encoding::Encoder<'_, D>,
8352 offset: usize,
8353 _depth: fidl::encoding::Depth,
8354 ) -> fidl::Result<()> {
8355 encoder.debug_check_bounds::<SnoopPacket>(offset);
8356 encoder.write_num::<u64>(self.ordinal(), offset);
8357 match self {
8358 SnoopPacket::Event(ref val) => fidl::encoding::encode_in_envelope::<
8359 fidl::encoding::Vector<u8, 257>,
8360 D,
8361 >(
8362 <fidl::encoding::Vector<u8, 257> as fidl::encoding::ValueTypeMarker>::borrow(
8363 val,
8364 ),
8365 encoder,
8366 offset + 8,
8367 _depth,
8368 ),
8369 SnoopPacket::Command(ref val) => fidl::encoding::encode_in_envelope::<
8370 fidl::encoding::Vector<u8, 258>,
8371 D,
8372 >(
8373 <fidl::encoding::Vector<u8, 258> as fidl::encoding::ValueTypeMarker>::borrow(
8374 val,
8375 ),
8376 encoder,
8377 offset + 8,
8378 _depth,
8379 ),
8380 SnoopPacket::Acl(ref val) => fidl::encoding::encode_in_envelope::<
8381 fidl::encoding::Vector<u8, 65539>,
8382 D,
8383 >(
8384 <fidl::encoding::Vector<u8, 65539> as fidl::encoding::ValueTypeMarker>::borrow(
8385 val,
8386 ),
8387 encoder,
8388 offset + 8,
8389 _depth,
8390 ),
8391 SnoopPacket::Sco(ref val) => fidl::encoding::encode_in_envelope::<
8392 fidl::encoding::Vector<u8, 258>,
8393 D,
8394 >(
8395 <fidl::encoding::Vector<u8, 258> as fidl::encoding::ValueTypeMarker>::borrow(
8396 val,
8397 ),
8398 encoder,
8399 offset + 8,
8400 _depth,
8401 ),
8402 SnoopPacket::Iso(ref val) => fidl::encoding::encode_in_envelope::<
8403 fidl::encoding::Vector<u8, 16387>,
8404 D,
8405 >(
8406 <fidl::encoding::Vector<u8, 16387> as fidl::encoding::ValueTypeMarker>::borrow(
8407 val,
8408 ),
8409 encoder,
8410 offset + 8,
8411 _depth,
8412 ),
8413 SnoopPacket::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8414 }
8415 }
8416 }
8417
8418 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SnoopPacket {
8419 #[inline(always)]
8420 fn new_empty() -> Self {
8421 Self::__SourceBreaking { unknown_ordinal: 0 }
8422 }
8423
8424 #[inline]
8425 unsafe fn decode(
8426 &mut self,
8427 decoder: &mut fidl::encoding::Decoder<'_, D>,
8428 offset: usize,
8429 mut depth: fidl::encoding::Depth,
8430 ) -> fidl::Result<()> {
8431 decoder.debug_check_bounds::<Self>(offset);
8432 #[allow(unused_variables)]
8433 let next_out_of_line = decoder.next_out_of_line();
8434 let handles_before = decoder.remaining_handles();
8435 let (ordinal, inlined, num_bytes, num_handles) =
8436 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8437
8438 let member_inline_size = match ordinal {
8439 1 => <fidl::encoding::Vector<u8, 257> as fidl::encoding::TypeMarker>::inline_size(
8440 decoder.context,
8441 ),
8442 2 => <fidl::encoding::Vector<u8, 258> as fidl::encoding::TypeMarker>::inline_size(
8443 decoder.context,
8444 ),
8445 3 => {
8446 <fidl::encoding::Vector<u8, 65539> as fidl::encoding::TypeMarker>::inline_size(
8447 decoder.context,
8448 )
8449 }
8450 4 => <fidl::encoding::Vector<u8, 258> as fidl::encoding::TypeMarker>::inline_size(
8451 decoder.context,
8452 ),
8453 5 => {
8454 <fidl::encoding::Vector<u8, 16387> as fidl::encoding::TypeMarker>::inline_size(
8455 decoder.context,
8456 )
8457 }
8458 0 => return Err(fidl::Error::UnknownUnionTag),
8459 _ => num_bytes as usize,
8460 };
8461
8462 if inlined != (member_inline_size <= 4) {
8463 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8464 }
8465 let _inner_offset;
8466 if inlined {
8467 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8468 _inner_offset = offset + 8;
8469 } else {
8470 depth.increment()?;
8471 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8472 }
8473 match ordinal {
8474 1 => {
8475 #[allow(irrefutable_let_patterns)]
8476 if let SnoopPacket::Event(_) = self {
8477 } else {
8479 *self = SnoopPacket::Event(
8481 fidl::new_empty!(fidl::encoding::Vector<u8, 257>, D),
8482 );
8483 }
8484 #[allow(irrefutable_let_patterns)]
8485 if let SnoopPacket::Event(ref mut val) = self {
8486 fidl::decode!(fidl::encoding::Vector<u8, 257>, D, val, decoder, _inner_offset, depth)?;
8487 } else {
8488 unreachable!()
8489 }
8490 }
8491 2 => {
8492 #[allow(irrefutable_let_patterns)]
8493 if let SnoopPacket::Command(_) = self {
8494 } else {
8496 *self = SnoopPacket::Command(
8498 fidl::new_empty!(fidl::encoding::Vector<u8, 258>, D),
8499 );
8500 }
8501 #[allow(irrefutable_let_patterns)]
8502 if let SnoopPacket::Command(ref mut val) = self {
8503 fidl::decode!(fidl::encoding::Vector<u8, 258>, D, val, decoder, _inner_offset, depth)?;
8504 } else {
8505 unreachable!()
8506 }
8507 }
8508 3 => {
8509 #[allow(irrefutable_let_patterns)]
8510 if let SnoopPacket::Acl(_) = self {
8511 } else {
8513 *self = SnoopPacket::Acl(
8515 fidl::new_empty!(fidl::encoding::Vector<u8, 65539>, D),
8516 );
8517 }
8518 #[allow(irrefutable_let_patterns)]
8519 if let SnoopPacket::Acl(ref mut val) = self {
8520 fidl::decode!(fidl::encoding::Vector<u8, 65539>, D, val, decoder, _inner_offset, depth)?;
8521 } else {
8522 unreachable!()
8523 }
8524 }
8525 4 => {
8526 #[allow(irrefutable_let_patterns)]
8527 if let SnoopPacket::Sco(_) = self {
8528 } else {
8530 *self =
8532 SnoopPacket::Sco(fidl::new_empty!(fidl::encoding::Vector<u8, 258>, D));
8533 }
8534 #[allow(irrefutable_let_patterns)]
8535 if let SnoopPacket::Sco(ref mut val) = self {
8536 fidl::decode!(fidl::encoding::Vector<u8, 258>, D, val, decoder, _inner_offset, depth)?;
8537 } else {
8538 unreachable!()
8539 }
8540 }
8541 5 => {
8542 #[allow(irrefutable_let_patterns)]
8543 if let SnoopPacket::Iso(_) = self {
8544 } else {
8546 *self = SnoopPacket::Iso(
8548 fidl::new_empty!(fidl::encoding::Vector<u8, 16387>, D),
8549 );
8550 }
8551 #[allow(irrefutable_let_patterns)]
8552 if let SnoopPacket::Iso(ref mut val) = self {
8553 fidl::decode!(fidl::encoding::Vector<u8, 16387>, D, val, decoder, _inner_offset, depth)?;
8554 } else {
8555 unreachable!()
8556 }
8557 }
8558 #[allow(deprecated)]
8559 ordinal => {
8560 for _ in 0..num_handles {
8561 decoder.drop_next_handle()?;
8562 }
8563 *self = SnoopPacket::__SourceBreaking { unknown_ordinal: ordinal };
8564 }
8565 }
8566 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8567 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8568 }
8569 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8570 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8571 }
8572 Ok(())
8573 }
8574 }
8575
8576 impl fidl::encoding::ValueTypeMarker for VendorCommand {
8577 type Borrowed<'a> = &'a Self;
8578 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
8579 value
8580 }
8581 }
8582
8583 unsafe impl fidl::encoding::TypeMarker for VendorCommand {
8584 type Owned = Self;
8585
8586 #[inline(always)]
8587 fn inline_align(_context: fidl::encoding::Context) -> usize {
8588 8
8589 }
8590
8591 #[inline(always)]
8592 fn inline_size(_context: fidl::encoding::Context) -> usize {
8593 16
8594 }
8595 }
8596
8597 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<VendorCommand, D>
8598 for &VendorCommand
8599 {
8600 #[inline]
8601 unsafe fn encode(
8602 self,
8603 encoder: &mut fidl::encoding::Encoder<'_, D>,
8604 offset: usize,
8605 _depth: fidl::encoding::Depth,
8606 ) -> fidl::Result<()> {
8607 encoder.debug_check_bounds::<VendorCommand>(offset);
8608 encoder.write_num::<u64>(self.ordinal(), offset);
8609 match self {
8610 VendorCommand::SetAclPriority(ref val) => fidl::encoding::encode_in_envelope::<
8611 VendorSetAclPriorityParams,
8612 D,
8613 >(
8614 <VendorSetAclPriorityParams as fidl::encoding::ValueTypeMarker>::borrow(val),
8615 encoder,
8616 offset + 8,
8617 _depth,
8618 ),
8619 VendorCommand::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
8620 }
8621 }
8622 }
8623
8624 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for VendorCommand {
8625 #[inline(always)]
8626 fn new_empty() -> Self {
8627 Self::__SourceBreaking { unknown_ordinal: 0 }
8628 }
8629
8630 #[inline]
8631 unsafe fn decode(
8632 &mut self,
8633 decoder: &mut fidl::encoding::Decoder<'_, D>,
8634 offset: usize,
8635 mut depth: fidl::encoding::Depth,
8636 ) -> fidl::Result<()> {
8637 decoder.debug_check_bounds::<Self>(offset);
8638 #[allow(unused_variables)]
8639 let next_out_of_line = decoder.next_out_of_line();
8640 let handles_before = decoder.remaining_handles();
8641 let (ordinal, inlined, num_bytes, num_handles) =
8642 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
8643
8644 let member_inline_size = match ordinal {
8645 1 => <VendorSetAclPriorityParams as fidl::encoding::TypeMarker>::inline_size(
8646 decoder.context,
8647 ),
8648 0 => return Err(fidl::Error::UnknownUnionTag),
8649 _ => num_bytes as usize,
8650 };
8651
8652 if inlined != (member_inline_size <= 4) {
8653 return Err(fidl::Error::InvalidInlineBitInEnvelope);
8654 }
8655 let _inner_offset;
8656 if inlined {
8657 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
8658 _inner_offset = offset + 8;
8659 } else {
8660 depth.increment()?;
8661 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
8662 }
8663 match ordinal {
8664 1 => {
8665 #[allow(irrefutable_let_patterns)]
8666 if let VendorCommand::SetAclPriority(_) = self {
8667 } else {
8669 *self = VendorCommand::SetAclPriority(fidl::new_empty!(
8671 VendorSetAclPriorityParams,
8672 D
8673 ));
8674 }
8675 #[allow(irrefutable_let_patterns)]
8676 if let VendorCommand::SetAclPriority(ref mut val) = self {
8677 fidl::decode!(
8678 VendorSetAclPriorityParams,
8679 D,
8680 val,
8681 decoder,
8682 _inner_offset,
8683 depth
8684 )?;
8685 } else {
8686 unreachable!()
8687 }
8688 }
8689 #[allow(deprecated)]
8690 ordinal => {
8691 for _ in 0..num_handles {
8692 decoder.drop_next_handle()?;
8693 }
8694 *self = VendorCommand::__SourceBreaking { unknown_ordinal: ordinal };
8695 }
8696 }
8697 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
8698 return Err(fidl::Error::InvalidNumBytesInEnvelope);
8699 }
8700 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
8701 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
8702 }
8703 Ok(())
8704 }
8705 }
8706}