Skip to main content

fidl_fuchsia_hardware_bluetooth__common/
fidl_fuchsia_hardware_bluetooth__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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
15/// The maximum buffer length an encoded command might require.
16/// Update when adding new commands that might require a larger buffer.
17pub 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
25/// Advertising data MTUs for legacy (4.x) and extended (5.x) advertising PDU types
26/// (see Core Specification v5.4, Vol 4, Part E, Sections 7.3.11 & 7.8.54).
27pub const MAX_LEGACY_ADVERTISING_DATA_LENGTH: u8 = 31;
28
29/// The maximum size (in bytes) of a local name assigned using the HCI_Write_Local_Name command
30/// (see Core Specification v5.4, Vol 4, Part E, 7.3.11).
31pub const MAX_LOCAL_NAME_LENGTH: u8 = 248;
32
33pub const MAX_NAME_LENGTH: u32 = 32;
34
35/// Maximum service records that can be advertised at once.
36pub 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/// Pattern that matches an unknown `ConnectionState` member.
51#[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/// Error codes that can be generated for emulator-wide configurations.
101#[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/// Pattern that matches an unknown `EmulatorError` member.
112#[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/// Error codes that are generated for functions that manipulate fake peers.
162#[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/// Pattern that matches an unknown `EmulatorPeerError` member.
174#[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/// Pre-set HCI configurations.
227#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
228pub enum HciConfig {
229    /// Support both BR/EDR and LE in LMP features.
230    DualMode,
231    /// Limits supported features and HCI commands to those that are required for LE only.
232    LeOnly,
233    #[doc(hidden)]
234    __SourceBreaking { unknown_ordinal: u32 },
235}
236
237/// Pattern that matches an unknown `HciConfig` member.
238#[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/// Defines the list of HCI protocol error codes that a Bluetooth controller can report. These
288/// values are taken from Bluetooth Core Specification v5.4, Vol 2, Part D, Section 1.3
289#[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/// Pattern that matches an unknown `HciError` member.
370#[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/// LE legacy advertising types from Bluetooth Core Specification v5.4, Vol 4, Part E, 7.8.5.
630#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
631#[repr(u8)]
632pub enum LegacyAdvertisingType {
633    /// Connectable and scannable.
634    AdvInd = 0,
635    /// Connectable, high-duty cycle, directed.
636    AdvDirectInd = 1,
637    /// Scannable, undirected.
638    AdvScanInd = 2,
639    /// Non-connectable, undirected
640    AdvNonconnInd = 3,
641    /// Scan response
642    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/// Pattern that matches an unknown `ScoCodingFormat` member.
698#[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/// Pattern that matches an unknown `ScoEncoding` member.
758#[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/// Pattern that matches an unknown `ScoSampleRate` member.
818#[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/// Pattern that matches an unknown `VendorAclDirection` member.
878#[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/// Pattern that matches an unknown `VendorAclPriority` member.
938#[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/// The HCI ACL data flow-control parameters.
1068#[derive(Clone, Debug, Default, PartialEq)]
1069pub struct AclBufferSettings {
1070    /// ACL frame MTU in bytes.
1071    pub data_packet_length: Option<u16>,
1072    /// The maximum number of ACL frames that the controller can buffer.
1073    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/// Indicates support for Android Vendor Extensions
1090/// If empty, Android HCI Extensions are supported but the version is unspecified.
1091/// The version should be detected using the LE Get Vendor Capabilities Command.
1092#[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/// Various settings for audio offload data paths, which vary by controller
1103/// manufacturer and firmware version.
1104#[derive(Clone, Debug, Default, PartialEq)]
1105pub struct AudioOffloadSettings {
1106    /// The index to use when SCO OFFLOAD DataPath is requested.
1107    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/// Contains Bluetooth controller & baseband parameters that are writable by the host but don't
1115/// fall under a particular procedural category (as are those defined below).
1116#[derive(Clone, Debug, Default, PartialEq)]
1117pub struct ControllerParameters {
1118    /// The local name used for the Link Layer name discovery procedure. This parameter only applies
1119    /// for the BR/EDR transport. In LE, the local name is provided as an advertising parameter and
1120    /// via GATT.
1121    pub local_name: Option<String>,
1122    /// The local "Class of Device" used during the BR/EDR inquiry procedure.
1123    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/// Controller settings used by the emulator.
1131#[derive(Clone, Debug, Default, PartialEq)]
1132pub struct EmulatorSettings {
1133    /// The `BD_ADDR` (BR/EDR) or LE Public Device Address. Defaults to "00:00:00:00:00:00".
1134    pub address: Option<fidl_fuchsia_bluetooth__common::Address>,
1135    /// Supported HCI command configuration. Defaults to "`DUAL_MODE`".
1136    pub hci_config: Option<HciConfig>,
1137    /// True if the 5.0 extended advertising features are supported. Defaults to "false".
1138    pub extended_advertising: Option<bool>,
1139    /// The ACL-U data buffer settings. Defaults to
1140    ///    data_packet_length: 1024
1141    ///    total_num_data_packets: 5
1142    /// IF `hci_config` is set to `DUAL_MODE`. Defaults to null otherwise.
1143    pub acl_buffer_settings: Option<AclBufferSettings>,
1144    /// The LE-U ACL data buffer settings. Defaults to
1145    ///    data_packet_length: 251
1146    ///    total_num_data_packets: 5
1147    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/// Represents the LE scan state. The fields are present if scan parameters have been configured.
1155#[derive(Clone, Debug, Default, PartialEq)]
1156pub struct LeScanState {
1157    /// True if a scan is enabled.
1158    pub enabled: Option<bool>,
1159    /// True if an active scan is enabled. Otherwise the scan is passive.
1160    pub active: Option<bool>,
1161    /// The scan interval and window parameters. These are defined in Bluetooth controller
1162    /// "timeslices" where 1 slice = 0.625 ms. Valid values range from 0x4 (2.5 ms) to 0x4000 (10.24
1163    /// ms).
1164    pub interval: Option<u16>,
1165    pub window: Option<u16>,
1166    /// True if duplicate filtering has been enabled.
1167    pub filter_duplicates: Option<bool>,
1168    /// The type of local device address used.
1169    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/// Controller parameters for legacy advertising.
1177#[derive(Clone, Debug, Default, PartialEq)]
1178pub struct LegacyAdvertisingState {
1179    /// True if advertising has been enabled using the HCI_LE_Set_Advertising_Enable command.
1180    /// This field is always present.
1181    pub enabled: Option<bool>,
1182    /// The most recently configured advertising type. This field is always present. Defaults to
1183    /// [`fuchsia.hardware.bluetooth/LegacyAdvertisingType.ADV_IND`].
1184    pub type_: Option<LegacyAdvertisingType>,
1185    /// The LE address type being used for advertising. This field is always present. Defaults to
1186    /// [`fuchsia.bluetooth/AddressType.PUBLIC`].
1187    pub address_type: Option<fidl_fuchsia_bluetooth__common::AddressType>,
1188    /// The host-specified advertising interval range parameters. Present only if configured.
1189    pub interval_min: Option<u16>,
1190    pub interval_max: Option<u16>,
1191    /// Any configured advertising and scan response data. Present only if either field is non-zero.
1192    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    /// The LE address of the peer.
1203    pub le_address: Option<fidl_fuchsia_bluetooth__common::Address>,
1204    /// The advertising data contents. If not present, the advertising data sent by this peer
1205    /// will be empty.
1206    pub advertisement: Option<AdvertisingData>,
1207    /// The scan response data contents. When present, the fake controller will generate
1208    /// scannable advertising packets and scan response events.
1209    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    /// Monotonically increasing packet count. Used for flow control in conjunction with
1229    /// `OnAcknowledgePackets`.
1230    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/// Parameters for filing controller crash reports.
1240#[derive(Clone, Debug, Default, PartialEq)]
1241pub struct VendorCrashParameters {
1242    /// The prefixes of the vendor event payloads to match. For example, this could
1243    /// be the subevent code. If the prefix is empty, all vendor debug events will be
1244    /// treated as crash events.
1245    /// Required. At least one prefix must be specified.
1246    pub crash_events: Option<Vec<Vec<u8>>>,
1247    /// The program name to use in the crash report.
1248    /// Required.
1249    pub program_name: Option<String>,
1250    /// The signature to use in the crash report.
1251    /// Must match [a-z][a-z-]* i.e. only lowercase letters and hyphens.
1252    /// Required.
1253    pub crash_signature: Option<String>,
1254    #[doc(hidden)]
1255    pub __source_breaking: fidl::marker::SourceBreaking,
1256}
1257
1258impl fidl::Persistable for VendorCrashParameters {}
1259
1260/// Table of features supported by the vendor.
1261#[derive(Clone, Debug, Default, PartialEq)]
1262pub struct VendorFeatures {
1263    /// Supports the SetAclPriority command
1264    /// If missing, the command is not supported.
1265    pub acl_priority_command: Option<bool>,
1266    /// Supports Android Vendor Extensions
1267    /// If missing, Android Vendor Extensions are not supported.
1268    pub android_vendor_extensions: Option<AndroidVendorSupport>,
1269    /// Specify some alternative settings for audio offload paths.
1270    /// If missing, use the reasonable defaults or configured settings.
1271    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    /// The ACL connection handle which is requested to be prioritized.
1281    pub connection_handle: Option<u16>,
1282    pub priority: Option<VendorAclPriority>,
1283    /// The direction data should be prioritized in. May not be supported by all
1284    /// vendors. Ignored when priority is normal.
1285    pub direction: Option<VendorAclDirection>,
1286    #[doc(hidden)]
1287    pub __source_breaking: fidl::marker::SourceBreaking,
1288}
1289
1290impl fidl::Persistable for VendorSetAclPriorityParams {}
1291
1292/// Packet received by the host from the controller.
1293#[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/// Pattern that matches an unknown `ReceivedPacket` member.
1305#[macro_export]
1306macro_rules! ReceivedPacketUnknown {
1307    () => {
1308        _
1309    };
1310}
1311
1312// Custom PartialEq so that unknown variants are not equal to themselves.
1313impl 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/// Packet sent by the host to the controller.
1352#[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/// Pattern that matches an unknown `SentPacket` member.
1364#[macro_export]
1365macro_rules! SentPacketUnknown {
1366    () => {
1367        _
1368    };
1369}
1370
1371// Custom PartialEq so that unknown variants are not equal to themselves.
1372impl 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/// Pattern that matches an unknown `SnoopPacket` member.
1424#[macro_export]
1425macro_rules! SnoopPacketUnknown {
1426    () => {
1427        _
1428    };
1429}
1430
1431// Custom PartialEq so that unknown variants are not equal to themselves.
1432impl 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/// Pattern that matches an unknown `VendorCommand` member.
1484#[macro_export]
1485macro_rules! VendorCommandUnknown {
1486    () => {
1487        _
1488    };
1489}
1490
1491// Custom PartialEq so that unknown variants are not equal to themselves.
1492impl 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            // Delegate to tuple encoding.
2432            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            // Zero out padding regions. There's no need to apply masks
2454            // because the unmasked parts will be overwritten by fields.
2455            // Write the fields.
2456            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            // Verify that padding bytes are zero.
2478            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            // Delegate to tuple encoding.
2524            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            // Zero out padding regions. There's no need to apply masks
2546            // because the unmasked parts will be overwritten by fields.
2547            // Write the fields.
2548            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            // Verify that padding bytes are zero.
2575            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            // Delegate to tuple encoding.
2620            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            // Zero out padding regions. There's no need to apply masks
2650            // because the unmasked parts will be overwritten by fields.
2651            // Write the fields.
2652            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            // Verify that padding bytes are zero.
2680            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            // Delegate to tuple encoding.
2728            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            // Zero out padding regions. There's no need to apply masks
2748            // because the unmasked parts will be overwritten by fields.
2749            // Write the fields.
2750            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            // Verify that padding bytes are zero.
2772            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            // Delegate to tuple encoding.
2811            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            // Zero out padding regions. There's no need to apply masks
2833            // because the unmasked parts will be overwritten by fields.
2834            // Write the fields.
2835            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            // Verify that padding bytes are zero.
2857            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            // Delegate to tuple encoding.
2903            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            // Zero out padding regions. There's no need to apply masks
2933            // because the unmasked parts will be overwritten by fields.
2934            // Write the fields.
2935            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            // Verify that padding bytes are zero.
2959            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            // Delegate to tuple encoding.
2998            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            // Zero out padding regions. There's no need to apply masks
3020            // because the unmasked parts will be overwritten by fields.
3021            // Write the fields.
3022            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            // Verify that padding bytes are zero.
3044            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            // Delegate to tuple encoding.
3089            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            // Zero out padding regions. There's no need to apply masks
3113            // because the unmasked parts will be overwritten by fields.
3114            // Write the fields.
3115            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            // Verify that padding bytes are zero.
3135            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                // Copy the object into the buffer.
3184                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                // Zero out padding regions. Unlike `fidl_struct_impl_noncopy!`, this must be
3188                // done second because the memcpy will write garbage to these bytes.
3189            }
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            // Zero out padding regions. There's no need to apply masks
3205            // because the unmasked parts will be overwritten by fields.
3206            // Write the fields.
3207            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            // Verify that padding bytes are zero.
3230            // Copy from the buffer into the object.
3231            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            // Delegate to tuple encoding.
3271            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            // Zero out padding regions. There's no need to apply masks
3295            // because the unmasked parts will be overwritten by fields.
3296            // Write the fields.
3297            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            // Verify that padding bytes are zero.
3319            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            // Delegate to tuple encoding.
3358            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            // Zero out padding regions. There's no need to apply masks
3380            // because the unmasked parts will be overwritten by fields.
3381            // Write the fields.
3382            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            // Verify that padding bytes are zero.
3409            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            // Vector header
3466            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            // Calling encoder.out_of_line_offset(0) is not allowed.
3470            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3484            // are envelope_size bytes.
3485            let cur_offset: usize = (1 - 1) * envelope_size;
3486
3487            // Zero reserved fields.
3488            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3489
3490            // Safety:
3491            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3492            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3493            //   envelope_size bytes, there is always sufficient room.
3494            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3509            // are envelope_size bytes.
3510            let cur_offset: usize = (2 - 1) * envelope_size;
3511
3512            // Zero reserved fields.
3513            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3514
3515            // Safety:
3516            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3517            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3518            //   envelope_size bytes, there is always sufficient room.
3519            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            // Calling decoder.out_of_line_offset(0) is not allowed.
3552            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            // Decode the envelope for each type.
3560            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            // Decode unknown envelopes for gaps in ordinals.
3569            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            // Decode unknown envelopes for gaps in ordinals.
3613            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            // Decode the remaining unknown envelopes.
3653            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            // Vector header
3705            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            // Calling encoder.out_of_line_offset(0) is not allowed.
3709            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3723            // are envelope_size bytes.
3724            let cur_offset: usize = (1 - 1) * envelope_size;
3725
3726            // Zero reserved fields.
3727            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3728
3729            // Safety:
3730            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3731            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3732            //   envelope_size bytes, there is always sufficient room.
3733            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            // Calling decoder.out_of_line_offset(0) is not allowed.
3766            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            // Decode the envelope for each type.
3774            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            // Decode unknown envelopes for gaps in ordinals.
3783            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            // Decode the remaining unknown envelopes.
3826            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            // Vector header
3881            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            // Calling encoder.out_of_line_offset(0) is not allowed.
3885            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3899            // are envelope_size bytes.
3900            let cur_offset: usize = (1 - 1) * envelope_size;
3901
3902            // Zero reserved fields.
3903            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3904
3905            // Safety:
3906            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3907            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3908            //   envelope_size bytes, there is always sufficient room.
3909            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
3922            // are envelope_size bytes.
3923            let cur_offset: usize = (2 - 1) * envelope_size;
3924
3925            // Zero reserved fields.
3926            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3927
3928            // Safety:
3929            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
3930            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
3931            //   envelope_size bytes, there is always sufficient room.
3932            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            // Calling decoder.out_of_line_offset(0) is not allowed.
3963            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            // Decode the envelope for each type.
3971            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            // Decode unknown envelopes for gaps in ordinals.
3980            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            // Decode unknown envelopes for gaps in ordinals.
4023            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            // Decode the remaining unknown envelopes.
4062            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            // Vector header
4114            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            // Calling encoder.out_of_line_offset(0) is not allowed.
4118            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4132            // are envelope_size bytes.
4133            let cur_offset: usize = (1 - 1) * envelope_size;
4134
4135            // Zero reserved fields.
4136            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4137
4138            // Safety:
4139            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4140            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4141            //   envelope_size bytes, there is always sufficient room.
4142            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            // Calling decoder.out_of_line_offset(0) is not allowed.
4175            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            // Decode the envelope for each type.
4183            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            // Decode unknown envelopes for gaps in ordinals.
4192            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            // Decode the remaining unknown envelopes.
4231            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            // Vector header
4286            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            // Calling encoder.out_of_line_offset(0) is not allowed.
4290            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4304            // are envelope_size bytes.
4305            let cur_offset: usize = (1 - 1) * envelope_size;
4306
4307            // Zero reserved fields.
4308            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4309
4310            // Safety:
4311            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4312            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4313            //   envelope_size bytes, there is always sufficient room.
4314            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4329            // are envelope_size bytes.
4330            let cur_offset: usize = (2 - 1) * envelope_size;
4331
4332            // Zero reserved fields.
4333            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4334
4335            // Safety:
4336            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4337            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4338            //   envelope_size bytes, there is always sufficient room.
4339            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            // Calling decoder.out_of_line_offset(0) is not allowed.
4368            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            // Decode the envelope for each type.
4376            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            // Decode unknown envelopes for gaps in ordinals.
4385            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            // Decode unknown envelopes for gaps in ordinals.
4439            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            // Decode the remaining unknown envelopes.
4486            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            // Vector header
4550            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            // Calling encoder.out_of_line_offset(0) is not allowed.
4554            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4568            // are envelope_size bytes.
4569            let cur_offset: usize = (1 - 1) * envelope_size;
4570
4571            // Zero reserved fields.
4572            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4573
4574            // Safety:
4575            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4576            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4577            //   envelope_size bytes, there is always sufficient room.
4578            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4589            // are envelope_size bytes.
4590            let cur_offset: usize = (2 - 1) * envelope_size;
4591
4592            // Zero reserved fields.
4593            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4594
4595            // Safety:
4596            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4597            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4598            //   envelope_size bytes, there is always sufficient room.
4599            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4614            // are envelope_size bytes.
4615            let cur_offset: usize = (3 - 1) * envelope_size;
4616
4617            // Zero reserved fields.
4618            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4619
4620            // Safety:
4621            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4622            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4623            //   envelope_size bytes, there is always sufficient room.
4624            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4639            // are envelope_size bytes.
4640            let cur_offset: usize = (4 - 1) * envelope_size;
4641
4642            // Zero reserved fields.
4643            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4644
4645            // Safety:
4646            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4647            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4648            //   envelope_size bytes, there is always sufficient room.
4649            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
4664            // are envelope_size bytes.
4665            let cur_offset: usize = (5 - 1) * envelope_size;
4666
4667            // Zero reserved fields.
4668            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4669
4670            // Safety:
4671            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
4672            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
4673            //   envelope_size bytes, there is always sufficient room.
4674            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            // Calling decoder.out_of_line_offset(0) is not allowed.
4707            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            // Decode the envelope for each type.
4715            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            // Decode unknown envelopes for gaps in ordinals.
4724            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            // Decode unknown envelopes for gaps in ordinals.
4775            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            // Decode unknown envelopes for gaps in ordinals.
4818            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            // Decode unknown envelopes for gaps in ordinals.
4862            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            // Decode unknown envelopes for gaps in ordinals.
4907            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            // Decode the remaining unknown envelopes.
4948            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            // Vector header
5015            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            // Calling encoder.out_of_line_offset(0) is not allowed.
5019            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5033            // are envelope_size bytes.
5034            let cur_offset: usize = (1 - 1) * envelope_size;
5035
5036            // Zero reserved fields.
5037            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5038
5039            // Safety:
5040            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5041            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5042            //   envelope_size bytes, there is always sufficient room.
5043            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5056            // are envelope_size bytes.
5057            let cur_offset: usize = (2 - 1) * envelope_size;
5058
5059            // Zero reserved fields.
5060            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5061
5062            // Safety:
5063            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5064            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5065            //   envelope_size bytes, there is always sufficient room.
5066            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5079            // are envelope_size bytes.
5080            let cur_offset: usize = (3 - 1) * envelope_size;
5081
5082            // Zero reserved fields.
5083            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5084
5085            // Safety:
5086            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5087            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5088            //   envelope_size bytes, there is always sufficient room.
5089            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5102            // are envelope_size bytes.
5103            let cur_offset: usize = (4 - 1) * envelope_size;
5104
5105            // Zero reserved fields.
5106            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5107
5108            // Safety:
5109            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5110            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5111            //   envelope_size bytes, there is always sufficient room.
5112            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5125            // are envelope_size bytes.
5126            let cur_offset: usize = (5 - 1) * envelope_size;
5127
5128            // Zero reserved fields.
5129            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5130
5131            // Safety:
5132            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5133            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5134            //   envelope_size bytes, there is always sufficient room.
5135            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5150            // are envelope_size bytes.
5151            let cur_offset: usize = (6 - 1) * envelope_size;
5152
5153            // Zero reserved fields.
5154            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5155
5156            // Safety:
5157            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5158            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5159            //   envelope_size bytes, there is always sufficient room.
5160            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            // Calling decoder.out_of_line_offset(0) is not allowed.
5189            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            // Decode the envelope for each type.
5197            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            // Decode unknown envelopes for gaps in ordinals.
5206            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            // Decode unknown envelopes for gaps in ordinals.
5249            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            // Decode unknown envelopes for gaps in ordinals.
5292            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            // Decode unknown envelopes for gaps in ordinals.
5335            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            // Decode unknown envelopes for gaps in ordinals.
5378            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            // Decode unknown envelopes for gaps in ordinals.
5422            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            // Decode the remaining unknown envelopes.
5469            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            // Vector header
5539            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            // Calling encoder.out_of_line_offset(0) is not allowed.
5543            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5557            // are envelope_size bytes.
5558            let cur_offset: usize = (1 - 1) * envelope_size;
5559
5560            // Zero reserved fields.
5561            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5562
5563            // Safety:
5564            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5565            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5566            //   envelope_size bytes, there is always sufficient room.
5567            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5580            // are envelope_size bytes.
5581            let cur_offset: usize = (2 - 1) * envelope_size;
5582
5583            // Zero reserved fields.
5584            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5585
5586            // Safety:
5587            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5588            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5589            //   envelope_size bytes, there is always sufficient room.
5590            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5605            // are envelope_size bytes.
5606            let cur_offset: usize = (3 - 1) * envelope_size;
5607
5608            // Zero reserved fields.
5609            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5610
5611            // Safety:
5612            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5613            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5614            //   envelope_size bytes, there is always sufficient room.
5615            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5626            // are envelope_size bytes.
5627            let cur_offset: usize = (4 - 1) * envelope_size;
5628
5629            // Zero reserved fields.
5630            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5631
5632            // Safety:
5633            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5634            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5635            //   envelope_size bytes, there is always sufficient room.
5636            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5649            // are envelope_size bytes.
5650            let cur_offset: usize = (5 - 1) * envelope_size;
5651
5652            // Zero reserved fields.
5653            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5654
5655            // Safety:
5656            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5657            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5658            //   envelope_size bytes, there is always sufficient room.
5659            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5672            // are envelope_size bytes.
5673            let cur_offset: usize = (6 - 1) * envelope_size;
5674
5675            // Zero reserved fields.
5676            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5677
5678            // Safety:
5679            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5680            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5681            //   envelope_size bytes, there is always sufficient room.
5682            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
5697            // are envelope_size bytes.
5698            let cur_offset: usize = (7 - 1) * envelope_size;
5699
5700            // Zero reserved fields.
5701            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5702
5703            // Safety:
5704            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
5705            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
5706            //   envelope_size bytes, there is always sufficient room.
5707            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            // Calling decoder.out_of_line_offset(0) is not allowed.
5742            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            // Decode the envelope for each type.
5750            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            // Decode unknown envelopes for gaps in ordinals.
5759            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            // Decode unknown envelopes for gaps in ordinals.
5802            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            // Decode unknown envelopes for gaps in ordinals.
5855            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            // Decode unknown envelopes for gaps in ordinals.
5906            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            // Decode unknown envelopes for gaps in ordinals.
5949            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            // Decode unknown envelopes for gaps in ordinals.
5992            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            // Decode unknown envelopes for gaps in ordinals.
6037            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            // Decode the remaining unknown envelopes.
6077            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            // Vector header
6136            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            // Calling encoder.out_of_line_offset(0) is not allowed.
6140            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6154            // are envelope_size bytes.
6155            let cur_offset: usize = (1 - 1) * envelope_size;
6156
6157            // Zero reserved fields.
6158            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6159
6160            // Safety:
6161            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6162            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6163            //   envelope_size bytes, there is always sufficient room.
6164            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6175            // are envelope_size bytes.
6176            let cur_offset: usize = (2 - 1) * envelope_size;
6177
6178            // Zero reserved fields.
6179            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6180
6181            // Safety:
6182            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6183            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6184            //   envelope_size bytes, there is always sufficient room.
6185            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6200            // are envelope_size bytes.
6201            let cur_offset: usize = (3 - 1) * envelope_size;
6202
6203            // Zero reserved fields.
6204            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6205
6206            // Safety:
6207            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6208            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6209            //   envelope_size bytes, there is always sufficient room.
6210            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            // Calling decoder.out_of_line_offset(0) is not allowed.
6245            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            // Decode the envelope for each type.
6253            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            // Decode unknown envelopes for gaps in ordinals.
6262            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            // Decode unknown envelopes for gaps in ordinals.
6313            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            // Decode unknown envelopes for gaps in ordinals.
6357            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            // Decode the remaining unknown envelopes.
6397            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            // Vector header
6452            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            // Calling encoder.out_of_line_offset(0) is not allowed.
6456            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6470            // are envelope_size bytes.
6471            let cur_offset: usize = (1 - 1) * envelope_size;
6472
6473            // Zero reserved fields.
6474            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6475
6476            // Safety:
6477            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6478            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6479            //   envelope_size bytes, there is always sufficient room.
6480            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6493            // are envelope_size bytes.
6494            let cur_offset: usize = (2 - 1) * envelope_size;
6495
6496            // Zero reserved fields.
6497            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6498
6499            // Safety:
6500            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6501            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6502            //   envelope_size bytes, there is always sufficient room.
6503            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            // Calling decoder.out_of_line_offset(0) is not allowed.
6536            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            // Decode the envelope for each type.
6544            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            // Decode unknown envelopes for gaps in ordinals.
6553            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            // Decode unknown envelopes for gaps in ordinals.
6596            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            // Decode the remaining unknown envelopes.
6635            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            // Vector header
6693            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            // Calling encoder.out_of_line_offset(0) is not allowed.
6697            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6711            // are envelope_size bytes.
6712            let cur_offset: usize = (1 - 1) * envelope_size;
6713
6714            // Zero reserved fields.
6715            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6716
6717            // Safety:
6718            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6719            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6720            //   envelope_size bytes, there is always sufficient room.
6721            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6734            // are envelope_size bytes.
6735            let cur_offset: usize = (2 - 1) * envelope_size;
6736
6737            // Zero reserved fields.
6738            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6739
6740            // Safety:
6741            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6742            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6743            //   envelope_size bytes, there is always sufficient room.
6744            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
6759            // are envelope_size bytes.
6760            let cur_offset: usize = (3 - 1) * envelope_size;
6761
6762            // Zero reserved fields.
6763            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6764
6765            // Safety:
6766            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
6767            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
6768            //   envelope_size bytes, there is always sufficient room.
6769            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            // Calling decoder.out_of_line_offset(0) is not allowed.
6802            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            // Decode the envelope for each type.
6810            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            // Decode unknown envelopes for gaps in ordinals.
6819            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            // Decode unknown envelopes for gaps in ordinals.
6862            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            // Decode unknown envelopes for gaps in ordinals.
6906            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            // Decode the remaining unknown envelopes.
6945            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            // Vector header
7003            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            // Calling encoder.out_of_line_offset(0) is not allowed.
7007            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7021            // are envelope_size bytes.
7022            let cur_offset: usize = (1 - 1) * envelope_size;
7023
7024            // Zero reserved fields.
7025            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7026
7027            // Safety:
7028            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7029            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7030            //   envelope_size bytes, there is always sufficient room.
7031            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7042            // are envelope_size bytes.
7043            let cur_offset: usize = (2 - 1) * envelope_size;
7044
7045            // Zero reserved fields.
7046            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7047
7048            // Safety:
7049            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7050            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7051            //   envelope_size bytes, there is always sufficient room.
7052            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7063            // are envelope_size bytes.
7064            let cur_offset: usize = (3 - 1) * envelope_size;
7065
7066            // Zero reserved fields.
7067            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7068
7069            // Safety:
7070            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7071            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7072            //   envelope_size bytes, there is always sufficient room.
7073            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            // Calling decoder.out_of_line_offset(0) is not allowed.
7106            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            // Decode the envelope for each type.
7114            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            // Decode unknown envelopes for gaps in ordinals.
7123            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            // Decode unknown envelopes for gaps in ordinals.
7181            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            // Decode unknown envelopes for gaps in ordinals.
7232            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            // Decode the remaining unknown envelopes.
7282            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            // Vector header
7340            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            // Calling encoder.out_of_line_offset(0) is not allowed.
7344            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7358            // are envelope_size bytes.
7359            let cur_offset: usize = (1 - 1) * envelope_size;
7360
7361            // Zero reserved fields.
7362            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7363
7364            // Safety:
7365            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7366            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7367            //   envelope_size bytes, there is always sufficient room.
7368            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7383            // are envelope_size bytes.
7384            let cur_offset: usize = (2 - 1) * envelope_size;
7385
7386            // Zero reserved fields.
7387            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7388
7389            // Safety:
7390            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7391            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7392            //   envelope_size bytes, there is always sufficient room.
7393            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7408            // are envelope_size bytes.
7409            let cur_offset: usize = (3 - 1) * envelope_size;
7410
7411            // Zero reserved fields.
7412            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7413
7414            // Safety:
7415            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7416            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7417            //   envelope_size bytes, there is always sufficient room.
7418            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            // Calling decoder.out_of_line_offset(0) is not allowed.
7451            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            // Decode the envelope for each type.
7459            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            // Decode unknown envelopes for gaps in ordinals.
7468            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            // Decode unknown envelopes for gaps in ordinals.
7512            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            // Decode unknown envelopes for gaps in ordinals.
7566            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            // Decode the remaining unknown envelopes.
7616            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            // Vector header
7674            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            // Calling encoder.out_of_line_offset(0) is not allowed.
7678            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7692            // are envelope_size bytes.
7693            let cur_offset: usize = (1 - 1) * envelope_size;
7694
7695            // Zero reserved fields.
7696            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7697
7698            // Safety:
7699            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7700            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7701            //   envelope_size bytes, there is always sufficient room.
7702            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7717            // are envelope_size bytes.
7718            let cur_offset: usize = (2 - 1) * envelope_size;
7719
7720            // Zero reserved fields.
7721            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7722
7723            // Safety:
7724            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7725            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7726            //   envelope_size bytes, there is always sufficient room.
7727            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            // Write at offset+(ordinal-1)*envelope_size, since ordinals are one-based and envelopes
7742            // are envelope_size bytes.
7743            let cur_offset: usize = (3 - 1) * envelope_size;
7744
7745            // Zero reserved fields.
7746            encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7747
7748            // Safety:
7749            // - bytes_len is calculated to fit envelope_size*max(member.ordinal).
7750            // - Since cur_offset is envelope_size*(member.ordinal - 1) and the envelope takes
7751            //   envelope_size bytes, there is always sufficient room.
7752            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            // Calling decoder.out_of_line_offset(0) is not allowed.
7787            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            // Decode the envelope for each type.
7795            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            // Decode unknown envelopes for gaps in ordinals.
7804            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            // Decode unknown envelopes for gaps in ordinals.
7848            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            // Decode unknown envelopes for gaps in ordinals.
7892            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            // Decode the remaining unknown envelopes.
7934            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                        // Do nothing, read the value into the object
8070                    } else {
8071                        // Initialize `self` to the right variant
8072                        *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                        // Do nothing, read the value into the object
8087                    } else {
8088                        // Initialize `self` to the right variant
8089                        *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                        // Do nothing, read the value into the object
8104                    } else {
8105                        // Initialize `self` to the right variant
8106                        *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                        // Do nothing, read the value into the object
8261                    } else {
8262                        // Initialize `self` to the right variant
8263                        *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                        // Do nothing, read the value into the object
8278                    } else {
8279                        // Initialize `self` to the right variant
8280                        *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                        // Do nothing, read the value into the object
8294                    } else {
8295                        // Initialize `self` to the right variant
8296                        *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                        // Do nothing, read the value into the object
8478                    } else {
8479                        // Initialize `self` to the right variant
8480                        *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                        // Do nothing, read the value into the object
8495                    } else {
8496                        // Initialize `self` to the right variant
8497                        *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                        // Do nothing, read the value into the object
8512                    } else {
8513                        // Initialize `self` to the right variant
8514                        *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                        // Do nothing, read the value into the object
8529                    } else {
8530                        // Initialize `self` to the right variant
8531                        *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                        // Do nothing, read the value into the object
8545                    } else {
8546                        // Initialize `self` to the right variant
8547                        *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                        // Do nothing, read the value into the object
8668                    } else {
8669                        // Initialize `self` to the right variant
8670                        *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}