1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11pub const CONTROL_NODE_NAME: &str = "sys/platform/virtual-audio/virtual-audio";
12
13pub const LEGACY_CONTROL_NODE_NAME: &str = "sys/platform/virtual-audio-legacy/virtual-audio-legacy";
14
15pub const MAX_COUNT_DAI_INTERCONNECTS: u32 =
16 fidl_fuchsia_hardware_audio_signalprocessing__common::MAX_COUNT_PROCESSING_ELEMENTS as u32;
17
18pub const MAX_COUNT_PACKET_STREAMS: u32 =
19 fidl_fuchsia_hardware_audio_signalprocessing__common::MAX_COUNT_PROCESSING_ELEMENTS as u32;
20
21pub const MAX_COUNT_RING_BUFFERS: u32 =
22 fidl_fuchsia_hardware_audio_signalprocessing__common::MAX_COUNT_PROCESSING_ELEMENTS as u32;
23
24pub const MAX_FORMAT_RANGES: u32 = 64;
25
26pub const MAX_UI_STRING_SIZE: u32 = 256;
27
28#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
29pub enum DeviceType {
30 StreamConfig,
32 Dai,
34 Codec,
36 Composite,
38 #[doc(hidden)]
39 __SourceBreaking { unknown_ordinal: u32 },
40}
41
42#[macro_export]
44macro_rules! DeviceTypeUnknown {
45 () => {
46 _
47 };
48}
49
50impl DeviceType {
51 #[inline]
52 pub fn from_primitive(prim: u32) -> Option<Self> {
53 match prim {
54 1 => Some(Self::StreamConfig),
55 2 => Some(Self::Dai),
56 3 => Some(Self::Codec),
57 4 => Some(Self::Composite),
58 _ => None,
59 }
60 }
61
62 #[inline]
63 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
64 match prim {
65 1 => Self::StreamConfig,
66 2 => Self::Dai,
67 3 => Self::Codec,
68 4 => Self::Composite,
69 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
70 }
71 }
72
73 #[inline]
74 pub fn unknown() -> Self {
75 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
76 }
77
78 #[inline]
79 pub const fn into_primitive(self) -> u32 {
80 match self {
81 Self::StreamConfig => 1,
82 Self::Dai => 2,
83 Self::Codec => 3,
84 Self::Composite => 4,
85 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
86 }
87 }
88
89 #[inline]
90 pub fn is_unknown(&self) -> bool {
91 match self {
92 Self::__SourceBreaking { unknown_ordinal: _ } => true,
93 _ => false,
94 }
95 }
96}
97
98#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
99pub enum Error {
100 Internal,
102 NoRingBuffer,
104 NotStarted,
106 NotSupported,
108 InvalidArgs,
110 #[doc(hidden)]
111 __SourceBreaking { unknown_ordinal: u32 },
112}
113
114#[macro_export]
116macro_rules! ErrorUnknown {
117 () => {
118 _
119 };
120}
121
122impl Error {
123 #[inline]
124 pub fn from_primitive(prim: u32) -> Option<Self> {
125 match prim {
126 1 => Some(Self::Internal),
127 2 => Some(Self::NoRingBuffer),
128 3 => Some(Self::NotStarted),
129 4 => Some(Self::NotSupported),
130 5 => Some(Self::InvalidArgs),
131 _ => None,
132 }
133 }
134
135 #[inline]
136 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
137 match prim {
138 1 => Self::Internal,
139 2 => Self::NoRingBuffer,
140 3 => Self::NotStarted,
141 4 => Self::NotSupported,
142 5 => Self::InvalidArgs,
143 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
144 }
145 }
146
147 #[inline]
148 pub fn unknown() -> Self {
149 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
150 }
151
152 #[inline]
153 pub const fn into_primitive(self) -> u32 {
154 match self {
155 Self::Internal => 1,
156 Self::NoRingBuffer => 2,
157 Self::NotStarted => 3,
158 Self::NotSupported => 4,
159 Self::InvalidArgs => 5,
160 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
161 }
162 }
163
164 #[inline]
165 pub fn is_unknown(&self) -> bool {
166 match self {
167 Self::__SourceBreaking { unknown_ordinal: _ } => true,
168 _ => false,
169 }
170 }
171}
172
173#[derive(Clone, Debug, PartialEq)]
174pub struct ControlGetDefaultConfigurationRequest {
175 pub type_: DeviceType,
176 pub direction: Direction,
177}
178
179impl fidl::Persistable for ControlGetDefaultConfigurationRequest {}
180
181#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
182#[repr(C)]
183pub struct ControlGetNumDevicesResponse {
184 pub num_input_devices: u32,
185 pub num_output_devices: u32,
186 pub num_unspecified_direction_devices: u32,
187}
188
189impl fidl::Persistable for ControlGetNumDevicesResponse {}
190
191#[derive(Clone, Debug, PartialEq)]
192pub struct ControlGetDefaultConfigurationResponse {
193 pub config: Configuration,
194}
195
196impl fidl::Persistable for ControlGetDefaultConfigurationResponse {}
197
198#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
199#[repr(C)]
200pub struct DeviceAdjustClockRateRequest {
201 pub ppm_from_monotonic: i32,
202}
203
204impl fidl::Persistable for DeviceAdjustClockRateRequest {}
205
206#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
207pub struct DeviceChangePlugStateRequest {
208 pub plug_change_time: i64,
209 pub plugged: bool,
210}
211
212impl fidl::Persistable for DeviceChangePlugStateRequest {}
213
214#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
215#[repr(C)]
216pub struct DeviceOnPositionNotifyRequest {
217 pub monotonic_time: i64,
218 pub ring_position: u32,
219}
220
221impl fidl::Persistable for DeviceOnPositionNotifyRequest {}
222
223#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
224#[repr(C)]
225pub struct DeviceOnSetFormatRequest {
226 pub frames_per_second: u32,
227 pub sample_format: u32,
228 pub num_channels: u32,
229 pub external_delay: i64,
230}
231
232impl fidl::Persistable for DeviceOnSetFormatRequest {}
233
234#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
235pub struct DeviceOnSetGainRequest {
236 pub current_mute: bool,
237 pub current_agc: bool,
238 pub current_gain_db: f32,
239}
240
241impl fidl::Persistable for DeviceOnSetGainRequest {}
242
243#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
244#[repr(C)]
245pub struct DeviceOnStartRequest {
246 pub start_time: i64,
247}
248
249impl fidl::Persistable for DeviceOnStartRequest {}
250
251#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
252#[repr(C)]
253pub struct DeviceOnStopRequest {
254 pub stop_time: i64,
255 pub ring_position: u32,
256}
257
258impl fidl::Persistable for DeviceOnStopRequest {}
259
260#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
261#[repr(C)]
262pub struct DeviceSetNotificationFrequencyRequest {
263 pub notifications_per_ring: u32,
264}
265
266impl fidl::Persistable for DeviceSetNotificationFrequencyRequest {}
267
268#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
269#[repr(C)]
270pub struct DeviceGetFormatResponse {
271 pub frames_per_second: u32,
272 pub sample_format: u32,
273 pub num_channels: u32,
274 pub external_delay: i64,
275}
276
277impl fidl::Persistable for DeviceGetFormatResponse {}
278
279#[derive(Clone, Copy, Debug, PartialEq, PartialOrd)]
280pub struct DeviceGetGainResponse {
281 pub current_mute: bool,
282 pub current_agc: bool,
283 pub current_gain_db: f32,
284}
285
286impl fidl::Persistable for DeviceGetGainResponse {}
287
288#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
289#[repr(C)]
290pub struct DeviceGetPositionResponse {
291 pub monotonic_time: i64,
292 pub ring_position: u32,
293}
294
295impl fidl::Persistable for DeviceGetPositionResponse {}
296
297#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
298#[repr(C)]
299pub struct FormatRange {
300 pub sample_format_flags: u32,
302 pub min_frame_rate: u32,
303 pub max_frame_rate: u32,
304 pub min_channels: u8,
305 pub max_channels: u8,
306 pub rate_family_flags: u16,
308}
309
310impl fidl::Persistable for FormatRange {}
311
312#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
318#[repr(C)]
319pub struct RingBufferConstraints {
320 pub min_frames: u32,
323 pub max_frames: u32,
326 pub modulo_frames: u32,
329}
330
331impl fidl::Persistable for RingBufferConstraints {}
332
333#[derive(Clone, Debug, Default, PartialEq)]
334pub struct ClockProperties {
335 pub domain: Option<i32>,
343 pub rate_adjustment_ppm: Option<i32>,
347 #[doc(hidden)]
348 pub __source_breaking: fidl::marker::SourceBreaking,
349}
350
351impl fidl::Persistable for ClockProperties {}
352
353#[derive(Clone, Debug, Default, PartialEq)]
355pub struct Codec {
356 pub is_input: Option<bool>,
361 pub dai_interconnect: Option<DaiInterconnect>,
365 pub plug_properties: Option<PlugProperties>,
369 #[doc(hidden)]
370 pub __source_breaking: fidl::marker::SourceBreaking,
371}
372
373impl fidl::Persistable for Codec {}
374
375#[derive(Clone, Debug, Default, PartialEq)]
377pub struct Composite {
378 pub ring_buffers: Option<Vec<CompositeRingBuffer>>,
382 pub dai_interconnects: Option<Vec<CompositeDaiInterconnect>>,
386 pub clock_properties: Option<ClockProperties>,
390 pub topologies: Option<Vec<fidl_fuchsia_hardware_audio_signalprocessing__common::Topology>>,
394 pub packet_streams: Option<Vec<CompositePacketStream>>,
398 #[doc(hidden)]
399 pub __source_breaking: fidl::marker::SourceBreaking,
400}
401
402impl fidl::Persistable for Composite {}
403
404#[derive(Clone, Debug, Default, PartialEq)]
406pub struct CompositeDaiInterconnect {
407 pub id: Option<u64>,
411 pub dai_interconnect: Option<DaiInterconnect>,
415 #[doc(hidden)]
416 pub __source_breaking: fidl::marker::SourceBreaking,
417}
418
419impl fidl::Persistable for CompositeDaiInterconnect {}
420
421#[derive(Clone, Debug, Default, PartialEq)]
423pub struct CompositePacketStream {
424 pub id: Option<u64>,
428 pub packet_stream: Option<PacketStream>,
432 #[doc(hidden)]
433 pub __source_breaking: fidl::marker::SourceBreaking,
434}
435
436impl fidl::Persistable for CompositePacketStream {}
437
438#[derive(Clone, Debug, Default, PartialEq)]
440pub struct CompositeRingBuffer {
441 pub id: Option<u64>,
445 pub ring_buffer: Option<RingBuffer>,
449 #[doc(hidden)]
450 pub __source_breaking: fidl::marker::SourceBreaking,
451}
452
453impl fidl::Persistable for CompositeRingBuffer {}
454
455#[derive(Clone, Debug, Default, PartialEq)]
457pub struct Configuration {
458 pub device_name: Option<String>,
462 pub manufacturer_name: Option<String>,
466 pub product_name: Option<String>,
470 pub unique_id: Option<[u8; 16]>,
477 pub device_specific: Option<DeviceSpecific>,
483 #[doc(hidden)]
484 pub __source_breaking: fidl::marker::SourceBreaking,
485}
486
487impl fidl::Persistable for Configuration {}
488
489#[derive(Clone, Debug, Default, PartialEq)]
491pub struct Dai {
492 pub is_input: Option<bool>,
496 pub ring_buffer: Option<RingBuffer>,
500 pub dai_interconnect: Option<DaiInterconnect>,
504 pub clock_properties: Option<ClockProperties>,
508 #[doc(hidden)]
509 pub __source_breaking: fidl::marker::SourceBreaking,
510}
511
512impl fidl::Persistable for Dai {}
513
514#[derive(Clone, Debug, Default, PartialEq)]
516pub struct DaiInterconnect {
517 pub dai_supported_formats:
521 Option<Vec<fidl_fuchsia_hardware_audio__common::DaiSupportedFormats>>,
522 #[doc(hidden)]
523 pub __source_breaking: fidl::marker::SourceBreaking,
524}
525
526impl fidl::Persistable for DaiInterconnect {}
527
528#[derive(Clone, Debug, Default, PartialEq)]
529pub struct Direction {
530 pub is_input: Option<bool>,
540 #[doc(hidden)]
541 pub __source_breaking: fidl::marker::SourceBreaking,
542}
543
544impl fidl::Persistable for Direction {}
545
546#[derive(Clone, Debug, Default, PartialEq)]
547pub struct GainProperties {
548 pub gain_state: Option<fidl_fuchsia_hardware_audio__common::GainState>,
552 pub min_gain_db: Option<f32>,
556 pub max_gain_db: Option<f32>,
560 pub gain_step_db: Option<f32>,
564 pub can_mute: Option<bool>,
569 pub can_agc: Option<bool>,
573 #[doc(hidden)]
574 pub __source_breaking: fidl::marker::SourceBreaking,
575}
576
577impl fidl::Persistable for GainProperties {}
578
579#[derive(Clone, Debug, Default, PartialEq)]
581pub struct PacketStream {
582 pub supported_buffer_types: Option<fidl_fuchsia_hardware_audio__common::BufferType>,
586 pub needs_cache_flush_or_invalidate: Option<bool>,
592 #[doc(hidden)]
593 pub __source_breaking: fidl::marker::SourceBreaking,
594}
595
596impl fidl::Persistable for PacketStream {}
597
598#[derive(Clone, Debug, Default, PartialEq)]
599pub struct PlugProperties {
600 pub plug_state: Option<fidl_fuchsia_hardware_audio__common::PlugState>,
604 pub plug_detect_capabilities:
608 Option<fidl_fuchsia_hardware_audio__common::PlugDetectCapabilities>,
609 #[doc(hidden)]
610 pub __source_breaking: fidl::marker::SourceBreaking,
611}
612
613impl fidl::Persistable for PlugProperties {}
614
615#[derive(Clone, Debug, Default, PartialEq)]
617pub struct RingBuffer {
618 pub driver_transfer_bytes: Option<u32>,
622 pub internal_delay: Option<i64>,
626 pub external_delay: Option<i64>,
630 pub supported_formats: Option<Vec<FormatRange>>,
634 pub ring_buffer_constraints: Option<RingBufferConstraints>,
639 pub notifications_per_ring: Option<u32>,
646 #[doc(hidden)]
647 pub __source_breaking: fidl::marker::SourceBreaking,
648}
649
650impl fidl::Persistable for RingBuffer {}
651
652#[derive(Clone, Debug, Default, PartialEq)]
654pub struct StreamConfig {
655 pub is_input: Option<bool>,
663 pub ring_buffer: Option<RingBuffer>,
667 pub clock_properties: Option<ClockProperties>,
671 pub gain_properties: Option<GainProperties>,
675 pub plug_properties: Option<PlugProperties>,
679 #[doc(hidden)]
680 pub __source_breaking: fidl::marker::SourceBreaking,
681}
682
683impl fidl::Persistable for StreamConfig {}
684
685#[derive(Clone, Debug)]
687pub enum DeviceSpecific {
688 StreamConfig(StreamConfig),
690 Dai(Dai),
692 Codec(Codec),
694 Composite(Composite),
696 #[doc(hidden)]
697 __SourceBreaking { unknown_ordinal: u64 },
698}
699
700#[macro_export]
702macro_rules! DeviceSpecificUnknown {
703 () => {
704 _
705 };
706}
707
708impl PartialEq for DeviceSpecific {
710 fn eq(&self, other: &Self) -> bool {
711 match (self, other) {
712 (Self::StreamConfig(x), Self::StreamConfig(y)) => *x == *y,
713 (Self::Dai(x), Self::Dai(y)) => *x == *y,
714 (Self::Codec(x), Self::Codec(y)) => *x == *y,
715 (Self::Composite(x), Self::Composite(y)) => *x == *y,
716 _ => false,
717 }
718 }
719}
720
721impl DeviceSpecific {
722 #[inline]
723 pub fn ordinal(&self) -> u64 {
724 match *self {
725 Self::StreamConfig(_) => 1,
726 Self::Dai(_) => 2,
727 Self::Codec(_) => 3,
728 Self::Composite(_) => 4,
729 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
730 }
731 }
732
733 #[inline]
734 pub fn unknown_variant_for_testing() -> Self {
735 Self::__SourceBreaking { unknown_ordinal: 0 }
736 }
737
738 #[inline]
739 pub fn is_unknown(&self) -> bool {
740 match self {
741 Self::__SourceBreaking { .. } => true,
742 _ => false,
743 }
744 }
745}
746
747impl fidl::Persistable for DeviceSpecific {}
748
749pub mod control_ordinals {
750 pub const GET_DEFAULT_CONFIGURATION: u64 = 0x18fbd1298daa19e9;
751 pub const ADD_DEVICE: u64 = 0x6b5fff2f3ed7ce9;
752 pub const GET_NUM_DEVICES: u64 = 0x256704ce2f8097af;
753 pub const REMOVE_ALL: u64 = 0x7904287969087c4b;
754}
755
756pub mod device_ordinals {
757 pub const GET_FORMAT: u64 = 0x6107d32083bacc1b;
758 pub const ON_SET_FORMAT: u64 = 0x2a547759ab3678b2;
759 pub const GET_GAIN: u64 = 0x6d85d82b49fb28e9;
760 pub const ON_SET_GAIN: u64 = 0x31fffec81b3a9393;
761 pub const GET_BUFFER: u64 = 0x38e202be0db060d0;
762 pub const ON_BUFFER_CREATED: u64 = 0x5c2eb72e264afefd;
763 pub const SET_NOTIFICATION_FREQUENCY: u64 = 0x45789b88ca9185b8;
764 pub const ON_START: u64 = 0x498f0b7e64d7ca58;
765 pub const ON_STOP: u64 = 0x6f5d4d2fe223ae5b;
766 pub const GET_POSITION: u64 = 0x6fe5bbf9065258e8;
767 pub const ON_POSITION_NOTIFY: u64 = 0x79274c4de9013585;
768 pub const CHANGE_PLUG_STATE: u64 = 0x61aa2d370caaf8f0;
769 pub const ADJUST_CLOCK_RATE: u64 = 0x754661f655350134;
770}
771
772mod internal {
773 use super::*;
774 unsafe impl fidl::encoding::TypeMarker for DeviceType {
775 type Owned = Self;
776
777 #[inline(always)]
778 fn inline_align(_context: fidl::encoding::Context) -> usize {
779 std::mem::align_of::<u32>()
780 }
781
782 #[inline(always)]
783 fn inline_size(_context: fidl::encoding::Context) -> usize {
784 std::mem::size_of::<u32>()
785 }
786
787 #[inline(always)]
788 fn encode_is_copy() -> bool {
789 false
790 }
791
792 #[inline(always)]
793 fn decode_is_copy() -> bool {
794 false
795 }
796 }
797
798 impl fidl::encoding::ValueTypeMarker for DeviceType {
799 type Borrowed<'a> = Self;
800 #[inline(always)]
801 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
802 *value
803 }
804 }
805
806 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DeviceType {
807 #[inline]
808 unsafe fn encode(
809 self,
810 encoder: &mut fidl::encoding::Encoder<'_, D>,
811 offset: usize,
812 _depth: fidl::encoding::Depth,
813 ) -> fidl::Result<()> {
814 encoder.debug_check_bounds::<Self>(offset);
815 encoder.write_num(self.into_primitive(), offset);
816 Ok(())
817 }
818 }
819
820 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceType {
821 #[inline(always)]
822 fn new_empty() -> Self {
823 Self::unknown()
824 }
825
826 #[inline]
827 unsafe fn decode(
828 &mut self,
829 decoder: &mut fidl::encoding::Decoder<'_, D>,
830 offset: usize,
831 _depth: fidl::encoding::Depth,
832 ) -> fidl::Result<()> {
833 decoder.debug_check_bounds::<Self>(offset);
834 let prim = decoder.read_num::<u32>(offset);
835
836 *self = Self::from_primitive_allow_unknown(prim);
837 Ok(())
838 }
839 }
840 unsafe impl fidl::encoding::TypeMarker for Error {
841 type Owned = Self;
842
843 #[inline(always)]
844 fn inline_align(_context: fidl::encoding::Context) -> usize {
845 std::mem::align_of::<u32>()
846 }
847
848 #[inline(always)]
849 fn inline_size(_context: fidl::encoding::Context) -> usize {
850 std::mem::size_of::<u32>()
851 }
852
853 #[inline(always)]
854 fn encode_is_copy() -> bool {
855 false
856 }
857
858 #[inline(always)]
859 fn decode_is_copy() -> bool {
860 false
861 }
862 }
863
864 impl fidl::encoding::ValueTypeMarker for Error {
865 type Borrowed<'a> = Self;
866 #[inline(always)]
867 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
868 *value
869 }
870 }
871
872 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Error {
873 #[inline]
874 unsafe fn encode(
875 self,
876 encoder: &mut fidl::encoding::Encoder<'_, D>,
877 offset: usize,
878 _depth: fidl::encoding::Depth,
879 ) -> fidl::Result<()> {
880 encoder.debug_check_bounds::<Self>(offset);
881 encoder.write_num(self.into_primitive(), offset);
882 Ok(())
883 }
884 }
885
886 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Error {
887 #[inline(always)]
888 fn new_empty() -> Self {
889 Self::unknown()
890 }
891
892 #[inline]
893 unsafe fn decode(
894 &mut self,
895 decoder: &mut fidl::encoding::Decoder<'_, D>,
896 offset: usize,
897 _depth: fidl::encoding::Depth,
898 ) -> fidl::Result<()> {
899 decoder.debug_check_bounds::<Self>(offset);
900 let prim = decoder.read_num::<u32>(offset);
901
902 *self = Self::from_primitive_allow_unknown(prim);
903 Ok(())
904 }
905 }
906
907 impl fidl::encoding::ValueTypeMarker for ControlGetDefaultConfigurationRequest {
908 type Borrowed<'a> = &'a Self;
909 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
910 value
911 }
912 }
913
914 unsafe impl fidl::encoding::TypeMarker for ControlGetDefaultConfigurationRequest {
915 type Owned = Self;
916
917 #[inline(always)]
918 fn inline_align(_context: fidl::encoding::Context) -> usize {
919 8
920 }
921
922 #[inline(always)]
923 fn inline_size(_context: fidl::encoding::Context) -> usize {
924 24
925 }
926 }
927
928 unsafe impl<D: fidl::encoding::ResourceDialect>
929 fidl::encoding::Encode<ControlGetDefaultConfigurationRequest, D>
930 for &ControlGetDefaultConfigurationRequest
931 {
932 #[inline]
933 unsafe fn encode(
934 self,
935 encoder: &mut fidl::encoding::Encoder<'_, D>,
936 offset: usize,
937 _depth: fidl::encoding::Depth,
938 ) -> fidl::Result<()> {
939 encoder.debug_check_bounds::<ControlGetDefaultConfigurationRequest>(offset);
940 fidl::encoding::Encode::<ControlGetDefaultConfigurationRequest, D>::encode(
942 (
943 <DeviceType as fidl::encoding::ValueTypeMarker>::borrow(&self.type_),
944 <Direction as fidl::encoding::ValueTypeMarker>::borrow(&self.direction),
945 ),
946 encoder,
947 offset,
948 _depth,
949 )
950 }
951 }
952 unsafe impl<
953 D: fidl::encoding::ResourceDialect,
954 T0: fidl::encoding::Encode<DeviceType, D>,
955 T1: fidl::encoding::Encode<Direction, D>,
956 > fidl::encoding::Encode<ControlGetDefaultConfigurationRequest, D> for (T0, T1)
957 {
958 #[inline]
959 unsafe fn encode(
960 self,
961 encoder: &mut fidl::encoding::Encoder<'_, D>,
962 offset: usize,
963 depth: fidl::encoding::Depth,
964 ) -> fidl::Result<()> {
965 encoder.debug_check_bounds::<ControlGetDefaultConfigurationRequest>(offset);
966 unsafe {
969 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
970 (ptr as *mut u64).write_unaligned(0);
971 }
972 self.0.encode(encoder, offset + 0, depth)?;
974 self.1.encode(encoder, offset + 8, depth)?;
975 Ok(())
976 }
977 }
978
979 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
980 for ControlGetDefaultConfigurationRequest
981 {
982 #[inline(always)]
983 fn new_empty() -> Self {
984 Self {
985 type_: fidl::new_empty!(DeviceType, D),
986 direction: fidl::new_empty!(Direction, D),
987 }
988 }
989
990 #[inline]
991 unsafe fn decode(
992 &mut self,
993 decoder: &mut fidl::encoding::Decoder<'_, D>,
994 offset: usize,
995 _depth: fidl::encoding::Depth,
996 ) -> fidl::Result<()> {
997 decoder.debug_check_bounds::<Self>(offset);
998 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1000 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1001 let mask = 0xffffffff00000000u64;
1002 let maskedval = padval & mask;
1003 if maskedval != 0 {
1004 return Err(fidl::Error::NonZeroPadding {
1005 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1006 });
1007 }
1008 fidl::decode!(DeviceType, D, &mut self.type_, decoder, offset + 0, _depth)?;
1009 fidl::decode!(Direction, D, &mut self.direction, decoder, offset + 8, _depth)?;
1010 Ok(())
1011 }
1012 }
1013
1014 impl fidl::encoding::ValueTypeMarker for ControlGetNumDevicesResponse {
1015 type Borrowed<'a> = &'a Self;
1016 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1017 value
1018 }
1019 }
1020
1021 unsafe impl fidl::encoding::TypeMarker for ControlGetNumDevicesResponse {
1022 type Owned = Self;
1023
1024 #[inline(always)]
1025 fn inline_align(_context: fidl::encoding::Context) -> usize {
1026 4
1027 }
1028
1029 #[inline(always)]
1030 fn inline_size(_context: fidl::encoding::Context) -> usize {
1031 12
1032 }
1033 #[inline(always)]
1034 fn encode_is_copy() -> bool {
1035 true
1036 }
1037
1038 #[inline(always)]
1039 fn decode_is_copy() -> bool {
1040 true
1041 }
1042 }
1043
1044 unsafe impl<D: fidl::encoding::ResourceDialect>
1045 fidl::encoding::Encode<ControlGetNumDevicesResponse, D> for &ControlGetNumDevicesResponse
1046 {
1047 #[inline]
1048 unsafe fn encode(
1049 self,
1050 encoder: &mut fidl::encoding::Encoder<'_, D>,
1051 offset: usize,
1052 _depth: fidl::encoding::Depth,
1053 ) -> fidl::Result<()> {
1054 encoder.debug_check_bounds::<ControlGetNumDevicesResponse>(offset);
1055 unsafe {
1056 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1058 (buf_ptr as *mut ControlGetNumDevicesResponse)
1059 .write_unaligned((self as *const ControlGetNumDevicesResponse).read());
1060 }
1063 Ok(())
1064 }
1065 }
1066 unsafe impl<
1067 D: fidl::encoding::ResourceDialect,
1068 T0: fidl::encoding::Encode<u32, D>,
1069 T1: fidl::encoding::Encode<u32, D>,
1070 T2: fidl::encoding::Encode<u32, D>,
1071 > fidl::encoding::Encode<ControlGetNumDevicesResponse, D> for (T0, T1, T2)
1072 {
1073 #[inline]
1074 unsafe fn encode(
1075 self,
1076 encoder: &mut fidl::encoding::Encoder<'_, D>,
1077 offset: usize,
1078 depth: fidl::encoding::Depth,
1079 ) -> fidl::Result<()> {
1080 encoder.debug_check_bounds::<ControlGetNumDevicesResponse>(offset);
1081 self.0.encode(encoder, offset + 0, depth)?;
1085 self.1.encode(encoder, offset + 4, depth)?;
1086 self.2.encode(encoder, offset + 8, depth)?;
1087 Ok(())
1088 }
1089 }
1090
1091 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1092 for ControlGetNumDevicesResponse
1093 {
1094 #[inline(always)]
1095 fn new_empty() -> Self {
1096 Self {
1097 num_input_devices: fidl::new_empty!(u32, D),
1098 num_output_devices: fidl::new_empty!(u32, D),
1099 num_unspecified_direction_devices: fidl::new_empty!(u32, D),
1100 }
1101 }
1102
1103 #[inline]
1104 unsafe fn decode(
1105 &mut self,
1106 decoder: &mut fidl::encoding::Decoder<'_, D>,
1107 offset: usize,
1108 _depth: fidl::encoding::Depth,
1109 ) -> fidl::Result<()> {
1110 decoder.debug_check_bounds::<Self>(offset);
1111 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1112 unsafe {
1115 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
1116 }
1117 Ok(())
1118 }
1119 }
1120
1121 impl fidl::encoding::ValueTypeMarker for ControlGetDefaultConfigurationResponse {
1122 type Borrowed<'a> = &'a Self;
1123 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1124 value
1125 }
1126 }
1127
1128 unsafe impl fidl::encoding::TypeMarker for ControlGetDefaultConfigurationResponse {
1129 type Owned = Self;
1130
1131 #[inline(always)]
1132 fn inline_align(_context: fidl::encoding::Context) -> usize {
1133 8
1134 }
1135
1136 #[inline(always)]
1137 fn inline_size(_context: fidl::encoding::Context) -> usize {
1138 16
1139 }
1140 }
1141
1142 unsafe impl<D: fidl::encoding::ResourceDialect>
1143 fidl::encoding::Encode<ControlGetDefaultConfigurationResponse, D>
1144 for &ControlGetDefaultConfigurationResponse
1145 {
1146 #[inline]
1147 unsafe fn encode(
1148 self,
1149 encoder: &mut fidl::encoding::Encoder<'_, D>,
1150 offset: usize,
1151 _depth: fidl::encoding::Depth,
1152 ) -> fidl::Result<()> {
1153 encoder.debug_check_bounds::<ControlGetDefaultConfigurationResponse>(offset);
1154 fidl::encoding::Encode::<ControlGetDefaultConfigurationResponse, D>::encode(
1156 (<Configuration as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
1157 encoder,
1158 offset,
1159 _depth,
1160 )
1161 }
1162 }
1163 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Configuration, D>>
1164 fidl::encoding::Encode<ControlGetDefaultConfigurationResponse, D> for (T0,)
1165 {
1166 #[inline]
1167 unsafe fn encode(
1168 self,
1169 encoder: &mut fidl::encoding::Encoder<'_, D>,
1170 offset: usize,
1171 depth: fidl::encoding::Depth,
1172 ) -> fidl::Result<()> {
1173 encoder.debug_check_bounds::<ControlGetDefaultConfigurationResponse>(offset);
1174 self.0.encode(encoder, offset + 0, depth)?;
1178 Ok(())
1179 }
1180 }
1181
1182 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1183 for ControlGetDefaultConfigurationResponse
1184 {
1185 #[inline(always)]
1186 fn new_empty() -> Self {
1187 Self { config: fidl::new_empty!(Configuration, D) }
1188 }
1189
1190 #[inline]
1191 unsafe fn decode(
1192 &mut self,
1193 decoder: &mut fidl::encoding::Decoder<'_, D>,
1194 offset: usize,
1195 _depth: fidl::encoding::Depth,
1196 ) -> fidl::Result<()> {
1197 decoder.debug_check_bounds::<Self>(offset);
1198 fidl::decode!(Configuration, D, &mut self.config, decoder, offset + 0, _depth)?;
1200 Ok(())
1201 }
1202 }
1203
1204 impl fidl::encoding::ValueTypeMarker for DeviceAdjustClockRateRequest {
1205 type Borrowed<'a> = &'a Self;
1206 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1207 value
1208 }
1209 }
1210
1211 unsafe impl fidl::encoding::TypeMarker for DeviceAdjustClockRateRequest {
1212 type Owned = Self;
1213
1214 #[inline(always)]
1215 fn inline_align(_context: fidl::encoding::Context) -> usize {
1216 4
1217 }
1218
1219 #[inline(always)]
1220 fn inline_size(_context: fidl::encoding::Context) -> usize {
1221 4
1222 }
1223 #[inline(always)]
1224 fn encode_is_copy() -> bool {
1225 true
1226 }
1227
1228 #[inline(always)]
1229 fn decode_is_copy() -> bool {
1230 true
1231 }
1232 }
1233
1234 unsafe impl<D: fidl::encoding::ResourceDialect>
1235 fidl::encoding::Encode<DeviceAdjustClockRateRequest, D> for &DeviceAdjustClockRateRequest
1236 {
1237 #[inline]
1238 unsafe fn encode(
1239 self,
1240 encoder: &mut fidl::encoding::Encoder<'_, D>,
1241 offset: usize,
1242 _depth: fidl::encoding::Depth,
1243 ) -> fidl::Result<()> {
1244 encoder.debug_check_bounds::<DeviceAdjustClockRateRequest>(offset);
1245 unsafe {
1246 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1248 (buf_ptr as *mut DeviceAdjustClockRateRequest)
1249 .write_unaligned((self as *const DeviceAdjustClockRateRequest).read());
1250 }
1253 Ok(())
1254 }
1255 }
1256 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i32, D>>
1257 fidl::encoding::Encode<DeviceAdjustClockRateRequest, D> for (T0,)
1258 {
1259 #[inline]
1260 unsafe fn encode(
1261 self,
1262 encoder: &mut fidl::encoding::Encoder<'_, D>,
1263 offset: usize,
1264 depth: fidl::encoding::Depth,
1265 ) -> fidl::Result<()> {
1266 encoder.debug_check_bounds::<DeviceAdjustClockRateRequest>(offset);
1267 self.0.encode(encoder, offset + 0, depth)?;
1271 Ok(())
1272 }
1273 }
1274
1275 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1276 for DeviceAdjustClockRateRequest
1277 {
1278 #[inline(always)]
1279 fn new_empty() -> Self {
1280 Self { ppm_from_monotonic: fidl::new_empty!(i32, D) }
1281 }
1282
1283 #[inline]
1284 unsafe fn decode(
1285 &mut self,
1286 decoder: &mut fidl::encoding::Decoder<'_, D>,
1287 offset: usize,
1288 _depth: fidl::encoding::Depth,
1289 ) -> fidl::Result<()> {
1290 decoder.debug_check_bounds::<Self>(offset);
1291 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1292 unsafe {
1295 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1296 }
1297 Ok(())
1298 }
1299 }
1300
1301 impl fidl::encoding::ValueTypeMarker for DeviceChangePlugStateRequest {
1302 type Borrowed<'a> = &'a Self;
1303 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1304 value
1305 }
1306 }
1307
1308 unsafe impl fidl::encoding::TypeMarker for DeviceChangePlugStateRequest {
1309 type Owned = Self;
1310
1311 #[inline(always)]
1312 fn inline_align(_context: fidl::encoding::Context) -> usize {
1313 8
1314 }
1315
1316 #[inline(always)]
1317 fn inline_size(_context: fidl::encoding::Context) -> usize {
1318 16
1319 }
1320 }
1321
1322 unsafe impl<D: fidl::encoding::ResourceDialect>
1323 fidl::encoding::Encode<DeviceChangePlugStateRequest, D> for &DeviceChangePlugStateRequest
1324 {
1325 #[inline]
1326 unsafe fn encode(
1327 self,
1328 encoder: &mut fidl::encoding::Encoder<'_, D>,
1329 offset: usize,
1330 _depth: fidl::encoding::Depth,
1331 ) -> fidl::Result<()> {
1332 encoder.debug_check_bounds::<DeviceChangePlugStateRequest>(offset);
1333 fidl::encoding::Encode::<DeviceChangePlugStateRequest, D>::encode(
1335 (
1336 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.plug_change_time),
1337 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.plugged),
1338 ),
1339 encoder,
1340 offset,
1341 _depth,
1342 )
1343 }
1344 }
1345 unsafe impl<
1346 D: fidl::encoding::ResourceDialect,
1347 T0: fidl::encoding::Encode<i64, D>,
1348 T1: fidl::encoding::Encode<bool, D>,
1349 > fidl::encoding::Encode<DeviceChangePlugStateRequest, D> for (T0, T1)
1350 {
1351 #[inline]
1352 unsafe fn encode(
1353 self,
1354 encoder: &mut fidl::encoding::Encoder<'_, D>,
1355 offset: usize,
1356 depth: fidl::encoding::Depth,
1357 ) -> fidl::Result<()> {
1358 encoder.debug_check_bounds::<DeviceChangePlugStateRequest>(offset);
1359 unsafe {
1362 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1363 (ptr as *mut u64).write_unaligned(0);
1364 }
1365 self.0.encode(encoder, offset + 0, depth)?;
1367 self.1.encode(encoder, offset + 8, depth)?;
1368 Ok(())
1369 }
1370 }
1371
1372 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1373 for DeviceChangePlugStateRequest
1374 {
1375 #[inline(always)]
1376 fn new_empty() -> Self {
1377 Self { plug_change_time: fidl::new_empty!(i64, D), plugged: fidl::new_empty!(bool, D) }
1378 }
1379
1380 #[inline]
1381 unsafe fn decode(
1382 &mut self,
1383 decoder: &mut fidl::encoding::Decoder<'_, D>,
1384 offset: usize,
1385 _depth: fidl::encoding::Depth,
1386 ) -> fidl::Result<()> {
1387 decoder.debug_check_bounds::<Self>(offset);
1388 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
1390 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1391 let mask = 0xffffffffffffff00u64;
1392 let maskedval = padval & mask;
1393 if maskedval != 0 {
1394 return Err(fidl::Error::NonZeroPadding {
1395 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
1396 });
1397 }
1398 fidl::decode!(i64, D, &mut self.plug_change_time, decoder, offset + 0, _depth)?;
1399 fidl::decode!(bool, D, &mut self.plugged, decoder, offset + 8, _depth)?;
1400 Ok(())
1401 }
1402 }
1403
1404 impl fidl::encoding::ValueTypeMarker for DeviceOnPositionNotifyRequest {
1405 type Borrowed<'a> = &'a Self;
1406 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1407 value
1408 }
1409 }
1410
1411 unsafe impl fidl::encoding::TypeMarker for DeviceOnPositionNotifyRequest {
1412 type Owned = Self;
1413
1414 #[inline(always)]
1415 fn inline_align(_context: fidl::encoding::Context) -> usize {
1416 8
1417 }
1418
1419 #[inline(always)]
1420 fn inline_size(_context: fidl::encoding::Context) -> usize {
1421 16
1422 }
1423 }
1424
1425 unsafe impl<D: fidl::encoding::ResourceDialect>
1426 fidl::encoding::Encode<DeviceOnPositionNotifyRequest, D>
1427 for &DeviceOnPositionNotifyRequest
1428 {
1429 #[inline]
1430 unsafe fn encode(
1431 self,
1432 encoder: &mut fidl::encoding::Encoder<'_, D>,
1433 offset: usize,
1434 _depth: fidl::encoding::Depth,
1435 ) -> fidl::Result<()> {
1436 encoder.debug_check_bounds::<DeviceOnPositionNotifyRequest>(offset);
1437 unsafe {
1438 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1440 (buf_ptr as *mut DeviceOnPositionNotifyRequest)
1441 .write_unaligned((self as *const DeviceOnPositionNotifyRequest).read());
1442 let padding_ptr = buf_ptr.offset(8) as *mut u64;
1445 let padding_mask = 0xffffffff00000000u64;
1446 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1447 }
1448 Ok(())
1449 }
1450 }
1451 unsafe impl<
1452 D: fidl::encoding::ResourceDialect,
1453 T0: fidl::encoding::Encode<i64, D>,
1454 T1: fidl::encoding::Encode<u32, D>,
1455 > fidl::encoding::Encode<DeviceOnPositionNotifyRequest, D> for (T0, T1)
1456 {
1457 #[inline]
1458 unsafe fn encode(
1459 self,
1460 encoder: &mut fidl::encoding::Encoder<'_, D>,
1461 offset: usize,
1462 depth: fidl::encoding::Depth,
1463 ) -> fidl::Result<()> {
1464 encoder.debug_check_bounds::<DeviceOnPositionNotifyRequest>(offset);
1465 unsafe {
1468 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1469 (ptr as *mut u64).write_unaligned(0);
1470 }
1471 self.0.encode(encoder, offset + 0, depth)?;
1473 self.1.encode(encoder, offset + 8, depth)?;
1474 Ok(())
1475 }
1476 }
1477
1478 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1479 for DeviceOnPositionNotifyRequest
1480 {
1481 #[inline(always)]
1482 fn new_empty() -> Self {
1483 Self {
1484 monotonic_time: fidl::new_empty!(i64, D),
1485 ring_position: fidl::new_empty!(u32, D),
1486 }
1487 }
1488
1489 #[inline]
1490 unsafe fn decode(
1491 &mut self,
1492 decoder: &mut fidl::encoding::Decoder<'_, D>,
1493 offset: usize,
1494 _depth: fidl::encoding::Depth,
1495 ) -> fidl::Result<()> {
1496 decoder.debug_check_bounds::<Self>(offset);
1497 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1498 let ptr = unsafe { buf_ptr.offset(8) };
1500 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1501 let mask = 0xffffffff00000000u64;
1502 let maskedval = padval & mask;
1503 if maskedval != 0 {
1504 return Err(fidl::Error::NonZeroPadding {
1505 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
1506 });
1507 }
1508 unsafe {
1510 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1511 }
1512 Ok(())
1513 }
1514 }
1515
1516 impl fidl::encoding::ValueTypeMarker for DeviceOnSetFormatRequest {
1517 type Borrowed<'a> = &'a Self;
1518 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1519 value
1520 }
1521 }
1522
1523 unsafe impl fidl::encoding::TypeMarker for DeviceOnSetFormatRequest {
1524 type Owned = Self;
1525
1526 #[inline(always)]
1527 fn inline_align(_context: fidl::encoding::Context) -> usize {
1528 8
1529 }
1530
1531 #[inline(always)]
1532 fn inline_size(_context: fidl::encoding::Context) -> usize {
1533 24
1534 }
1535 }
1536
1537 unsafe impl<D: fidl::encoding::ResourceDialect>
1538 fidl::encoding::Encode<DeviceOnSetFormatRequest, D> for &DeviceOnSetFormatRequest
1539 {
1540 #[inline]
1541 unsafe fn encode(
1542 self,
1543 encoder: &mut fidl::encoding::Encoder<'_, D>,
1544 offset: usize,
1545 _depth: fidl::encoding::Depth,
1546 ) -> fidl::Result<()> {
1547 encoder.debug_check_bounds::<DeviceOnSetFormatRequest>(offset);
1548 unsafe {
1549 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1551 (buf_ptr as *mut DeviceOnSetFormatRequest)
1552 .write_unaligned((self as *const DeviceOnSetFormatRequest).read());
1553 let padding_ptr = buf_ptr.offset(8) as *mut u64;
1556 let padding_mask = 0xffffffff00000000u64;
1557 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1558 }
1559 Ok(())
1560 }
1561 }
1562 unsafe impl<
1563 D: fidl::encoding::ResourceDialect,
1564 T0: fidl::encoding::Encode<u32, D>,
1565 T1: fidl::encoding::Encode<u32, D>,
1566 T2: fidl::encoding::Encode<u32, D>,
1567 T3: fidl::encoding::Encode<i64, D>,
1568 > fidl::encoding::Encode<DeviceOnSetFormatRequest, D> for (T0, T1, T2, T3)
1569 {
1570 #[inline]
1571 unsafe fn encode(
1572 self,
1573 encoder: &mut fidl::encoding::Encoder<'_, D>,
1574 offset: usize,
1575 depth: fidl::encoding::Depth,
1576 ) -> fidl::Result<()> {
1577 encoder.debug_check_bounds::<DeviceOnSetFormatRequest>(offset);
1578 unsafe {
1581 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1582 (ptr as *mut u64).write_unaligned(0);
1583 }
1584 self.0.encode(encoder, offset + 0, depth)?;
1586 self.1.encode(encoder, offset + 4, depth)?;
1587 self.2.encode(encoder, offset + 8, depth)?;
1588 self.3.encode(encoder, offset + 16, depth)?;
1589 Ok(())
1590 }
1591 }
1592
1593 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1594 for DeviceOnSetFormatRequest
1595 {
1596 #[inline(always)]
1597 fn new_empty() -> Self {
1598 Self {
1599 frames_per_second: fidl::new_empty!(u32, D),
1600 sample_format: fidl::new_empty!(u32, D),
1601 num_channels: fidl::new_empty!(u32, D),
1602 external_delay: fidl::new_empty!(i64, D),
1603 }
1604 }
1605
1606 #[inline]
1607 unsafe fn decode(
1608 &mut self,
1609 decoder: &mut fidl::encoding::Decoder<'_, D>,
1610 offset: usize,
1611 _depth: fidl::encoding::Depth,
1612 ) -> fidl::Result<()> {
1613 decoder.debug_check_bounds::<Self>(offset);
1614 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1615 let ptr = unsafe { buf_ptr.offset(8) };
1617 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1618 let mask = 0xffffffff00000000u64;
1619 let maskedval = padval & mask;
1620 if maskedval != 0 {
1621 return Err(fidl::Error::NonZeroPadding {
1622 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
1623 });
1624 }
1625 unsafe {
1627 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 24);
1628 }
1629 Ok(())
1630 }
1631 }
1632
1633 impl fidl::encoding::ValueTypeMarker for DeviceOnSetGainRequest {
1634 type Borrowed<'a> = &'a Self;
1635 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1636 value
1637 }
1638 }
1639
1640 unsafe impl fidl::encoding::TypeMarker for DeviceOnSetGainRequest {
1641 type Owned = Self;
1642
1643 #[inline(always)]
1644 fn inline_align(_context: fidl::encoding::Context) -> usize {
1645 4
1646 }
1647
1648 #[inline(always)]
1649 fn inline_size(_context: fidl::encoding::Context) -> usize {
1650 8
1651 }
1652 }
1653
1654 unsafe impl<D: fidl::encoding::ResourceDialect>
1655 fidl::encoding::Encode<DeviceOnSetGainRequest, D> for &DeviceOnSetGainRequest
1656 {
1657 #[inline]
1658 unsafe fn encode(
1659 self,
1660 encoder: &mut fidl::encoding::Encoder<'_, D>,
1661 offset: usize,
1662 _depth: fidl::encoding::Depth,
1663 ) -> fidl::Result<()> {
1664 encoder.debug_check_bounds::<DeviceOnSetGainRequest>(offset);
1665 fidl::encoding::Encode::<DeviceOnSetGainRequest, D>::encode(
1667 (
1668 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.current_mute),
1669 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.current_agc),
1670 <f32 as fidl::encoding::ValueTypeMarker>::borrow(&self.current_gain_db),
1671 ),
1672 encoder,
1673 offset,
1674 _depth,
1675 )
1676 }
1677 }
1678 unsafe impl<
1679 D: fidl::encoding::ResourceDialect,
1680 T0: fidl::encoding::Encode<bool, D>,
1681 T1: fidl::encoding::Encode<bool, D>,
1682 T2: fidl::encoding::Encode<f32, D>,
1683 > fidl::encoding::Encode<DeviceOnSetGainRequest, D> for (T0, T1, T2)
1684 {
1685 #[inline]
1686 unsafe fn encode(
1687 self,
1688 encoder: &mut fidl::encoding::Encoder<'_, D>,
1689 offset: usize,
1690 depth: fidl::encoding::Depth,
1691 ) -> fidl::Result<()> {
1692 encoder.debug_check_bounds::<DeviceOnSetGainRequest>(offset);
1693 unsafe {
1696 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1697 (ptr as *mut u32).write_unaligned(0);
1698 }
1699 self.0.encode(encoder, offset + 0, depth)?;
1701 self.1.encode(encoder, offset + 1, depth)?;
1702 self.2.encode(encoder, offset + 4, depth)?;
1703 Ok(())
1704 }
1705 }
1706
1707 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1708 for DeviceOnSetGainRequest
1709 {
1710 #[inline(always)]
1711 fn new_empty() -> Self {
1712 Self {
1713 current_mute: fidl::new_empty!(bool, D),
1714 current_agc: fidl::new_empty!(bool, D),
1715 current_gain_db: fidl::new_empty!(f32, D),
1716 }
1717 }
1718
1719 #[inline]
1720 unsafe fn decode(
1721 &mut self,
1722 decoder: &mut fidl::encoding::Decoder<'_, D>,
1723 offset: usize,
1724 _depth: fidl::encoding::Depth,
1725 ) -> fidl::Result<()> {
1726 decoder.debug_check_bounds::<Self>(offset);
1727 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1729 let padval = unsafe { (ptr as *const u32).read_unaligned() };
1730 let mask = 0xffff0000u32;
1731 let maskedval = padval & mask;
1732 if maskedval != 0 {
1733 return Err(fidl::Error::NonZeroPadding {
1734 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1735 });
1736 }
1737 fidl::decode!(bool, D, &mut self.current_mute, decoder, offset + 0, _depth)?;
1738 fidl::decode!(bool, D, &mut self.current_agc, decoder, offset + 1, _depth)?;
1739 fidl::decode!(f32, D, &mut self.current_gain_db, decoder, offset + 4, _depth)?;
1740 Ok(())
1741 }
1742 }
1743
1744 impl fidl::encoding::ValueTypeMarker for DeviceOnStartRequest {
1745 type Borrowed<'a> = &'a Self;
1746 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1747 value
1748 }
1749 }
1750
1751 unsafe impl fidl::encoding::TypeMarker for DeviceOnStartRequest {
1752 type Owned = Self;
1753
1754 #[inline(always)]
1755 fn inline_align(_context: fidl::encoding::Context) -> usize {
1756 8
1757 }
1758
1759 #[inline(always)]
1760 fn inline_size(_context: fidl::encoding::Context) -> usize {
1761 8
1762 }
1763 #[inline(always)]
1764 fn encode_is_copy() -> bool {
1765 true
1766 }
1767
1768 #[inline(always)]
1769 fn decode_is_copy() -> bool {
1770 true
1771 }
1772 }
1773
1774 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceOnStartRequest, D>
1775 for &DeviceOnStartRequest
1776 {
1777 #[inline]
1778 unsafe fn encode(
1779 self,
1780 encoder: &mut fidl::encoding::Encoder<'_, D>,
1781 offset: usize,
1782 _depth: fidl::encoding::Depth,
1783 ) -> fidl::Result<()> {
1784 encoder.debug_check_bounds::<DeviceOnStartRequest>(offset);
1785 unsafe {
1786 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1788 (buf_ptr as *mut DeviceOnStartRequest)
1789 .write_unaligned((self as *const DeviceOnStartRequest).read());
1790 }
1793 Ok(())
1794 }
1795 }
1796 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1797 fidl::encoding::Encode<DeviceOnStartRequest, D> for (T0,)
1798 {
1799 #[inline]
1800 unsafe fn encode(
1801 self,
1802 encoder: &mut fidl::encoding::Encoder<'_, D>,
1803 offset: usize,
1804 depth: fidl::encoding::Depth,
1805 ) -> fidl::Result<()> {
1806 encoder.debug_check_bounds::<DeviceOnStartRequest>(offset);
1807 self.0.encode(encoder, offset + 0, depth)?;
1811 Ok(())
1812 }
1813 }
1814
1815 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceOnStartRequest {
1816 #[inline(always)]
1817 fn new_empty() -> Self {
1818 Self { start_time: fidl::new_empty!(i64, D) }
1819 }
1820
1821 #[inline]
1822 unsafe fn decode(
1823 &mut self,
1824 decoder: &mut fidl::encoding::Decoder<'_, D>,
1825 offset: usize,
1826 _depth: fidl::encoding::Depth,
1827 ) -> fidl::Result<()> {
1828 decoder.debug_check_bounds::<Self>(offset);
1829 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1830 unsafe {
1833 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1834 }
1835 Ok(())
1836 }
1837 }
1838
1839 impl fidl::encoding::ValueTypeMarker for DeviceOnStopRequest {
1840 type Borrowed<'a> = &'a Self;
1841 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1842 value
1843 }
1844 }
1845
1846 unsafe impl fidl::encoding::TypeMarker for DeviceOnStopRequest {
1847 type Owned = Self;
1848
1849 #[inline(always)]
1850 fn inline_align(_context: fidl::encoding::Context) -> usize {
1851 8
1852 }
1853
1854 #[inline(always)]
1855 fn inline_size(_context: fidl::encoding::Context) -> usize {
1856 16
1857 }
1858 }
1859
1860 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceOnStopRequest, D>
1861 for &DeviceOnStopRequest
1862 {
1863 #[inline]
1864 unsafe fn encode(
1865 self,
1866 encoder: &mut fidl::encoding::Encoder<'_, D>,
1867 offset: usize,
1868 _depth: fidl::encoding::Depth,
1869 ) -> fidl::Result<()> {
1870 encoder.debug_check_bounds::<DeviceOnStopRequest>(offset);
1871 unsafe {
1872 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1874 (buf_ptr as *mut DeviceOnStopRequest)
1875 .write_unaligned((self as *const DeviceOnStopRequest).read());
1876 let padding_ptr = buf_ptr.offset(8) as *mut u64;
1879 let padding_mask = 0xffffffff00000000u64;
1880 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
1881 }
1882 Ok(())
1883 }
1884 }
1885 unsafe impl<
1886 D: fidl::encoding::ResourceDialect,
1887 T0: fidl::encoding::Encode<i64, D>,
1888 T1: fidl::encoding::Encode<u32, D>,
1889 > fidl::encoding::Encode<DeviceOnStopRequest, D> for (T0, T1)
1890 {
1891 #[inline]
1892 unsafe fn encode(
1893 self,
1894 encoder: &mut fidl::encoding::Encoder<'_, D>,
1895 offset: usize,
1896 depth: fidl::encoding::Depth,
1897 ) -> fidl::Result<()> {
1898 encoder.debug_check_bounds::<DeviceOnStopRequest>(offset);
1899 unsafe {
1902 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
1903 (ptr as *mut u64).write_unaligned(0);
1904 }
1905 self.0.encode(encoder, offset + 0, depth)?;
1907 self.1.encode(encoder, offset + 8, depth)?;
1908 Ok(())
1909 }
1910 }
1911
1912 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceOnStopRequest {
1913 #[inline(always)]
1914 fn new_empty() -> Self {
1915 Self { stop_time: fidl::new_empty!(i64, D), ring_position: fidl::new_empty!(u32, D) }
1916 }
1917
1918 #[inline]
1919 unsafe fn decode(
1920 &mut self,
1921 decoder: &mut fidl::encoding::Decoder<'_, D>,
1922 offset: usize,
1923 _depth: fidl::encoding::Depth,
1924 ) -> fidl::Result<()> {
1925 decoder.debug_check_bounds::<Self>(offset);
1926 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1927 let ptr = unsafe { buf_ptr.offset(8) };
1929 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1930 let mask = 0xffffffff00000000u64;
1931 let maskedval = padval & mask;
1932 if maskedval != 0 {
1933 return Err(fidl::Error::NonZeroPadding {
1934 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
1935 });
1936 }
1937 unsafe {
1939 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1940 }
1941 Ok(())
1942 }
1943 }
1944
1945 impl fidl::encoding::ValueTypeMarker for DeviceSetNotificationFrequencyRequest {
1946 type Borrowed<'a> = &'a Self;
1947 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1948 value
1949 }
1950 }
1951
1952 unsafe impl fidl::encoding::TypeMarker for DeviceSetNotificationFrequencyRequest {
1953 type Owned = Self;
1954
1955 #[inline(always)]
1956 fn inline_align(_context: fidl::encoding::Context) -> usize {
1957 4
1958 }
1959
1960 #[inline(always)]
1961 fn inline_size(_context: fidl::encoding::Context) -> usize {
1962 4
1963 }
1964 #[inline(always)]
1965 fn encode_is_copy() -> bool {
1966 true
1967 }
1968
1969 #[inline(always)]
1970 fn decode_is_copy() -> bool {
1971 true
1972 }
1973 }
1974
1975 unsafe impl<D: fidl::encoding::ResourceDialect>
1976 fidl::encoding::Encode<DeviceSetNotificationFrequencyRequest, D>
1977 for &DeviceSetNotificationFrequencyRequest
1978 {
1979 #[inline]
1980 unsafe fn encode(
1981 self,
1982 encoder: &mut fidl::encoding::Encoder<'_, D>,
1983 offset: usize,
1984 _depth: fidl::encoding::Depth,
1985 ) -> fidl::Result<()> {
1986 encoder.debug_check_bounds::<DeviceSetNotificationFrequencyRequest>(offset);
1987 unsafe {
1988 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1990 (buf_ptr as *mut DeviceSetNotificationFrequencyRequest)
1991 .write_unaligned((self as *const DeviceSetNotificationFrequencyRequest).read());
1992 }
1995 Ok(())
1996 }
1997 }
1998 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
1999 fidl::encoding::Encode<DeviceSetNotificationFrequencyRequest, D> for (T0,)
2000 {
2001 #[inline]
2002 unsafe fn encode(
2003 self,
2004 encoder: &mut fidl::encoding::Encoder<'_, D>,
2005 offset: usize,
2006 depth: fidl::encoding::Depth,
2007 ) -> fidl::Result<()> {
2008 encoder.debug_check_bounds::<DeviceSetNotificationFrequencyRequest>(offset);
2009 self.0.encode(encoder, offset + 0, depth)?;
2013 Ok(())
2014 }
2015 }
2016
2017 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2018 for DeviceSetNotificationFrequencyRequest
2019 {
2020 #[inline(always)]
2021 fn new_empty() -> Self {
2022 Self { notifications_per_ring: fidl::new_empty!(u32, D) }
2023 }
2024
2025 #[inline]
2026 unsafe fn decode(
2027 &mut self,
2028 decoder: &mut fidl::encoding::Decoder<'_, D>,
2029 offset: usize,
2030 _depth: fidl::encoding::Depth,
2031 ) -> fidl::Result<()> {
2032 decoder.debug_check_bounds::<Self>(offset);
2033 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2034 unsafe {
2037 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2038 }
2039 Ok(())
2040 }
2041 }
2042
2043 impl fidl::encoding::ValueTypeMarker for DeviceGetFormatResponse {
2044 type Borrowed<'a> = &'a Self;
2045 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2046 value
2047 }
2048 }
2049
2050 unsafe impl fidl::encoding::TypeMarker for DeviceGetFormatResponse {
2051 type Owned = Self;
2052
2053 #[inline(always)]
2054 fn inline_align(_context: fidl::encoding::Context) -> usize {
2055 8
2056 }
2057
2058 #[inline(always)]
2059 fn inline_size(_context: fidl::encoding::Context) -> usize {
2060 24
2061 }
2062 }
2063
2064 unsafe impl<D: fidl::encoding::ResourceDialect>
2065 fidl::encoding::Encode<DeviceGetFormatResponse, D> for &DeviceGetFormatResponse
2066 {
2067 #[inline]
2068 unsafe fn encode(
2069 self,
2070 encoder: &mut fidl::encoding::Encoder<'_, D>,
2071 offset: usize,
2072 _depth: fidl::encoding::Depth,
2073 ) -> fidl::Result<()> {
2074 encoder.debug_check_bounds::<DeviceGetFormatResponse>(offset);
2075 unsafe {
2076 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2078 (buf_ptr as *mut DeviceGetFormatResponse)
2079 .write_unaligned((self as *const DeviceGetFormatResponse).read());
2080 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2083 let padding_mask = 0xffffffff00000000u64;
2084 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2085 }
2086 Ok(())
2087 }
2088 }
2089 unsafe impl<
2090 D: fidl::encoding::ResourceDialect,
2091 T0: fidl::encoding::Encode<u32, D>,
2092 T1: fidl::encoding::Encode<u32, D>,
2093 T2: fidl::encoding::Encode<u32, D>,
2094 T3: fidl::encoding::Encode<i64, D>,
2095 > fidl::encoding::Encode<DeviceGetFormatResponse, D> for (T0, T1, T2, T3)
2096 {
2097 #[inline]
2098 unsafe fn encode(
2099 self,
2100 encoder: &mut fidl::encoding::Encoder<'_, D>,
2101 offset: usize,
2102 depth: fidl::encoding::Depth,
2103 ) -> fidl::Result<()> {
2104 encoder.debug_check_bounds::<DeviceGetFormatResponse>(offset);
2105 unsafe {
2108 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2109 (ptr as *mut u64).write_unaligned(0);
2110 }
2111 self.0.encode(encoder, offset + 0, depth)?;
2113 self.1.encode(encoder, offset + 4, depth)?;
2114 self.2.encode(encoder, offset + 8, depth)?;
2115 self.3.encode(encoder, offset + 16, depth)?;
2116 Ok(())
2117 }
2118 }
2119
2120 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2121 for DeviceGetFormatResponse
2122 {
2123 #[inline(always)]
2124 fn new_empty() -> Self {
2125 Self {
2126 frames_per_second: fidl::new_empty!(u32, D),
2127 sample_format: fidl::new_empty!(u32, D),
2128 num_channels: fidl::new_empty!(u32, D),
2129 external_delay: fidl::new_empty!(i64, D),
2130 }
2131 }
2132
2133 #[inline]
2134 unsafe fn decode(
2135 &mut self,
2136 decoder: &mut fidl::encoding::Decoder<'_, D>,
2137 offset: usize,
2138 _depth: fidl::encoding::Depth,
2139 ) -> fidl::Result<()> {
2140 decoder.debug_check_bounds::<Self>(offset);
2141 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2142 let ptr = unsafe { buf_ptr.offset(8) };
2144 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2145 let mask = 0xffffffff00000000u64;
2146 let maskedval = padval & mask;
2147 if maskedval != 0 {
2148 return Err(fidl::Error::NonZeroPadding {
2149 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2150 });
2151 }
2152 unsafe {
2154 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 24);
2155 }
2156 Ok(())
2157 }
2158 }
2159
2160 impl fidl::encoding::ValueTypeMarker for DeviceGetGainResponse {
2161 type Borrowed<'a> = &'a Self;
2162 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2163 value
2164 }
2165 }
2166
2167 unsafe impl fidl::encoding::TypeMarker for DeviceGetGainResponse {
2168 type Owned = Self;
2169
2170 #[inline(always)]
2171 fn inline_align(_context: fidl::encoding::Context) -> usize {
2172 4
2173 }
2174
2175 #[inline(always)]
2176 fn inline_size(_context: fidl::encoding::Context) -> usize {
2177 8
2178 }
2179 }
2180
2181 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceGetGainResponse, D>
2182 for &DeviceGetGainResponse
2183 {
2184 #[inline]
2185 unsafe fn encode(
2186 self,
2187 encoder: &mut fidl::encoding::Encoder<'_, D>,
2188 offset: usize,
2189 _depth: fidl::encoding::Depth,
2190 ) -> fidl::Result<()> {
2191 encoder.debug_check_bounds::<DeviceGetGainResponse>(offset);
2192 fidl::encoding::Encode::<DeviceGetGainResponse, D>::encode(
2194 (
2195 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.current_mute),
2196 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.current_agc),
2197 <f32 as fidl::encoding::ValueTypeMarker>::borrow(&self.current_gain_db),
2198 ),
2199 encoder,
2200 offset,
2201 _depth,
2202 )
2203 }
2204 }
2205 unsafe impl<
2206 D: fidl::encoding::ResourceDialect,
2207 T0: fidl::encoding::Encode<bool, D>,
2208 T1: fidl::encoding::Encode<bool, D>,
2209 T2: fidl::encoding::Encode<f32, D>,
2210 > fidl::encoding::Encode<DeviceGetGainResponse, D> for (T0, T1, T2)
2211 {
2212 #[inline]
2213 unsafe fn encode(
2214 self,
2215 encoder: &mut fidl::encoding::Encoder<'_, D>,
2216 offset: usize,
2217 depth: fidl::encoding::Depth,
2218 ) -> fidl::Result<()> {
2219 encoder.debug_check_bounds::<DeviceGetGainResponse>(offset);
2220 unsafe {
2223 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2224 (ptr as *mut u32).write_unaligned(0);
2225 }
2226 self.0.encode(encoder, offset + 0, depth)?;
2228 self.1.encode(encoder, offset + 1, depth)?;
2229 self.2.encode(encoder, offset + 4, depth)?;
2230 Ok(())
2231 }
2232 }
2233
2234 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceGetGainResponse {
2235 #[inline(always)]
2236 fn new_empty() -> Self {
2237 Self {
2238 current_mute: fidl::new_empty!(bool, D),
2239 current_agc: fidl::new_empty!(bool, D),
2240 current_gain_db: fidl::new_empty!(f32, D),
2241 }
2242 }
2243
2244 #[inline]
2245 unsafe fn decode(
2246 &mut self,
2247 decoder: &mut fidl::encoding::Decoder<'_, D>,
2248 offset: usize,
2249 _depth: fidl::encoding::Depth,
2250 ) -> fidl::Result<()> {
2251 decoder.debug_check_bounds::<Self>(offset);
2252 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2254 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2255 let mask = 0xffff0000u32;
2256 let maskedval = padval & mask;
2257 if maskedval != 0 {
2258 return Err(fidl::Error::NonZeroPadding {
2259 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2260 });
2261 }
2262 fidl::decode!(bool, D, &mut self.current_mute, decoder, offset + 0, _depth)?;
2263 fidl::decode!(bool, D, &mut self.current_agc, decoder, offset + 1, _depth)?;
2264 fidl::decode!(f32, D, &mut self.current_gain_db, decoder, offset + 4, _depth)?;
2265 Ok(())
2266 }
2267 }
2268
2269 impl fidl::encoding::ValueTypeMarker for DeviceGetPositionResponse {
2270 type Borrowed<'a> = &'a Self;
2271 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2272 value
2273 }
2274 }
2275
2276 unsafe impl fidl::encoding::TypeMarker for DeviceGetPositionResponse {
2277 type Owned = Self;
2278
2279 #[inline(always)]
2280 fn inline_align(_context: fidl::encoding::Context) -> usize {
2281 8
2282 }
2283
2284 #[inline(always)]
2285 fn inline_size(_context: fidl::encoding::Context) -> usize {
2286 16
2287 }
2288 }
2289
2290 unsafe impl<D: fidl::encoding::ResourceDialect>
2291 fidl::encoding::Encode<DeviceGetPositionResponse, D> for &DeviceGetPositionResponse
2292 {
2293 #[inline]
2294 unsafe fn encode(
2295 self,
2296 encoder: &mut fidl::encoding::Encoder<'_, D>,
2297 offset: usize,
2298 _depth: fidl::encoding::Depth,
2299 ) -> fidl::Result<()> {
2300 encoder.debug_check_bounds::<DeviceGetPositionResponse>(offset);
2301 unsafe {
2302 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2304 (buf_ptr as *mut DeviceGetPositionResponse)
2305 .write_unaligned((self as *const DeviceGetPositionResponse).read());
2306 let padding_ptr = buf_ptr.offset(8) as *mut u64;
2309 let padding_mask = 0xffffffff00000000u64;
2310 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2311 }
2312 Ok(())
2313 }
2314 }
2315 unsafe impl<
2316 D: fidl::encoding::ResourceDialect,
2317 T0: fidl::encoding::Encode<i64, D>,
2318 T1: fidl::encoding::Encode<u32, D>,
2319 > fidl::encoding::Encode<DeviceGetPositionResponse, D> for (T0, T1)
2320 {
2321 #[inline]
2322 unsafe fn encode(
2323 self,
2324 encoder: &mut fidl::encoding::Encoder<'_, D>,
2325 offset: usize,
2326 depth: fidl::encoding::Depth,
2327 ) -> fidl::Result<()> {
2328 encoder.debug_check_bounds::<DeviceGetPositionResponse>(offset);
2329 unsafe {
2332 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2333 (ptr as *mut u64).write_unaligned(0);
2334 }
2335 self.0.encode(encoder, offset + 0, depth)?;
2337 self.1.encode(encoder, offset + 8, depth)?;
2338 Ok(())
2339 }
2340 }
2341
2342 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2343 for DeviceGetPositionResponse
2344 {
2345 #[inline(always)]
2346 fn new_empty() -> Self {
2347 Self {
2348 monotonic_time: fidl::new_empty!(i64, D),
2349 ring_position: fidl::new_empty!(u32, D),
2350 }
2351 }
2352
2353 #[inline]
2354 unsafe fn decode(
2355 &mut self,
2356 decoder: &mut fidl::encoding::Decoder<'_, D>,
2357 offset: usize,
2358 _depth: fidl::encoding::Depth,
2359 ) -> fidl::Result<()> {
2360 decoder.debug_check_bounds::<Self>(offset);
2361 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2362 let ptr = unsafe { buf_ptr.offset(8) };
2364 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2365 let mask = 0xffffffff00000000u64;
2366 let maskedval = padval & mask;
2367 if maskedval != 0 {
2368 return Err(fidl::Error::NonZeroPadding {
2369 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2370 });
2371 }
2372 unsafe {
2374 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2375 }
2376 Ok(())
2377 }
2378 }
2379
2380 impl fidl::encoding::ValueTypeMarker for FormatRange {
2381 type Borrowed<'a> = &'a Self;
2382 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2383 value
2384 }
2385 }
2386
2387 unsafe impl fidl::encoding::TypeMarker for FormatRange {
2388 type Owned = Self;
2389
2390 #[inline(always)]
2391 fn inline_align(_context: fidl::encoding::Context) -> usize {
2392 4
2393 }
2394
2395 #[inline(always)]
2396 fn inline_size(_context: fidl::encoding::Context) -> usize {
2397 16
2398 }
2399 #[inline(always)]
2400 fn encode_is_copy() -> bool {
2401 true
2402 }
2403
2404 #[inline(always)]
2405 fn decode_is_copy() -> bool {
2406 true
2407 }
2408 }
2409
2410 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FormatRange, D>
2411 for &FormatRange
2412 {
2413 #[inline]
2414 unsafe fn encode(
2415 self,
2416 encoder: &mut fidl::encoding::Encoder<'_, D>,
2417 offset: usize,
2418 _depth: fidl::encoding::Depth,
2419 ) -> fidl::Result<()> {
2420 encoder.debug_check_bounds::<FormatRange>(offset);
2421 unsafe {
2422 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2424 (buf_ptr as *mut FormatRange).write_unaligned((self as *const FormatRange).read());
2425 }
2428 Ok(())
2429 }
2430 }
2431 unsafe impl<
2432 D: fidl::encoding::ResourceDialect,
2433 T0: fidl::encoding::Encode<u32, D>,
2434 T1: fidl::encoding::Encode<u32, D>,
2435 T2: fidl::encoding::Encode<u32, D>,
2436 T3: fidl::encoding::Encode<u8, D>,
2437 T4: fidl::encoding::Encode<u8, D>,
2438 T5: fidl::encoding::Encode<u16, D>,
2439 > fidl::encoding::Encode<FormatRange, D> for (T0, T1, T2, T3, T4, T5)
2440 {
2441 #[inline]
2442 unsafe fn encode(
2443 self,
2444 encoder: &mut fidl::encoding::Encoder<'_, D>,
2445 offset: usize,
2446 depth: fidl::encoding::Depth,
2447 ) -> fidl::Result<()> {
2448 encoder.debug_check_bounds::<FormatRange>(offset);
2449 self.0.encode(encoder, offset + 0, depth)?;
2453 self.1.encode(encoder, offset + 4, depth)?;
2454 self.2.encode(encoder, offset + 8, depth)?;
2455 self.3.encode(encoder, offset + 12, depth)?;
2456 self.4.encode(encoder, offset + 13, depth)?;
2457 self.5.encode(encoder, offset + 14, depth)?;
2458 Ok(())
2459 }
2460 }
2461
2462 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FormatRange {
2463 #[inline(always)]
2464 fn new_empty() -> Self {
2465 Self {
2466 sample_format_flags: fidl::new_empty!(u32, D),
2467 min_frame_rate: fidl::new_empty!(u32, D),
2468 max_frame_rate: fidl::new_empty!(u32, D),
2469 min_channels: fidl::new_empty!(u8, D),
2470 max_channels: fidl::new_empty!(u8, D),
2471 rate_family_flags: fidl::new_empty!(u16, D),
2472 }
2473 }
2474
2475 #[inline]
2476 unsafe fn decode(
2477 &mut self,
2478 decoder: &mut fidl::encoding::Decoder<'_, D>,
2479 offset: usize,
2480 _depth: fidl::encoding::Depth,
2481 ) -> fidl::Result<()> {
2482 decoder.debug_check_bounds::<Self>(offset);
2483 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2484 unsafe {
2487 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
2488 }
2489 Ok(())
2490 }
2491 }
2492
2493 impl fidl::encoding::ValueTypeMarker for RingBufferConstraints {
2494 type Borrowed<'a> = &'a Self;
2495 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2496 value
2497 }
2498 }
2499
2500 unsafe impl fidl::encoding::TypeMarker for RingBufferConstraints {
2501 type Owned = Self;
2502
2503 #[inline(always)]
2504 fn inline_align(_context: fidl::encoding::Context) -> usize {
2505 4
2506 }
2507
2508 #[inline(always)]
2509 fn inline_size(_context: fidl::encoding::Context) -> usize {
2510 12
2511 }
2512 #[inline(always)]
2513 fn encode_is_copy() -> bool {
2514 true
2515 }
2516
2517 #[inline(always)]
2518 fn decode_is_copy() -> bool {
2519 true
2520 }
2521 }
2522
2523 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RingBufferConstraints, D>
2524 for &RingBufferConstraints
2525 {
2526 #[inline]
2527 unsafe fn encode(
2528 self,
2529 encoder: &mut fidl::encoding::Encoder<'_, D>,
2530 offset: usize,
2531 _depth: fidl::encoding::Depth,
2532 ) -> fidl::Result<()> {
2533 encoder.debug_check_bounds::<RingBufferConstraints>(offset);
2534 unsafe {
2535 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2537 (buf_ptr as *mut RingBufferConstraints)
2538 .write_unaligned((self as *const RingBufferConstraints).read());
2539 }
2542 Ok(())
2543 }
2544 }
2545 unsafe impl<
2546 D: fidl::encoding::ResourceDialect,
2547 T0: fidl::encoding::Encode<u32, D>,
2548 T1: fidl::encoding::Encode<u32, D>,
2549 T2: fidl::encoding::Encode<u32, D>,
2550 > fidl::encoding::Encode<RingBufferConstraints, D> for (T0, T1, T2)
2551 {
2552 #[inline]
2553 unsafe fn encode(
2554 self,
2555 encoder: &mut fidl::encoding::Encoder<'_, D>,
2556 offset: usize,
2557 depth: fidl::encoding::Depth,
2558 ) -> fidl::Result<()> {
2559 encoder.debug_check_bounds::<RingBufferConstraints>(offset);
2560 self.0.encode(encoder, offset + 0, depth)?;
2564 self.1.encode(encoder, offset + 4, depth)?;
2565 self.2.encode(encoder, offset + 8, depth)?;
2566 Ok(())
2567 }
2568 }
2569
2570 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBufferConstraints {
2571 #[inline(always)]
2572 fn new_empty() -> Self {
2573 Self {
2574 min_frames: fidl::new_empty!(u32, D),
2575 max_frames: fidl::new_empty!(u32, D),
2576 modulo_frames: fidl::new_empty!(u32, D),
2577 }
2578 }
2579
2580 #[inline]
2581 unsafe fn decode(
2582 &mut self,
2583 decoder: &mut fidl::encoding::Decoder<'_, D>,
2584 offset: usize,
2585 _depth: fidl::encoding::Depth,
2586 ) -> fidl::Result<()> {
2587 decoder.debug_check_bounds::<Self>(offset);
2588 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2589 unsafe {
2592 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 12);
2593 }
2594 Ok(())
2595 }
2596 }
2597
2598 impl ClockProperties {
2599 #[inline(always)]
2600 fn max_ordinal_present(&self) -> u64 {
2601 if let Some(_) = self.rate_adjustment_ppm {
2602 return 2;
2603 }
2604 if let Some(_) = self.domain {
2605 return 1;
2606 }
2607 0
2608 }
2609 }
2610
2611 impl fidl::encoding::ValueTypeMarker for ClockProperties {
2612 type Borrowed<'a> = &'a Self;
2613 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2614 value
2615 }
2616 }
2617
2618 unsafe impl fidl::encoding::TypeMarker for ClockProperties {
2619 type Owned = Self;
2620
2621 #[inline(always)]
2622 fn inline_align(_context: fidl::encoding::Context) -> usize {
2623 8
2624 }
2625
2626 #[inline(always)]
2627 fn inline_size(_context: fidl::encoding::Context) -> usize {
2628 16
2629 }
2630 }
2631
2632 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ClockProperties, D>
2633 for &ClockProperties
2634 {
2635 unsafe fn encode(
2636 self,
2637 encoder: &mut fidl::encoding::Encoder<'_, D>,
2638 offset: usize,
2639 mut depth: fidl::encoding::Depth,
2640 ) -> fidl::Result<()> {
2641 encoder.debug_check_bounds::<ClockProperties>(offset);
2642 let max_ordinal: u64 = self.max_ordinal_present();
2644 encoder.write_num(max_ordinal, offset);
2645 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2646 if max_ordinal == 0 {
2648 return Ok(());
2649 }
2650 depth.increment()?;
2651 let envelope_size = 8;
2652 let bytes_len = max_ordinal as usize * envelope_size;
2653 #[allow(unused_variables)]
2654 let offset = encoder.out_of_line_offset(bytes_len);
2655 let mut _prev_end_offset: usize = 0;
2656 if 1 > max_ordinal {
2657 return Ok(());
2658 }
2659
2660 let cur_offset: usize = (1 - 1) * envelope_size;
2663
2664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2666
2667 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2672 self.domain.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2673 encoder,
2674 offset + cur_offset,
2675 depth,
2676 )?;
2677
2678 _prev_end_offset = cur_offset + envelope_size;
2679 if 2 > max_ordinal {
2680 return Ok(());
2681 }
2682
2683 let cur_offset: usize = (2 - 1) * envelope_size;
2686
2687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2689
2690 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2695 self.rate_adjustment_ppm
2696 .as_ref()
2697 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2698 encoder,
2699 offset + cur_offset,
2700 depth,
2701 )?;
2702
2703 _prev_end_offset = cur_offset + envelope_size;
2704
2705 Ok(())
2706 }
2707 }
2708
2709 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ClockProperties {
2710 #[inline(always)]
2711 fn new_empty() -> Self {
2712 Self::default()
2713 }
2714
2715 unsafe fn decode(
2716 &mut self,
2717 decoder: &mut fidl::encoding::Decoder<'_, D>,
2718 offset: usize,
2719 mut depth: fidl::encoding::Depth,
2720 ) -> fidl::Result<()> {
2721 decoder.debug_check_bounds::<Self>(offset);
2722 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2723 None => return Err(fidl::Error::NotNullable),
2724 Some(len) => len,
2725 };
2726 if len == 0 {
2728 return Ok(());
2729 };
2730 depth.increment()?;
2731 let envelope_size = 8;
2732 let bytes_len = len * envelope_size;
2733 let offset = decoder.out_of_line_offset(bytes_len)?;
2734 let mut _next_ordinal_to_read = 0;
2736 let mut next_offset = offset;
2737 let end_offset = offset + bytes_len;
2738 _next_ordinal_to_read += 1;
2739 if next_offset >= end_offset {
2740 return Ok(());
2741 }
2742
2743 while _next_ordinal_to_read < 1 {
2745 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2746 _next_ordinal_to_read += 1;
2747 next_offset += envelope_size;
2748 }
2749
2750 let next_out_of_line = decoder.next_out_of_line();
2751 let handles_before = decoder.remaining_handles();
2752 if let Some((inlined, num_bytes, num_handles)) =
2753 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2754 {
2755 let member_inline_size =
2756 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2757 if inlined != (member_inline_size <= 4) {
2758 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2759 }
2760 let inner_offset;
2761 let mut inner_depth = depth.clone();
2762 if inlined {
2763 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2764 inner_offset = next_offset;
2765 } else {
2766 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2767 inner_depth.increment()?;
2768 }
2769 let val_ref = self.domain.get_or_insert_with(|| fidl::new_empty!(i32, D));
2770 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2772 {
2773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2774 }
2775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2777 }
2778 }
2779
2780 next_offset += envelope_size;
2781 _next_ordinal_to_read += 1;
2782 if next_offset >= end_offset {
2783 return Ok(());
2784 }
2785
2786 while _next_ordinal_to_read < 2 {
2788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2789 _next_ordinal_to_read += 1;
2790 next_offset += envelope_size;
2791 }
2792
2793 let next_out_of_line = decoder.next_out_of_line();
2794 let handles_before = decoder.remaining_handles();
2795 if let Some((inlined, num_bytes, num_handles)) =
2796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2797 {
2798 let member_inline_size =
2799 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2800 if inlined != (member_inline_size <= 4) {
2801 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2802 }
2803 let inner_offset;
2804 let mut inner_depth = depth.clone();
2805 if inlined {
2806 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2807 inner_offset = next_offset;
2808 } else {
2809 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2810 inner_depth.increment()?;
2811 }
2812 let val_ref =
2813 self.rate_adjustment_ppm.get_or_insert_with(|| fidl::new_empty!(i32, D));
2814 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2816 {
2817 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2818 }
2819 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2820 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2821 }
2822 }
2823
2824 next_offset += envelope_size;
2825
2826 while next_offset < end_offset {
2828 _next_ordinal_to_read += 1;
2829 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2830 next_offset += envelope_size;
2831 }
2832
2833 Ok(())
2834 }
2835 }
2836
2837 impl Codec {
2838 #[inline(always)]
2839 fn max_ordinal_present(&self) -> u64 {
2840 if let Some(_) = self.plug_properties {
2841 return 3;
2842 }
2843 if let Some(_) = self.dai_interconnect {
2844 return 2;
2845 }
2846 if let Some(_) = self.is_input {
2847 return 1;
2848 }
2849 0
2850 }
2851 }
2852
2853 impl fidl::encoding::ValueTypeMarker for Codec {
2854 type Borrowed<'a> = &'a Self;
2855 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2856 value
2857 }
2858 }
2859
2860 unsafe impl fidl::encoding::TypeMarker for Codec {
2861 type Owned = Self;
2862
2863 #[inline(always)]
2864 fn inline_align(_context: fidl::encoding::Context) -> usize {
2865 8
2866 }
2867
2868 #[inline(always)]
2869 fn inline_size(_context: fidl::encoding::Context) -> usize {
2870 16
2871 }
2872 }
2873
2874 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Codec, D> for &Codec {
2875 unsafe fn encode(
2876 self,
2877 encoder: &mut fidl::encoding::Encoder<'_, D>,
2878 offset: usize,
2879 mut depth: fidl::encoding::Depth,
2880 ) -> fidl::Result<()> {
2881 encoder.debug_check_bounds::<Codec>(offset);
2882 let max_ordinal: u64 = self.max_ordinal_present();
2884 encoder.write_num(max_ordinal, offset);
2885 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2886 if max_ordinal == 0 {
2888 return Ok(());
2889 }
2890 depth.increment()?;
2891 let envelope_size = 8;
2892 let bytes_len = max_ordinal as usize * envelope_size;
2893 #[allow(unused_variables)]
2894 let offset = encoder.out_of_line_offset(bytes_len);
2895 let mut _prev_end_offset: usize = 0;
2896 if 1 > max_ordinal {
2897 return Ok(());
2898 }
2899
2900 let cur_offset: usize = (1 - 1) * envelope_size;
2903
2904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2906
2907 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2912 self.is_input.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2913 encoder,
2914 offset + cur_offset,
2915 depth,
2916 )?;
2917
2918 _prev_end_offset = cur_offset + envelope_size;
2919 if 2 > max_ordinal {
2920 return Ok(());
2921 }
2922
2923 let cur_offset: usize = (2 - 1) * envelope_size;
2926
2927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2929
2930 fidl::encoding::encode_in_envelope_optional::<DaiInterconnect, D>(
2935 self.dai_interconnect
2936 .as_ref()
2937 .map(<DaiInterconnect as fidl::encoding::ValueTypeMarker>::borrow),
2938 encoder,
2939 offset + cur_offset,
2940 depth,
2941 )?;
2942
2943 _prev_end_offset = cur_offset + envelope_size;
2944 if 3 > max_ordinal {
2945 return Ok(());
2946 }
2947
2948 let cur_offset: usize = (3 - 1) * envelope_size;
2951
2952 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2954
2955 fidl::encoding::encode_in_envelope_optional::<PlugProperties, D>(
2960 self.plug_properties
2961 .as_ref()
2962 .map(<PlugProperties as fidl::encoding::ValueTypeMarker>::borrow),
2963 encoder,
2964 offset + cur_offset,
2965 depth,
2966 )?;
2967
2968 _prev_end_offset = cur_offset + envelope_size;
2969
2970 Ok(())
2971 }
2972 }
2973
2974 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Codec {
2975 #[inline(always)]
2976 fn new_empty() -> Self {
2977 Self::default()
2978 }
2979
2980 unsafe fn decode(
2981 &mut self,
2982 decoder: &mut fidl::encoding::Decoder<'_, D>,
2983 offset: usize,
2984 mut depth: fidl::encoding::Depth,
2985 ) -> fidl::Result<()> {
2986 decoder.debug_check_bounds::<Self>(offset);
2987 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2988 None => return Err(fidl::Error::NotNullable),
2989 Some(len) => len,
2990 };
2991 if len == 0 {
2993 return Ok(());
2994 };
2995 depth.increment()?;
2996 let envelope_size = 8;
2997 let bytes_len = len * envelope_size;
2998 let offset = decoder.out_of_line_offset(bytes_len)?;
2999 let mut _next_ordinal_to_read = 0;
3001 let mut next_offset = offset;
3002 let end_offset = offset + bytes_len;
3003 _next_ordinal_to_read += 1;
3004 if next_offset >= end_offset {
3005 return Ok(());
3006 }
3007
3008 while _next_ordinal_to_read < 1 {
3010 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3011 _next_ordinal_to_read += 1;
3012 next_offset += envelope_size;
3013 }
3014
3015 let next_out_of_line = decoder.next_out_of_line();
3016 let handles_before = decoder.remaining_handles();
3017 if let Some((inlined, num_bytes, num_handles)) =
3018 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3019 {
3020 let member_inline_size =
3021 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3022 if inlined != (member_inline_size <= 4) {
3023 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3024 }
3025 let inner_offset;
3026 let mut inner_depth = depth.clone();
3027 if inlined {
3028 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3029 inner_offset = next_offset;
3030 } else {
3031 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3032 inner_depth.increment()?;
3033 }
3034 let val_ref = self.is_input.get_or_insert_with(|| fidl::new_empty!(bool, D));
3035 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3036 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3037 {
3038 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3039 }
3040 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3041 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3042 }
3043 }
3044
3045 next_offset += envelope_size;
3046 _next_ordinal_to_read += 1;
3047 if next_offset >= end_offset {
3048 return Ok(());
3049 }
3050
3051 while _next_ordinal_to_read < 2 {
3053 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3054 _next_ordinal_to_read += 1;
3055 next_offset += envelope_size;
3056 }
3057
3058 let next_out_of_line = decoder.next_out_of_line();
3059 let handles_before = decoder.remaining_handles();
3060 if let Some((inlined, num_bytes, num_handles)) =
3061 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3062 {
3063 let member_inline_size =
3064 <DaiInterconnect as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3065 if inlined != (member_inline_size <= 4) {
3066 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3067 }
3068 let inner_offset;
3069 let mut inner_depth = depth.clone();
3070 if inlined {
3071 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3072 inner_offset = next_offset;
3073 } else {
3074 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3075 inner_depth.increment()?;
3076 }
3077 let val_ref = self
3078 .dai_interconnect
3079 .get_or_insert_with(|| fidl::new_empty!(DaiInterconnect, D));
3080 fidl::decode!(DaiInterconnect, D, val_ref, decoder, inner_offset, inner_depth)?;
3081 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3082 {
3083 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3084 }
3085 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3086 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3087 }
3088 }
3089
3090 next_offset += envelope_size;
3091 _next_ordinal_to_read += 1;
3092 if next_offset >= end_offset {
3093 return Ok(());
3094 }
3095
3096 while _next_ordinal_to_read < 3 {
3098 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3099 _next_ordinal_to_read += 1;
3100 next_offset += envelope_size;
3101 }
3102
3103 let next_out_of_line = decoder.next_out_of_line();
3104 let handles_before = decoder.remaining_handles();
3105 if let Some((inlined, num_bytes, num_handles)) =
3106 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3107 {
3108 let member_inline_size =
3109 <PlugProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3110 if inlined != (member_inline_size <= 4) {
3111 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3112 }
3113 let inner_offset;
3114 let mut inner_depth = depth.clone();
3115 if inlined {
3116 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3117 inner_offset = next_offset;
3118 } else {
3119 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3120 inner_depth.increment()?;
3121 }
3122 let val_ref =
3123 self.plug_properties.get_or_insert_with(|| fidl::new_empty!(PlugProperties, D));
3124 fidl::decode!(PlugProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
3125 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3126 {
3127 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3128 }
3129 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3130 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3131 }
3132 }
3133
3134 next_offset += envelope_size;
3135
3136 while next_offset < end_offset {
3138 _next_ordinal_to_read += 1;
3139 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3140 next_offset += envelope_size;
3141 }
3142
3143 Ok(())
3144 }
3145 }
3146
3147 impl Composite {
3148 #[inline(always)]
3149 fn max_ordinal_present(&self) -> u64 {
3150 if let Some(_) = self.packet_streams {
3151 return 5;
3152 }
3153 if let Some(_) = self.topologies {
3154 return 4;
3155 }
3156 if let Some(_) = self.clock_properties {
3157 return 3;
3158 }
3159 if let Some(_) = self.dai_interconnects {
3160 return 2;
3161 }
3162 if let Some(_) = self.ring_buffers {
3163 return 1;
3164 }
3165 0
3166 }
3167 }
3168
3169 impl fidl::encoding::ValueTypeMarker for Composite {
3170 type Borrowed<'a> = &'a Self;
3171 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3172 value
3173 }
3174 }
3175
3176 unsafe impl fidl::encoding::TypeMarker for Composite {
3177 type Owned = Self;
3178
3179 #[inline(always)]
3180 fn inline_align(_context: fidl::encoding::Context) -> usize {
3181 8
3182 }
3183
3184 #[inline(always)]
3185 fn inline_size(_context: fidl::encoding::Context) -> usize {
3186 16
3187 }
3188 }
3189
3190 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Composite, D>
3191 for &Composite
3192 {
3193 unsafe fn encode(
3194 self,
3195 encoder: &mut fidl::encoding::Encoder<'_, D>,
3196 offset: usize,
3197 mut depth: fidl::encoding::Depth,
3198 ) -> fidl::Result<()> {
3199 encoder.debug_check_bounds::<Composite>(offset);
3200 let max_ordinal: u64 = self.max_ordinal_present();
3202 encoder.write_num(max_ordinal, offset);
3203 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3204 if max_ordinal == 0 {
3206 return Ok(());
3207 }
3208 depth.increment()?;
3209 let envelope_size = 8;
3210 let bytes_len = max_ordinal as usize * envelope_size;
3211 #[allow(unused_variables)]
3212 let offset = encoder.out_of_line_offset(bytes_len);
3213 let mut _prev_end_offset: usize = 0;
3214 if 1 > max_ordinal {
3215 return Ok(());
3216 }
3217
3218 let cur_offset: usize = (1 - 1) * envelope_size;
3221
3222 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3224
3225 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CompositeRingBuffer, 64>, D>(
3230 self.ring_buffers.as_ref().map(<fidl::encoding::Vector<CompositeRingBuffer, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3231 encoder, offset + cur_offset, depth
3232 )?;
3233
3234 _prev_end_offset = cur_offset + envelope_size;
3235 if 2 > max_ordinal {
3236 return Ok(());
3237 }
3238
3239 let cur_offset: usize = (2 - 1) * envelope_size;
3242
3243 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3245
3246 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CompositeDaiInterconnect, 64>, D>(
3251 self.dai_interconnects.as_ref().map(<fidl::encoding::Vector<CompositeDaiInterconnect, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3252 encoder, offset + cur_offset, depth
3253 )?;
3254
3255 _prev_end_offset = cur_offset + envelope_size;
3256 if 3 > max_ordinal {
3257 return Ok(());
3258 }
3259
3260 let cur_offset: usize = (3 - 1) * envelope_size;
3263
3264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3266
3267 fidl::encoding::encode_in_envelope_optional::<ClockProperties, D>(
3272 self.clock_properties
3273 .as_ref()
3274 .map(<ClockProperties as fidl::encoding::ValueTypeMarker>::borrow),
3275 encoder,
3276 offset + cur_offset,
3277 depth,
3278 )?;
3279
3280 _prev_end_offset = cur_offset + envelope_size;
3281 if 4 > max_ordinal {
3282 return Ok(());
3283 }
3284
3285 let cur_offset: usize = (4 - 1) * envelope_size;
3288
3289 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3291
3292 fidl::encoding::encode_in_envelope_optional::<
3297 fidl::encoding::Vector<
3298 fidl_fuchsia_hardware_audio_signalprocessing__common::Topology,
3299 64,
3300 >,
3301 D,
3302 >(
3303 self.topologies.as_ref().map(
3304 <fidl::encoding::Vector<
3305 fidl_fuchsia_hardware_audio_signalprocessing__common::Topology,
3306 64,
3307 > as fidl::encoding::ValueTypeMarker>::borrow,
3308 ),
3309 encoder,
3310 offset + cur_offset,
3311 depth,
3312 )?;
3313
3314 _prev_end_offset = cur_offset + envelope_size;
3315 if 5 > max_ordinal {
3316 return Ok(());
3317 }
3318
3319 let cur_offset: usize = (5 - 1) * envelope_size;
3322
3323 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3325
3326 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<CompositePacketStream, 64>, D>(
3331 self.packet_streams.as_ref().map(<fidl::encoding::Vector<CompositePacketStream, 64> as fidl::encoding::ValueTypeMarker>::borrow),
3332 encoder, offset + cur_offset, depth
3333 )?;
3334
3335 _prev_end_offset = cur_offset + envelope_size;
3336
3337 Ok(())
3338 }
3339 }
3340
3341 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Composite {
3342 #[inline(always)]
3343 fn new_empty() -> Self {
3344 Self::default()
3345 }
3346
3347 unsafe fn decode(
3348 &mut self,
3349 decoder: &mut fidl::encoding::Decoder<'_, D>,
3350 offset: usize,
3351 mut depth: fidl::encoding::Depth,
3352 ) -> fidl::Result<()> {
3353 decoder.debug_check_bounds::<Self>(offset);
3354 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3355 None => return Err(fidl::Error::NotNullable),
3356 Some(len) => len,
3357 };
3358 if len == 0 {
3360 return Ok(());
3361 };
3362 depth.increment()?;
3363 let envelope_size = 8;
3364 let bytes_len = len * envelope_size;
3365 let offset = decoder.out_of_line_offset(bytes_len)?;
3366 let mut _next_ordinal_to_read = 0;
3368 let mut next_offset = offset;
3369 let end_offset = offset + bytes_len;
3370 _next_ordinal_to_read += 1;
3371 if next_offset >= end_offset {
3372 return Ok(());
3373 }
3374
3375 while _next_ordinal_to_read < 1 {
3377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3378 _next_ordinal_to_read += 1;
3379 next_offset += envelope_size;
3380 }
3381
3382 let next_out_of_line = decoder.next_out_of_line();
3383 let handles_before = decoder.remaining_handles();
3384 if let Some((inlined, num_bytes, num_handles)) =
3385 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3386 {
3387 let member_inline_size = <fidl::encoding::Vector<CompositeRingBuffer, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3388 if inlined != (member_inline_size <= 4) {
3389 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3390 }
3391 let inner_offset;
3392 let mut inner_depth = depth.clone();
3393 if inlined {
3394 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3395 inner_offset = next_offset;
3396 } else {
3397 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3398 inner_depth.increment()?;
3399 }
3400 let val_ref = self.ring_buffers.get_or_insert_with(
3401 || fidl::new_empty!(fidl::encoding::Vector<CompositeRingBuffer, 64>, D),
3402 );
3403 fidl::decode!(fidl::encoding::Vector<CompositeRingBuffer, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
3404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3405 {
3406 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3407 }
3408 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3409 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3410 }
3411 }
3412
3413 next_offset += envelope_size;
3414 _next_ordinal_to_read += 1;
3415 if next_offset >= end_offset {
3416 return Ok(());
3417 }
3418
3419 while _next_ordinal_to_read < 2 {
3421 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3422 _next_ordinal_to_read += 1;
3423 next_offset += envelope_size;
3424 }
3425
3426 let next_out_of_line = decoder.next_out_of_line();
3427 let handles_before = decoder.remaining_handles();
3428 if let Some((inlined, num_bytes, num_handles)) =
3429 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3430 {
3431 let member_inline_size = <fidl::encoding::Vector<CompositeDaiInterconnect, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3432 if inlined != (member_inline_size <= 4) {
3433 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3434 }
3435 let inner_offset;
3436 let mut inner_depth = depth.clone();
3437 if inlined {
3438 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3439 inner_offset = next_offset;
3440 } else {
3441 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3442 inner_depth.increment()?;
3443 }
3444 let val_ref = self.dai_interconnects.get_or_insert_with(
3445 || fidl::new_empty!(fidl::encoding::Vector<CompositeDaiInterconnect, 64>, D),
3446 );
3447 fidl::decode!(fidl::encoding::Vector<CompositeDaiInterconnect, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
3448 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3449 {
3450 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3451 }
3452 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3453 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3454 }
3455 }
3456
3457 next_offset += envelope_size;
3458 _next_ordinal_to_read += 1;
3459 if next_offset >= end_offset {
3460 return Ok(());
3461 }
3462
3463 while _next_ordinal_to_read < 3 {
3465 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3466 _next_ordinal_to_read += 1;
3467 next_offset += envelope_size;
3468 }
3469
3470 let next_out_of_line = decoder.next_out_of_line();
3471 let handles_before = decoder.remaining_handles();
3472 if let Some((inlined, num_bytes, num_handles)) =
3473 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3474 {
3475 let member_inline_size =
3476 <ClockProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3477 if inlined != (member_inline_size <= 4) {
3478 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3479 }
3480 let inner_offset;
3481 let mut inner_depth = depth.clone();
3482 if inlined {
3483 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3484 inner_offset = next_offset;
3485 } else {
3486 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3487 inner_depth.increment()?;
3488 }
3489 let val_ref = self
3490 .clock_properties
3491 .get_or_insert_with(|| fidl::new_empty!(ClockProperties, D));
3492 fidl::decode!(ClockProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
3493 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3494 {
3495 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3496 }
3497 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3498 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3499 }
3500 }
3501
3502 next_offset += envelope_size;
3503 _next_ordinal_to_read += 1;
3504 if next_offset >= end_offset {
3505 return Ok(());
3506 }
3507
3508 while _next_ordinal_to_read < 4 {
3510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3511 _next_ordinal_to_read += 1;
3512 next_offset += envelope_size;
3513 }
3514
3515 let next_out_of_line = decoder.next_out_of_line();
3516 let handles_before = decoder.remaining_handles();
3517 if let Some((inlined, num_bytes, num_handles)) =
3518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3519 {
3520 let member_inline_size = <fidl::encoding::Vector<
3521 fidl_fuchsia_hardware_audio_signalprocessing__common::Topology,
3522 64,
3523 > as fidl::encoding::TypeMarker>::inline_size(
3524 decoder.context
3525 );
3526 if inlined != (member_inline_size <= 4) {
3527 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3528 }
3529 let inner_offset;
3530 let mut inner_depth = depth.clone();
3531 if inlined {
3532 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3533 inner_offset = next_offset;
3534 } else {
3535 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3536 inner_depth.increment()?;
3537 }
3538 let val_ref =
3539 self.topologies.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio_signalprocessing__common::Topology, 64>, D));
3540 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio_signalprocessing__common::Topology, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
3541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3542 {
3543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3544 }
3545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3547 }
3548 }
3549
3550 next_offset += envelope_size;
3551 _next_ordinal_to_read += 1;
3552 if next_offset >= end_offset {
3553 return Ok(());
3554 }
3555
3556 while _next_ordinal_to_read < 5 {
3558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3559 _next_ordinal_to_read += 1;
3560 next_offset += envelope_size;
3561 }
3562
3563 let next_out_of_line = decoder.next_out_of_line();
3564 let handles_before = decoder.remaining_handles();
3565 if let Some((inlined, num_bytes, num_handles)) =
3566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3567 {
3568 let member_inline_size = <fidl::encoding::Vector<CompositePacketStream, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3569 if inlined != (member_inline_size <= 4) {
3570 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3571 }
3572 let inner_offset;
3573 let mut inner_depth = depth.clone();
3574 if inlined {
3575 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3576 inner_offset = next_offset;
3577 } else {
3578 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3579 inner_depth.increment()?;
3580 }
3581 let val_ref = self.packet_streams.get_or_insert_with(
3582 || fidl::new_empty!(fidl::encoding::Vector<CompositePacketStream, 64>, D),
3583 );
3584 fidl::decode!(fidl::encoding::Vector<CompositePacketStream, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
3585 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3586 {
3587 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3588 }
3589 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3590 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3591 }
3592 }
3593
3594 next_offset += envelope_size;
3595
3596 while next_offset < end_offset {
3598 _next_ordinal_to_read += 1;
3599 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3600 next_offset += envelope_size;
3601 }
3602
3603 Ok(())
3604 }
3605 }
3606
3607 impl CompositeDaiInterconnect {
3608 #[inline(always)]
3609 fn max_ordinal_present(&self) -> u64 {
3610 if let Some(_) = self.dai_interconnect {
3611 return 2;
3612 }
3613 if let Some(_) = self.id {
3614 return 1;
3615 }
3616 0
3617 }
3618 }
3619
3620 impl fidl::encoding::ValueTypeMarker for CompositeDaiInterconnect {
3621 type Borrowed<'a> = &'a Self;
3622 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3623 value
3624 }
3625 }
3626
3627 unsafe impl fidl::encoding::TypeMarker for CompositeDaiInterconnect {
3628 type Owned = Self;
3629
3630 #[inline(always)]
3631 fn inline_align(_context: fidl::encoding::Context) -> usize {
3632 8
3633 }
3634
3635 #[inline(always)]
3636 fn inline_size(_context: fidl::encoding::Context) -> usize {
3637 16
3638 }
3639 }
3640
3641 unsafe impl<D: fidl::encoding::ResourceDialect>
3642 fidl::encoding::Encode<CompositeDaiInterconnect, D> for &CompositeDaiInterconnect
3643 {
3644 unsafe fn encode(
3645 self,
3646 encoder: &mut fidl::encoding::Encoder<'_, D>,
3647 offset: usize,
3648 mut depth: fidl::encoding::Depth,
3649 ) -> fidl::Result<()> {
3650 encoder.debug_check_bounds::<CompositeDaiInterconnect>(offset);
3651 let max_ordinal: u64 = self.max_ordinal_present();
3653 encoder.write_num(max_ordinal, offset);
3654 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3655 if max_ordinal == 0 {
3657 return Ok(());
3658 }
3659 depth.increment()?;
3660 let envelope_size = 8;
3661 let bytes_len = max_ordinal as usize * envelope_size;
3662 #[allow(unused_variables)]
3663 let offset = encoder.out_of_line_offset(bytes_len);
3664 let mut _prev_end_offset: usize = 0;
3665 if 1 > max_ordinal {
3666 return Ok(());
3667 }
3668
3669 let cur_offset: usize = (1 - 1) * envelope_size;
3672
3673 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3675
3676 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3681 self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3682 encoder,
3683 offset + cur_offset,
3684 depth,
3685 )?;
3686
3687 _prev_end_offset = cur_offset + envelope_size;
3688 if 2 > max_ordinal {
3689 return Ok(());
3690 }
3691
3692 let cur_offset: usize = (2 - 1) * envelope_size;
3695
3696 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3698
3699 fidl::encoding::encode_in_envelope_optional::<DaiInterconnect, D>(
3704 self.dai_interconnect
3705 .as_ref()
3706 .map(<DaiInterconnect as fidl::encoding::ValueTypeMarker>::borrow),
3707 encoder,
3708 offset + cur_offset,
3709 depth,
3710 )?;
3711
3712 _prev_end_offset = cur_offset + envelope_size;
3713
3714 Ok(())
3715 }
3716 }
3717
3718 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
3719 for CompositeDaiInterconnect
3720 {
3721 #[inline(always)]
3722 fn new_empty() -> Self {
3723 Self::default()
3724 }
3725
3726 unsafe fn decode(
3727 &mut self,
3728 decoder: &mut fidl::encoding::Decoder<'_, D>,
3729 offset: usize,
3730 mut depth: fidl::encoding::Depth,
3731 ) -> fidl::Result<()> {
3732 decoder.debug_check_bounds::<Self>(offset);
3733 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3734 None => return Err(fidl::Error::NotNullable),
3735 Some(len) => len,
3736 };
3737 if len == 0 {
3739 return Ok(());
3740 };
3741 depth.increment()?;
3742 let envelope_size = 8;
3743 let bytes_len = len * envelope_size;
3744 let offset = decoder.out_of_line_offset(bytes_len)?;
3745 let mut _next_ordinal_to_read = 0;
3747 let mut next_offset = offset;
3748 let end_offset = offset + bytes_len;
3749 _next_ordinal_to_read += 1;
3750 if next_offset >= end_offset {
3751 return Ok(());
3752 }
3753
3754 while _next_ordinal_to_read < 1 {
3756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3757 _next_ordinal_to_read += 1;
3758 next_offset += envelope_size;
3759 }
3760
3761 let next_out_of_line = decoder.next_out_of_line();
3762 let handles_before = decoder.remaining_handles();
3763 if let Some((inlined, num_bytes, num_handles)) =
3764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3765 {
3766 let member_inline_size =
3767 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3768 if inlined != (member_inline_size <= 4) {
3769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3770 }
3771 let inner_offset;
3772 let mut inner_depth = depth.clone();
3773 if inlined {
3774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3775 inner_offset = next_offset;
3776 } else {
3777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3778 inner_depth.increment()?;
3779 }
3780 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
3781 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
3782 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3783 {
3784 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3785 }
3786 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3787 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3788 }
3789 }
3790
3791 next_offset += envelope_size;
3792 _next_ordinal_to_read += 1;
3793 if next_offset >= end_offset {
3794 return Ok(());
3795 }
3796
3797 while _next_ordinal_to_read < 2 {
3799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3800 _next_ordinal_to_read += 1;
3801 next_offset += envelope_size;
3802 }
3803
3804 let next_out_of_line = decoder.next_out_of_line();
3805 let handles_before = decoder.remaining_handles();
3806 if let Some((inlined, num_bytes, num_handles)) =
3807 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3808 {
3809 let member_inline_size =
3810 <DaiInterconnect as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3811 if inlined != (member_inline_size <= 4) {
3812 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3813 }
3814 let inner_offset;
3815 let mut inner_depth = depth.clone();
3816 if inlined {
3817 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3818 inner_offset = next_offset;
3819 } else {
3820 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3821 inner_depth.increment()?;
3822 }
3823 let val_ref = self
3824 .dai_interconnect
3825 .get_or_insert_with(|| fidl::new_empty!(DaiInterconnect, D));
3826 fidl::decode!(DaiInterconnect, D, val_ref, decoder, inner_offset, inner_depth)?;
3827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3828 {
3829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3830 }
3831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3833 }
3834 }
3835
3836 next_offset += envelope_size;
3837
3838 while next_offset < end_offset {
3840 _next_ordinal_to_read += 1;
3841 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3842 next_offset += envelope_size;
3843 }
3844
3845 Ok(())
3846 }
3847 }
3848
3849 impl CompositePacketStream {
3850 #[inline(always)]
3851 fn max_ordinal_present(&self) -> u64 {
3852 if let Some(_) = self.packet_stream {
3853 return 2;
3854 }
3855 if let Some(_) = self.id {
3856 return 1;
3857 }
3858 0
3859 }
3860 }
3861
3862 impl fidl::encoding::ValueTypeMarker for CompositePacketStream {
3863 type Borrowed<'a> = &'a Self;
3864 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3865 value
3866 }
3867 }
3868
3869 unsafe impl fidl::encoding::TypeMarker for CompositePacketStream {
3870 type Owned = Self;
3871
3872 #[inline(always)]
3873 fn inline_align(_context: fidl::encoding::Context) -> usize {
3874 8
3875 }
3876
3877 #[inline(always)]
3878 fn inline_size(_context: fidl::encoding::Context) -> usize {
3879 16
3880 }
3881 }
3882
3883 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositePacketStream, D>
3884 for &CompositePacketStream
3885 {
3886 unsafe fn encode(
3887 self,
3888 encoder: &mut fidl::encoding::Encoder<'_, D>,
3889 offset: usize,
3890 mut depth: fidl::encoding::Depth,
3891 ) -> fidl::Result<()> {
3892 encoder.debug_check_bounds::<CompositePacketStream>(offset);
3893 let max_ordinal: u64 = self.max_ordinal_present();
3895 encoder.write_num(max_ordinal, offset);
3896 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3897 if max_ordinal == 0 {
3899 return Ok(());
3900 }
3901 depth.increment()?;
3902 let envelope_size = 8;
3903 let bytes_len = max_ordinal as usize * envelope_size;
3904 #[allow(unused_variables)]
3905 let offset = encoder.out_of_line_offset(bytes_len);
3906 let mut _prev_end_offset: usize = 0;
3907 if 1 > max_ordinal {
3908 return Ok(());
3909 }
3910
3911 let cur_offset: usize = (1 - 1) * envelope_size;
3914
3915 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3917
3918 fidl::encoding::encode_in_envelope_optional::<u64, D>(
3923 self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
3924 encoder,
3925 offset + cur_offset,
3926 depth,
3927 )?;
3928
3929 _prev_end_offset = cur_offset + envelope_size;
3930 if 2 > max_ordinal {
3931 return Ok(());
3932 }
3933
3934 let cur_offset: usize = (2 - 1) * envelope_size;
3937
3938 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3940
3941 fidl::encoding::encode_in_envelope_optional::<PacketStream, D>(
3946 self.packet_stream
3947 .as_ref()
3948 .map(<PacketStream as fidl::encoding::ValueTypeMarker>::borrow),
3949 encoder,
3950 offset + cur_offset,
3951 depth,
3952 )?;
3953
3954 _prev_end_offset = cur_offset + envelope_size;
3955
3956 Ok(())
3957 }
3958 }
3959
3960 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositePacketStream {
3961 #[inline(always)]
3962 fn new_empty() -> Self {
3963 Self::default()
3964 }
3965
3966 unsafe fn decode(
3967 &mut self,
3968 decoder: &mut fidl::encoding::Decoder<'_, D>,
3969 offset: usize,
3970 mut depth: fidl::encoding::Depth,
3971 ) -> fidl::Result<()> {
3972 decoder.debug_check_bounds::<Self>(offset);
3973 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3974 None => return Err(fidl::Error::NotNullable),
3975 Some(len) => len,
3976 };
3977 if len == 0 {
3979 return Ok(());
3980 };
3981 depth.increment()?;
3982 let envelope_size = 8;
3983 let bytes_len = len * envelope_size;
3984 let offset = decoder.out_of_line_offset(bytes_len)?;
3985 let mut _next_ordinal_to_read = 0;
3987 let mut next_offset = offset;
3988 let end_offset = offset + bytes_len;
3989 _next_ordinal_to_read += 1;
3990 if next_offset >= end_offset {
3991 return Ok(());
3992 }
3993
3994 while _next_ordinal_to_read < 1 {
3996 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3997 _next_ordinal_to_read += 1;
3998 next_offset += envelope_size;
3999 }
4000
4001 let next_out_of_line = decoder.next_out_of_line();
4002 let handles_before = decoder.remaining_handles();
4003 if let Some((inlined, num_bytes, num_handles)) =
4004 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4005 {
4006 let member_inline_size =
4007 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4008 if inlined != (member_inline_size <= 4) {
4009 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4010 }
4011 let inner_offset;
4012 let mut inner_depth = depth.clone();
4013 if inlined {
4014 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4015 inner_offset = next_offset;
4016 } else {
4017 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4018 inner_depth.increment()?;
4019 }
4020 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4021 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4022 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4023 {
4024 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4025 }
4026 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4027 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4028 }
4029 }
4030
4031 next_offset += envelope_size;
4032 _next_ordinal_to_read += 1;
4033 if next_offset >= end_offset {
4034 return Ok(());
4035 }
4036
4037 while _next_ordinal_to_read < 2 {
4039 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4040 _next_ordinal_to_read += 1;
4041 next_offset += envelope_size;
4042 }
4043
4044 let next_out_of_line = decoder.next_out_of_line();
4045 let handles_before = decoder.remaining_handles();
4046 if let Some((inlined, num_bytes, num_handles)) =
4047 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4048 {
4049 let member_inline_size =
4050 <PacketStream as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4051 if inlined != (member_inline_size <= 4) {
4052 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4053 }
4054 let inner_offset;
4055 let mut inner_depth = depth.clone();
4056 if inlined {
4057 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4058 inner_offset = next_offset;
4059 } else {
4060 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4061 inner_depth.increment()?;
4062 }
4063 let val_ref =
4064 self.packet_stream.get_or_insert_with(|| fidl::new_empty!(PacketStream, D));
4065 fidl::decode!(PacketStream, D, val_ref, decoder, inner_offset, inner_depth)?;
4066 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4067 {
4068 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4069 }
4070 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4071 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4072 }
4073 }
4074
4075 next_offset += envelope_size;
4076
4077 while next_offset < end_offset {
4079 _next_ordinal_to_read += 1;
4080 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4081 next_offset += envelope_size;
4082 }
4083
4084 Ok(())
4085 }
4086 }
4087
4088 impl CompositeRingBuffer {
4089 #[inline(always)]
4090 fn max_ordinal_present(&self) -> u64 {
4091 if let Some(_) = self.ring_buffer {
4092 return 2;
4093 }
4094 if let Some(_) = self.id {
4095 return 1;
4096 }
4097 0
4098 }
4099 }
4100
4101 impl fidl::encoding::ValueTypeMarker for CompositeRingBuffer {
4102 type Borrowed<'a> = &'a Self;
4103 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4104 value
4105 }
4106 }
4107
4108 unsafe impl fidl::encoding::TypeMarker for CompositeRingBuffer {
4109 type Owned = Self;
4110
4111 #[inline(always)]
4112 fn inline_align(_context: fidl::encoding::Context) -> usize {
4113 8
4114 }
4115
4116 #[inline(always)]
4117 fn inline_size(_context: fidl::encoding::Context) -> usize {
4118 16
4119 }
4120 }
4121
4122 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CompositeRingBuffer, D>
4123 for &CompositeRingBuffer
4124 {
4125 unsafe fn encode(
4126 self,
4127 encoder: &mut fidl::encoding::Encoder<'_, D>,
4128 offset: usize,
4129 mut depth: fidl::encoding::Depth,
4130 ) -> fidl::Result<()> {
4131 encoder.debug_check_bounds::<CompositeRingBuffer>(offset);
4132 let max_ordinal: u64 = self.max_ordinal_present();
4134 encoder.write_num(max_ordinal, offset);
4135 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4136 if max_ordinal == 0 {
4138 return Ok(());
4139 }
4140 depth.increment()?;
4141 let envelope_size = 8;
4142 let bytes_len = max_ordinal as usize * envelope_size;
4143 #[allow(unused_variables)]
4144 let offset = encoder.out_of_line_offset(bytes_len);
4145 let mut _prev_end_offset: usize = 0;
4146 if 1 > max_ordinal {
4147 return Ok(());
4148 }
4149
4150 let cur_offset: usize = (1 - 1) * envelope_size;
4153
4154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4156
4157 fidl::encoding::encode_in_envelope_optional::<u64, D>(
4162 self.id.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
4163 encoder,
4164 offset + cur_offset,
4165 depth,
4166 )?;
4167
4168 _prev_end_offset = cur_offset + envelope_size;
4169 if 2 > max_ordinal {
4170 return Ok(());
4171 }
4172
4173 let cur_offset: usize = (2 - 1) * envelope_size;
4176
4177 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4179
4180 fidl::encoding::encode_in_envelope_optional::<RingBuffer, D>(
4185 self.ring_buffer
4186 .as_ref()
4187 .map(<RingBuffer as fidl::encoding::ValueTypeMarker>::borrow),
4188 encoder,
4189 offset + cur_offset,
4190 depth,
4191 )?;
4192
4193 _prev_end_offset = cur_offset + envelope_size;
4194
4195 Ok(())
4196 }
4197 }
4198
4199 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CompositeRingBuffer {
4200 #[inline(always)]
4201 fn new_empty() -> Self {
4202 Self::default()
4203 }
4204
4205 unsafe fn decode(
4206 &mut self,
4207 decoder: &mut fidl::encoding::Decoder<'_, D>,
4208 offset: usize,
4209 mut depth: fidl::encoding::Depth,
4210 ) -> fidl::Result<()> {
4211 decoder.debug_check_bounds::<Self>(offset);
4212 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4213 None => return Err(fidl::Error::NotNullable),
4214 Some(len) => len,
4215 };
4216 if len == 0 {
4218 return Ok(());
4219 };
4220 depth.increment()?;
4221 let envelope_size = 8;
4222 let bytes_len = len * envelope_size;
4223 let offset = decoder.out_of_line_offset(bytes_len)?;
4224 let mut _next_ordinal_to_read = 0;
4226 let mut next_offset = offset;
4227 let end_offset = offset + bytes_len;
4228 _next_ordinal_to_read += 1;
4229 if next_offset >= end_offset {
4230 return Ok(());
4231 }
4232
4233 while _next_ordinal_to_read < 1 {
4235 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4236 _next_ordinal_to_read += 1;
4237 next_offset += envelope_size;
4238 }
4239
4240 let next_out_of_line = decoder.next_out_of_line();
4241 let handles_before = decoder.remaining_handles();
4242 if let Some((inlined, num_bytes, num_handles)) =
4243 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4244 {
4245 let member_inline_size =
4246 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4247 if inlined != (member_inline_size <= 4) {
4248 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4249 }
4250 let inner_offset;
4251 let mut inner_depth = depth.clone();
4252 if inlined {
4253 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4254 inner_offset = next_offset;
4255 } else {
4256 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4257 inner_depth.increment()?;
4258 }
4259 let val_ref = self.id.get_or_insert_with(|| fidl::new_empty!(u64, D));
4260 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
4261 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4262 {
4263 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4264 }
4265 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4266 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4267 }
4268 }
4269
4270 next_offset += envelope_size;
4271 _next_ordinal_to_read += 1;
4272 if next_offset >= end_offset {
4273 return Ok(());
4274 }
4275
4276 while _next_ordinal_to_read < 2 {
4278 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4279 _next_ordinal_to_read += 1;
4280 next_offset += envelope_size;
4281 }
4282
4283 let next_out_of_line = decoder.next_out_of_line();
4284 let handles_before = decoder.remaining_handles();
4285 if let Some((inlined, num_bytes, num_handles)) =
4286 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4287 {
4288 let member_inline_size =
4289 <RingBuffer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4290 if inlined != (member_inline_size <= 4) {
4291 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4292 }
4293 let inner_offset;
4294 let mut inner_depth = depth.clone();
4295 if inlined {
4296 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4297 inner_offset = next_offset;
4298 } else {
4299 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4300 inner_depth.increment()?;
4301 }
4302 let val_ref =
4303 self.ring_buffer.get_or_insert_with(|| fidl::new_empty!(RingBuffer, D));
4304 fidl::decode!(RingBuffer, D, val_ref, decoder, inner_offset, inner_depth)?;
4305 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4306 {
4307 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4308 }
4309 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4310 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4311 }
4312 }
4313
4314 next_offset += envelope_size;
4315
4316 while next_offset < end_offset {
4318 _next_ordinal_to_read += 1;
4319 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4320 next_offset += envelope_size;
4321 }
4322
4323 Ok(())
4324 }
4325 }
4326
4327 impl Configuration {
4328 #[inline(always)]
4329 fn max_ordinal_present(&self) -> u64 {
4330 if let Some(_) = self.device_specific {
4331 return 5;
4332 }
4333 if let Some(_) = self.unique_id {
4334 return 4;
4335 }
4336 if let Some(_) = self.product_name {
4337 return 3;
4338 }
4339 if let Some(_) = self.manufacturer_name {
4340 return 2;
4341 }
4342 if let Some(_) = self.device_name {
4343 return 1;
4344 }
4345 0
4346 }
4347 }
4348
4349 impl fidl::encoding::ValueTypeMarker for Configuration {
4350 type Borrowed<'a> = &'a Self;
4351 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4352 value
4353 }
4354 }
4355
4356 unsafe impl fidl::encoding::TypeMarker for Configuration {
4357 type Owned = Self;
4358
4359 #[inline(always)]
4360 fn inline_align(_context: fidl::encoding::Context) -> usize {
4361 8
4362 }
4363
4364 #[inline(always)]
4365 fn inline_size(_context: fidl::encoding::Context) -> usize {
4366 16
4367 }
4368 }
4369
4370 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Configuration, D>
4371 for &Configuration
4372 {
4373 unsafe fn encode(
4374 self,
4375 encoder: &mut fidl::encoding::Encoder<'_, D>,
4376 offset: usize,
4377 mut depth: fidl::encoding::Depth,
4378 ) -> fidl::Result<()> {
4379 encoder.debug_check_bounds::<Configuration>(offset);
4380 let max_ordinal: u64 = self.max_ordinal_present();
4382 encoder.write_num(max_ordinal, offset);
4383 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4384 if max_ordinal == 0 {
4386 return Ok(());
4387 }
4388 depth.increment()?;
4389 let envelope_size = 8;
4390 let bytes_len = max_ordinal as usize * envelope_size;
4391 #[allow(unused_variables)]
4392 let offset = encoder.out_of_line_offset(bytes_len);
4393 let mut _prev_end_offset: usize = 0;
4394 if 1 > max_ordinal {
4395 return Ok(());
4396 }
4397
4398 let cur_offset: usize = (1 - 1) * envelope_size;
4401
4402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4404
4405 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
4410 self.device_name.as_ref().map(
4411 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
4412 ),
4413 encoder,
4414 offset + cur_offset,
4415 depth,
4416 )?;
4417
4418 _prev_end_offset = cur_offset + envelope_size;
4419 if 2 > max_ordinal {
4420 return Ok(());
4421 }
4422
4423 let cur_offset: usize = (2 - 1) * envelope_size;
4426
4427 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4429
4430 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
4435 self.manufacturer_name.as_ref().map(
4436 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
4437 ),
4438 encoder,
4439 offset + cur_offset,
4440 depth,
4441 )?;
4442
4443 _prev_end_offset = cur_offset + envelope_size;
4444 if 3 > max_ordinal {
4445 return Ok(());
4446 }
4447
4448 let cur_offset: usize = (3 - 1) * envelope_size;
4451
4452 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4454
4455 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
4460 self.product_name.as_ref().map(
4461 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
4462 ),
4463 encoder,
4464 offset + cur_offset,
4465 depth,
4466 )?;
4467
4468 _prev_end_offset = cur_offset + envelope_size;
4469 if 4 > max_ordinal {
4470 return Ok(());
4471 }
4472
4473 let cur_offset: usize = (4 - 1) * envelope_size;
4476
4477 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4479
4480 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 16>, D>(
4485 self.unique_id.as_ref().map(
4486 <fidl::encoding::Array<u8, 16> as fidl::encoding::ValueTypeMarker>::borrow,
4487 ),
4488 encoder,
4489 offset + cur_offset,
4490 depth,
4491 )?;
4492
4493 _prev_end_offset = cur_offset + envelope_size;
4494 if 5 > max_ordinal {
4495 return Ok(());
4496 }
4497
4498 let cur_offset: usize = (5 - 1) * envelope_size;
4501
4502 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4504
4505 fidl::encoding::encode_in_envelope_optional::<DeviceSpecific, D>(
4510 self.device_specific
4511 .as_ref()
4512 .map(<DeviceSpecific as fidl::encoding::ValueTypeMarker>::borrow),
4513 encoder,
4514 offset + cur_offset,
4515 depth,
4516 )?;
4517
4518 _prev_end_offset = cur_offset + envelope_size;
4519
4520 Ok(())
4521 }
4522 }
4523
4524 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Configuration {
4525 #[inline(always)]
4526 fn new_empty() -> Self {
4527 Self::default()
4528 }
4529
4530 unsafe fn decode(
4531 &mut self,
4532 decoder: &mut fidl::encoding::Decoder<'_, D>,
4533 offset: usize,
4534 mut depth: fidl::encoding::Depth,
4535 ) -> fidl::Result<()> {
4536 decoder.debug_check_bounds::<Self>(offset);
4537 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4538 None => return Err(fidl::Error::NotNullable),
4539 Some(len) => len,
4540 };
4541 if len == 0 {
4543 return Ok(());
4544 };
4545 depth.increment()?;
4546 let envelope_size = 8;
4547 let bytes_len = len * envelope_size;
4548 let offset = decoder.out_of_line_offset(bytes_len)?;
4549 let mut _next_ordinal_to_read = 0;
4551 let mut next_offset = offset;
4552 let end_offset = offset + bytes_len;
4553 _next_ordinal_to_read += 1;
4554 if next_offset >= end_offset {
4555 return Ok(());
4556 }
4557
4558 while _next_ordinal_to_read < 1 {
4560 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4561 _next_ordinal_to_read += 1;
4562 next_offset += envelope_size;
4563 }
4564
4565 let next_out_of_line = decoder.next_out_of_line();
4566 let handles_before = decoder.remaining_handles();
4567 if let Some((inlined, num_bytes, num_handles)) =
4568 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4569 {
4570 let member_inline_size =
4571 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
4572 decoder.context,
4573 );
4574 if inlined != (member_inline_size <= 4) {
4575 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4576 }
4577 let inner_offset;
4578 let mut inner_depth = depth.clone();
4579 if inlined {
4580 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4581 inner_offset = next_offset;
4582 } else {
4583 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4584 inner_depth.increment()?;
4585 }
4586 let val_ref = self
4587 .device_name
4588 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
4589 fidl::decode!(
4590 fidl::encoding::BoundedString<256>,
4591 D,
4592 val_ref,
4593 decoder,
4594 inner_offset,
4595 inner_depth
4596 )?;
4597 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4598 {
4599 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4600 }
4601 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4602 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4603 }
4604 }
4605
4606 next_offset += envelope_size;
4607 _next_ordinal_to_read += 1;
4608 if next_offset >= end_offset {
4609 return Ok(());
4610 }
4611
4612 while _next_ordinal_to_read < 2 {
4614 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4615 _next_ordinal_to_read += 1;
4616 next_offset += envelope_size;
4617 }
4618
4619 let next_out_of_line = decoder.next_out_of_line();
4620 let handles_before = decoder.remaining_handles();
4621 if let Some((inlined, num_bytes, num_handles)) =
4622 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4623 {
4624 let member_inline_size =
4625 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
4626 decoder.context,
4627 );
4628 if inlined != (member_inline_size <= 4) {
4629 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4630 }
4631 let inner_offset;
4632 let mut inner_depth = depth.clone();
4633 if inlined {
4634 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4635 inner_offset = next_offset;
4636 } else {
4637 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4638 inner_depth.increment()?;
4639 }
4640 let val_ref = self
4641 .manufacturer_name
4642 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
4643 fidl::decode!(
4644 fidl::encoding::BoundedString<256>,
4645 D,
4646 val_ref,
4647 decoder,
4648 inner_offset,
4649 inner_depth
4650 )?;
4651 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4652 {
4653 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4654 }
4655 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4656 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4657 }
4658 }
4659
4660 next_offset += envelope_size;
4661 _next_ordinal_to_read += 1;
4662 if next_offset >= end_offset {
4663 return Ok(());
4664 }
4665
4666 while _next_ordinal_to_read < 3 {
4668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4669 _next_ordinal_to_read += 1;
4670 next_offset += envelope_size;
4671 }
4672
4673 let next_out_of_line = decoder.next_out_of_line();
4674 let handles_before = decoder.remaining_handles();
4675 if let Some((inlined, num_bytes, num_handles)) =
4676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4677 {
4678 let member_inline_size =
4679 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
4680 decoder.context,
4681 );
4682 if inlined != (member_inline_size <= 4) {
4683 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4684 }
4685 let inner_offset;
4686 let mut inner_depth = depth.clone();
4687 if inlined {
4688 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4689 inner_offset = next_offset;
4690 } else {
4691 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4692 inner_depth.increment()?;
4693 }
4694 let val_ref = self
4695 .product_name
4696 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
4697 fidl::decode!(
4698 fidl::encoding::BoundedString<256>,
4699 D,
4700 val_ref,
4701 decoder,
4702 inner_offset,
4703 inner_depth
4704 )?;
4705 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4706 {
4707 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4708 }
4709 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4710 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4711 }
4712 }
4713
4714 next_offset += envelope_size;
4715 _next_ordinal_to_read += 1;
4716 if next_offset >= end_offset {
4717 return Ok(());
4718 }
4719
4720 while _next_ordinal_to_read < 4 {
4722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4723 _next_ordinal_to_read += 1;
4724 next_offset += envelope_size;
4725 }
4726
4727 let next_out_of_line = decoder.next_out_of_line();
4728 let handles_before = decoder.remaining_handles();
4729 if let Some((inlined, num_bytes, num_handles)) =
4730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4731 {
4732 let member_inline_size =
4733 <fidl::encoding::Array<u8, 16> as fidl::encoding::TypeMarker>::inline_size(
4734 decoder.context,
4735 );
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
4749 .unique_id
4750 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 16>, D));
4751 fidl::decode!(fidl::encoding::Array<u8, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
4752 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4753 {
4754 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4755 }
4756 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4757 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4758 }
4759 }
4760
4761 next_offset += envelope_size;
4762 _next_ordinal_to_read += 1;
4763 if next_offset >= end_offset {
4764 return Ok(());
4765 }
4766
4767 while _next_ordinal_to_read < 5 {
4769 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4770 _next_ordinal_to_read += 1;
4771 next_offset += envelope_size;
4772 }
4773
4774 let next_out_of_line = decoder.next_out_of_line();
4775 let handles_before = decoder.remaining_handles();
4776 if let Some((inlined, num_bytes, num_handles)) =
4777 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4778 {
4779 let member_inline_size =
4780 <DeviceSpecific as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4781 if inlined != (member_inline_size <= 4) {
4782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4783 }
4784 let inner_offset;
4785 let mut inner_depth = depth.clone();
4786 if inlined {
4787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4788 inner_offset = next_offset;
4789 } else {
4790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4791 inner_depth.increment()?;
4792 }
4793 let val_ref =
4794 self.device_specific.get_or_insert_with(|| fidl::new_empty!(DeviceSpecific, D));
4795 fidl::decode!(DeviceSpecific, D, val_ref, decoder, inner_offset, inner_depth)?;
4796 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4797 {
4798 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4799 }
4800 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4801 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4802 }
4803 }
4804
4805 next_offset += envelope_size;
4806
4807 while next_offset < end_offset {
4809 _next_ordinal_to_read += 1;
4810 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4811 next_offset += envelope_size;
4812 }
4813
4814 Ok(())
4815 }
4816 }
4817
4818 impl Dai {
4819 #[inline(always)]
4820 fn max_ordinal_present(&self) -> u64 {
4821 if let Some(_) = self.clock_properties {
4822 return 4;
4823 }
4824 if let Some(_) = self.dai_interconnect {
4825 return 3;
4826 }
4827 if let Some(_) = self.ring_buffer {
4828 return 2;
4829 }
4830 if let Some(_) = self.is_input {
4831 return 1;
4832 }
4833 0
4834 }
4835 }
4836
4837 impl fidl::encoding::ValueTypeMarker for Dai {
4838 type Borrowed<'a> = &'a Self;
4839 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4840 value
4841 }
4842 }
4843
4844 unsafe impl fidl::encoding::TypeMarker for Dai {
4845 type Owned = Self;
4846
4847 #[inline(always)]
4848 fn inline_align(_context: fidl::encoding::Context) -> usize {
4849 8
4850 }
4851
4852 #[inline(always)]
4853 fn inline_size(_context: fidl::encoding::Context) -> usize {
4854 16
4855 }
4856 }
4857
4858 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Dai, D> for &Dai {
4859 unsafe fn encode(
4860 self,
4861 encoder: &mut fidl::encoding::Encoder<'_, D>,
4862 offset: usize,
4863 mut depth: fidl::encoding::Depth,
4864 ) -> fidl::Result<()> {
4865 encoder.debug_check_bounds::<Dai>(offset);
4866 let max_ordinal: u64 = self.max_ordinal_present();
4868 encoder.write_num(max_ordinal, offset);
4869 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4870 if max_ordinal == 0 {
4872 return Ok(());
4873 }
4874 depth.increment()?;
4875 let envelope_size = 8;
4876 let bytes_len = max_ordinal as usize * envelope_size;
4877 #[allow(unused_variables)]
4878 let offset = encoder.out_of_line_offset(bytes_len);
4879 let mut _prev_end_offset: usize = 0;
4880 if 1 > max_ordinal {
4881 return Ok(());
4882 }
4883
4884 let cur_offset: usize = (1 - 1) * envelope_size;
4887
4888 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4890
4891 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4896 self.is_input.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4897 encoder,
4898 offset + cur_offset,
4899 depth,
4900 )?;
4901
4902 _prev_end_offset = cur_offset + envelope_size;
4903 if 2 > max_ordinal {
4904 return Ok(());
4905 }
4906
4907 let cur_offset: usize = (2 - 1) * envelope_size;
4910
4911 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4913
4914 fidl::encoding::encode_in_envelope_optional::<RingBuffer, D>(
4919 self.ring_buffer
4920 .as_ref()
4921 .map(<RingBuffer as fidl::encoding::ValueTypeMarker>::borrow),
4922 encoder,
4923 offset + cur_offset,
4924 depth,
4925 )?;
4926
4927 _prev_end_offset = cur_offset + envelope_size;
4928 if 3 > max_ordinal {
4929 return Ok(());
4930 }
4931
4932 let cur_offset: usize = (3 - 1) * envelope_size;
4935
4936 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4938
4939 fidl::encoding::encode_in_envelope_optional::<DaiInterconnect, D>(
4944 self.dai_interconnect
4945 .as_ref()
4946 .map(<DaiInterconnect as fidl::encoding::ValueTypeMarker>::borrow),
4947 encoder,
4948 offset + cur_offset,
4949 depth,
4950 )?;
4951
4952 _prev_end_offset = cur_offset + envelope_size;
4953 if 4 > max_ordinal {
4954 return Ok(());
4955 }
4956
4957 let cur_offset: usize = (4 - 1) * envelope_size;
4960
4961 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4963
4964 fidl::encoding::encode_in_envelope_optional::<ClockProperties, D>(
4969 self.clock_properties
4970 .as_ref()
4971 .map(<ClockProperties as fidl::encoding::ValueTypeMarker>::borrow),
4972 encoder,
4973 offset + cur_offset,
4974 depth,
4975 )?;
4976
4977 _prev_end_offset = cur_offset + envelope_size;
4978
4979 Ok(())
4980 }
4981 }
4982
4983 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Dai {
4984 #[inline(always)]
4985 fn new_empty() -> Self {
4986 Self::default()
4987 }
4988
4989 unsafe fn decode(
4990 &mut self,
4991 decoder: &mut fidl::encoding::Decoder<'_, D>,
4992 offset: usize,
4993 mut depth: fidl::encoding::Depth,
4994 ) -> fidl::Result<()> {
4995 decoder.debug_check_bounds::<Self>(offset);
4996 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4997 None => return Err(fidl::Error::NotNullable),
4998 Some(len) => len,
4999 };
5000 if len == 0 {
5002 return Ok(());
5003 };
5004 depth.increment()?;
5005 let envelope_size = 8;
5006 let bytes_len = len * envelope_size;
5007 let offset = decoder.out_of_line_offset(bytes_len)?;
5008 let mut _next_ordinal_to_read = 0;
5010 let mut next_offset = offset;
5011 let end_offset = offset + bytes_len;
5012 _next_ordinal_to_read += 1;
5013 if next_offset >= end_offset {
5014 return Ok(());
5015 }
5016
5017 while _next_ordinal_to_read < 1 {
5019 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5020 _next_ordinal_to_read += 1;
5021 next_offset += envelope_size;
5022 }
5023
5024 let next_out_of_line = decoder.next_out_of_line();
5025 let handles_before = decoder.remaining_handles();
5026 if let Some((inlined, num_bytes, num_handles)) =
5027 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5028 {
5029 let member_inline_size =
5030 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5031 if inlined != (member_inline_size <= 4) {
5032 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5033 }
5034 let inner_offset;
5035 let mut inner_depth = depth.clone();
5036 if inlined {
5037 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5038 inner_offset = next_offset;
5039 } else {
5040 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5041 inner_depth.increment()?;
5042 }
5043 let val_ref = self.is_input.get_or_insert_with(|| fidl::new_empty!(bool, D));
5044 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5045 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5046 {
5047 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5048 }
5049 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5050 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5051 }
5052 }
5053
5054 next_offset += envelope_size;
5055 _next_ordinal_to_read += 1;
5056 if next_offset >= end_offset {
5057 return Ok(());
5058 }
5059
5060 while _next_ordinal_to_read < 2 {
5062 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5063 _next_ordinal_to_read += 1;
5064 next_offset += envelope_size;
5065 }
5066
5067 let next_out_of_line = decoder.next_out_of_line();
5068 let handles_before = decoder.remaining_handles();
5069 if let Some((inlined, num_bytes, num_handles)) =
5070 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5071 {
5072 let member_inline_size =
5073 <RingBuffer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5074 if inlined != (member_inline_size <= 4) {
5075 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5076 }
5077 let inner_offset;
5078 let mut inner_depth = depth.clone();
5079 if inlined {
5080 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5081 inner_offset = next_offset;
5082 } else {
5083 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5084 inner_depth.increment()?;
5085 }
5086 let val_ref =
5087 self.ring_buffer.get_or_insert_with(|| fidl::new_empty!(RingBuffer, D));
5088 fidl::decode!(RingBuffer, D, val_ref, decoder, inner_offset, inner_depth)?;
5089 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5090 {
5091 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5092 }
5093 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5094 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5095 }
5096 }
5097
5098 next_offset += envelope_size;
5099 _next_ordinal_to_read += 1;
5100 if next_offset >= end_offset {
5101 return Ok(());
5102 }
5103
5104 while _next_ordinal_to_read < 3 {
5106 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5107 _next_ordinal_to_read += 1;
5108 next_offset += envelope_size;
5109 }
5110
5111 let next_out_of_line = decoder.next_out_of_line();
5112 let handles_before = decoder.remaining_handles();
5113 if let Some((inlined, num_bytes, num_handles)) =
5114 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5115 {
5116 let member_inline_size =
5117 <DaiInterconnect as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5118 if inlined != (member_inline_size <= 4) {
5119 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5120 }
5121 let inner_offset;
5122 let mut inner_depth = depth.clone();
5123 if inlined {
5124 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5125 inner_offset = next_offset;
5126 } else {
5127 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5128 inner_depth.increment()?;
5129 }
5130 let val_ref = self
5131 .dai_interconnect
5132 .get_or_insert_with(|| fidl::new_empty!(DaiInterconnect, D));
5133 fidl::decode!(DaiInterconnect, D, val_ref, decoder, inner_offset, inner_depth)?;
5134 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5135 {
5136 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5137 }
5138 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5139 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5140 }
5141 }
5142
5143 next_offset += envelope_size;
5144 _next_ordinal_to_read += 1;
5145 if next_offset >= end_offset {
5146 return Ok(());
5147 }
5148
5149 while _next_ordinal_to_read < 4 {
5151 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5152 _next_ordinal_to_read += 1;
5153 next_offset += envelope_size;
5154 }
5155
5156 let next_out_of_line = decoder.next_out_of_line();
5157 let handles_before = decoder.remaining_handles();
5158 if let Some((inlined, num_bytes, num_handles)) =
5159 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5160 {
5161 let member_inline_size =
5162 <ClockProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5163 if inlined != (member_inline_size <= 4) {
5164 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5165 }
5166 let inner_offset;
5167 let mut inner_depth = depth.clone();
5168 if inlined {
5169 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5170 inner_offset = next_offset;
5171 } else {
5172 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5173 inner_depth.increment()?;
5174 }
5175 let val_ref = self
5176 .clock_properties
5177 .get_or_insert_with(|| fidl::new_empty!(ClockProperties, D));
5178 fidl::decode!(ClockProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
5179 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5180 {
5181 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5182 }
5183 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5184 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5185 }
5186 }
5187
5188 next_offset += envelope_size;
5189
5190 while next_offset < end_offset {
5192 _next_ordinal_to_read += 1;
5193 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5194 next_offset += envelope_size;
5195 }
5196
5197 Ok(())
5198 }
5199 }
5200
5201 impl DaiInterconnect {
5202 #[inline(always)]
5203 fn max_ordinal_present(&self) -> u64 {
5204 if let Some(_) = self.dai_supported_formats {
5205 return 1;
5206 }
5207 0
5208 }
5209 }
5210
5211 impl fidl::encoding::ValueTypeMarker for DaiInterconnect {
5212 type Borrowed<'a> = &'a Self;
5213 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5214 value
5215 }
5216 }
5217
5218 unsafe impl fidl::encoding::TypeMarker for DaiInterconnect {
5219 type Owned = Self;
5220
5221 #[inline(always)]
5222 fn inline_align(_context: fidl::encoding::Context) -> usize {
5223 8
5224 }
5225
5226 #[inline(always)]
5227 fn inline_size(_context: fidl::encoding::Context) -> usize {
5228 16
5229 }
5230 }
5231
5232 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DaiInterconnect, D>
5233 for &DaiInterconnect
5234 {
5235 unsafe fn encode(
5236 self,
5237 encoder: &mut fidl::encoding::Encoder<'_, D>,
5238 offset: usize,
5239 mut depth: fidl::encoding::Depth,
5240 ) -> fidl::Result<()> {
5241 encoder.debug_check_bounds::<DaiInterconnect>(offset);
5242 let max_ordinal: u64 = self.max_ordinal_present();
5244 encoder.write_num(max_ordinal, offset);
5245 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5246 if max_ordinal == 0 {
5248 return Ok(());
5249 }
5250 depth.increment()?;
5251 let envelope_size = 8;
5252 let bytes_len = max_ordinal as usize * envelope_size;
5253 #[allow(unused_variables)]
5254 let offset = encoder.out_of_line_offset(bytes_len);
5255 let mut _prev_end_offset: usize = 0;
5256 if 1 > max_ordinal {
5257 return Ok(());
5258 }
5259
5260 let cur_offset: usize = (1 - 1) * envelope_size;
5263
5264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5266
5267 fidl::encoding::encode_in_envelope_optional::<
5272 fidl::encoding::Vector<
5273 fidl_fuchsia_hardware_audio__common::DaiSupportedFormats,
5274 64,
5275 >,
5276 D,
5277 >(
5278 self.dai_supported_formats.as_ref().map(
5279 <fidl::encoding::Vector<
5280 fidl_fuchsia_hardware_audio__common::DaiSupportedFormats,
5281 64,
5282 > as fidl::encoding::ValueTypeMarker>::borrow,
5283 ),
5284 encoder,
5285 offset + cur_offset,
5286 depth,
5287 )?;
5288
5289 _prev_end_offset = cur_offset + envelope_size;
5290
5291 Ok(())
5292 }
5293 }
5294
5295 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DaiInterconnect {
5296 #[inline(always)]
5297 fn new_empty() -> Self {
5298 Self::default()
5299 }
5300
5301 unsafe fn decode(
5302 &mut self,
5303 decoder: &mut fidl::encoding::Decoder<'_, D>,
5304 offset: usize,
5305 mut depth: fidl::encoding::Depth,
5306 ) -> fidl::Result<()> {
5307 decoder.debug_check_bounds::<Self>(offset);
5308 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5309 None => return Err(fidl::Error::NotNullable),
5310 Some(len) => len,
5311 };
5312 if len == 0 {
5314 return Ok(());
5315 };
5316 depth.increment()?;
5317 let envelope_size = 8;
5318 let bytes_len = len * envelope_size;
5319 let offset = decoder.out_of_line_offset(bytes_len)?;
5320 let mut _next_ordinal_to_read = 0;
5322 let mut next_offset = offset;
5323 let end_offset = offset + bytes_len;
5324 _next_ordinal_to_read += 1;
5325 if next_offset >= end_offset {
5326 return Ok(());
5327 }
5328
5329 while _next_ordinal_to_read < 1 {
5331 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5332 _next_ordinal_to_read += 1;
5333 next_offset += envelope_size;
5334 }
5335
5336 let next_out_of_line = decoder.next_out_of_line();
5337 let handles_before = decoder.remaining_handles();
5338 if let Some((inlined, num_bytes, num_handles)) =
5339 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5340 {
5341 let member_inline_size = <fidl::encoding::Vector<
5342 fidl_fuchsia_hardware_audio__common::DaiSupportedFormats,
5343 64,
5344 > as fidl::encoding::TypeMarker>::inline_size(
5345 decoder.context
5346 );
5347 if inlined != (member_inline_size <= 4) {
5348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5349 }
5350 let inner_offset;
5351 let mut inner_depth = depth.clone();
5352 if inlined {
5353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5354 inner_offset = next_offset;
5355 } else {
5356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5357 inner_depth.increment()?;
5358 }
5359 let val_ref =
5360 self.dai_supported_formats.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio__common::DaiSupportedFormats, 64>, D));
5361 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_hardware_audio__common::DaiSupportedFormats, 64>, 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
5373 while next_offset < end_offset {
5375 _next_ordinal_to_read += 1;
5376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5377 next_offset += envelope_size;
5378 }
5379
5380 Ok(())
5381 }
5382 }
5383
5384 impl Direction {
5385 #[inline(always)]
5386 fn max_ordinal_present(&self) -> u64 {
5387 if let Some(_) = self.is_input {
5388 return 1;
5389 }
5390 0
5391 }
5392 }
5393
5394 impl fidl::encoding::ValueTypeMarker for Direction {
5395 type Borrowed<'a> = &'a Self;
5396 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5397 value
5398 }
5399 }
5400
5401 unsafe impl fidl::encoding::TypeMarker for Direction {
5402 type Owned = Self;
5403
5404 #[inline(always)]
5405 fn inline_align(_context: fidl::encoding::Context) -> usize {
5406 8
5407 }
5408
5409 #[inline(always)]
5410 fn inline_size(_context: fidl::encoding::Context) -> usize {
5411 16
5412 }
5413 }
5414
5415 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Direction, D>
5416 for &Direction
5417 {
5418 unsafe fn encode(
5419 self,
5420 encoder: &mut fidl::encoding::Encoder<'_, D>,
5421 offset: usize,
5422 mut depth: fidl::encoding::Depth,
5423 ) -> fidl::Result<()> {
5424 encoder.debug_check_bounds::<Direction>(offset);
5425 let max_ordinal: u64 = self.max_ordinal_present();
5427 encoder.write_num(max_ordinal, offset);
5428 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5429 if max_ordinal == 0 {
5431 return Ok(());
5432 }
5433 depth.increment()?;
5434 let envelope_size = 8;
5435 let bytes_len = max_ordinal as usize * envelope_size;
5436 #[allow(unused_variables)]
5437 let offset = encoder.out_of_line_offset(bytes_len);
5438 let mut _prev_end_offset: usize = 0;
5439 if 1 > max_ordinal {
5440 return Ok(());
5441 }
5442
5443 let cur_offset: usize = (1 - 1) * envelope_size;
5446
5447 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5449
5450 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5455 self.is_input.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5456 encoder,
5457 offset + cur_offset,
5458 depth,
5459 )?;
5460
5461 _prev_end_offset = cur_offset + envelope_size;
5462
5463 Ok(())
5464 }
5465 }
5466
5467 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Direction {
5468 #[inline(always)]
5469 fn new_empty() -> Self {
5470 Self::default()
5471 }
5472
5473 unsafe fn decode(
5474 &mut self,
5475 decoder: &mut fidl::encoding::Decoder<'_, D>,
5476 offset: usize,
5477 mut depth: fidl::encoding::Depth,
5478 ) -> fidl::Result<()> {
5479 decoder.debug_check_bounds::<Self>(offset);
5480 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5481 None => return Err(fidl::Error::NotNullable),
5482 Some(len) => len,
5483 };
5484 if len == 0 {
5486 return Ok(());
5487 };
5488 depth.increment()?;
5489 let envelope_size = 8;
5490 let bytes_len = len * envelope_size;
5491 let offset = decoder.out_of_line_offset(bytes_len)?;
5492 let mut _next_ordinal_to_read = 0;
5494 let mut next_offset = offset;
5495 let end_offset = offset + bytes_len;
5496 _next_ordinal_to_read += 1;
5497 if next_offset >= end_offset {
5498 return Ok(());
5499 }
5500
5501 while _next_ordinal_to_read < 1 {
5503 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5504 _next_ordinal_to_read += 1;
5505 next_offset += envelope_size;
5506 }
5507
5508 let next_out_of_line = decoder.next_out_of_line();
5509 let handles_before = decoder.remaining_handles();
5510 if let Some((inlined, num_bytes, num_handles)) =
5511 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5512 {
5513 let member_inline_size =
5514 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5515 if inlined != (member_inline_size <= 4) {
5516 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5517 }
5518 let inner_offset;
5519 let mut inner_depth = depth.clone();
5520 if inlined {
5521 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5522 inner_offset = next_offset;
5523 } else {
5524 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5525 inner_depth.increment()?;
5526 }
5527 let val_ref = self.is_input.get_or_insert_with(|| fidl::new_empty!(bool, D));
5528 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5530 {
5531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5532 }
5533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5535 }
5536 }
5537
5538 next_offset += envelope_size;
5539
5540 while next_offset < end_offset {
5542 _next_ordinal_to_read += 1;
5543 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5544 next_offset += envelope_size;
5545 }
5546
5547 Ok(())
5548 }
5549 }
5550
5551 impl GainProperties {
5552 #[inline(always)]
5553 fn max_ordinal_present(&self) -> u64 {
5554 if let Some(_) = self.can_agc {
5555 return 6;
5556 }
5557 if let Some(_) = self.can_mute {
5558 return 5;
5559 }
5560 if let Some(_) = self.gain_step_db {
5561 return 4;
5562 }
5563 if let Some(_) = self.max_gain_db {
5564 return 3;
5565 }
5566 if let Some(_) = self.min_gain_db {
5567 return 2;
5568 }
5569 if let Some(_) = self.gain_state {
5570 return 1;
5571 }
5572 0
5573 }
5574 }
5575
5576 impl fidl::encoding::ValueTypeMarker for GainProperties {
5577 type Borrowed<'a> = &'a Self;
5578 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5579 value
5580 }
5581 }
5582
5583 unsafe impl fidl::encoding::TypeMarker for GainProperties {
5584 type Owned = Self;
5585
5586 #[inline(always)]
5587 fn inline_align(_context: fidl::encoding::Context) -> usize {
5588 8
5589 }
5590
5591 #[inline(always)]
5592 fn inline_size(_context: fidl::encoding::Context) -> usize {
5593 16
5594 }
5595 }
5596
5597 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<GainProperties, D>
5598 for &GainProperties
5599 {
5600 unsafe fn encode(
5601 self,
5602 encoder: &mut fidl::encoding::Encoder<'_, D>,
5603 offset: usize,
5604 mut depth: fidl::encoding::Depth,
5605 ) -> fidl::Result<()> {
5606 encoder.debug_check_bounds::<GainProperties>(offset);
5607 let max_ordinal: u64 = self.max_ordinal_present();
5609 encoder.write_num(max_ordinal, offset);
5610 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5611 if max_ordinal == 0 {
5613 return Ok(());
5614 }
5615 depth.increment()?;
5616 let envelope_size = 8;
5617 let bytes_len = max_ordinal as usize * envelope_size;
5618 #[allow(unused_variables)]
5619 let offset = encoder.out_of_line_offset(bytes_len);
5620 let mut _prev_end_offset: usize = 0;
5621 if 1 > max_ordinal {
5622 return Ok(());
5623 }
5624
5625 let cur_offset: usize = (1 - 1) * envelope_size;
5628
5629 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5631
5632 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::GainState, D>(
5637 self.gain_state.as_ref().map(<fidl_fuchsia_hardware_audio__common::GainState as fidl::encoding::ValueTypeMarker>::borrow),
5638 encoder, offset + cur_offset, depth
5639 )?;
5640
5641 _prev_end_offset = cur_offset + envelope_size;
5642 if 2 > max_ordinal {
5643 return Ok(());
5644 }
5645
5646 let cur_offset: usize = (2 - 1) * envelope_size;
5649
5650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5652
5653 fidl::encoding::encode_in_envelope_optional::<f32, D>(
5658 self.min_gain_db.as_ref().map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
5659 encoder,
5660 offset + cur_offset,
5661 depth,
5662 )?;
5663
5664 _prev_end_offset = cur_offset + envelope_size;
5665 if 3 > max_ordinal {
5666 return Ok(());
5667 }
5668
5669 let cur_offset: usize = (3 - 1) * envelope_size;
5672
5673 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5675
5676 fidl::encoding::encode_in_envelope_optional::<f32, D>(
5681 self.max_gain_db.as_ref().map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
5682 encoder,
5683 offset + cur_offset,
5684 depth,
5685 )?;
5686
5687 _prev_end_offset = cur_offset + envelope_size;
5688 if 4 > max_ordinal {
5689 return Ok(());
5690 }
5691
5692 let cur_offset: usize = (4 - 1) * envelope_size;
5695
5696 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5698
5699 fidl::encoding::encode_in_envelope_optional::<f32, D>(
5704 self.gain_step_db.as_ref().map(<f32 as fidl::encoding::ValueTypeMarker>::borrow),
5705 encoder,
5706 offset + cur_offset,
5707 depth,
5708 )?;
5709
5710 _prev_end_offset = cur_offset + envelope_size;
5711 if 5 > max_ordinal {
5712 return Ok(());
5713 }
5714
5715 let cur_offset: usize = (5 - 1) * envelope_size;
5718
5719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5721
5722 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5727 self.can_mute.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5728 encoder,
5729 offset + cur_offset,
5730 depth,
5731 )?;
5732
5733 _prev_end_offset = cur_offset + envelope_size;
5734 if 6 > max_ordinal {
5735 return Ok(());
5736 }
5737
5738 let cur_offset: usize = (6 - 1) * envelope_size;
5741
5742 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5744
5745 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5750 self.can_agc.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5751 encoder,
5752 offset + cur_offset,
5753 depth,
5754 )?;
5755
5756 _prev_end_offset = cur_offset + envelope_size;
5757
5758 Ok(())
5759 }
5760 }
5761
5762 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GainProperties {
5763 #[inline(always)]
5764 fn new_empty() -> Self {
5765 Self::default()
5766 }
5767
5768 unsafe fn decode(
5769 &mut self,
5770 decoder: &mut fidl::encoding::Decoder<'_, D>,
5771 offset: usize,
5772 mut depth: fidl::encoding::Depth,
5773 ) -> fidl::Result<()> {
5774 decoder.debug_check_bounds::<Self>(offset);
5775 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5776 None => return Err(fidl::Error::NotNullable),
5777 Some(len) => len,
5778 };
5779 if len == 0 {
5781 return Ok(());
5782 };
5783 depth.increment()?;
5784 let envelope_size = 8;
5785 let bytes_len = len * envelope_size;
5786 let offset = decoder.out_of_line_offset(bytes_len)?;
5787 let mut _next_ordinal_to_read = 0;
5789 let mut next_offset = offset;
5790 let end_offset = offset + bytes_len;
5791 _next_ordinal_to_read += 1;
5792 if next_offset >= end_offset {
5793 return Ok(());
5794 }
5795
5796 while _next_ordinal_to_read < 1 {
5798 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5799 _next_ordinal_to_read += 1;
5800 next_offset += envelope_size;
5801 }
5802
5803 let next_out_of_line = decoder.next_out_of_line();
5804 let handles_before = decoder.remaining_handles();
5805 if let Some((inlined, num_bytes, num_handles)) =
5806 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5807 {
5808 let member_inline_size = <fidl_fuchsia_hardware_audio__common::GainState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5809 if inlined != (member_inline_size <= 4) {
5810 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5811 }
5812 let inner_offset;
5813 let mut inner_depth = depth.clone();
5814 if inlined {
5815 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5816 inner_offset = next_offset;
5817 } else {
5818 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5819 inner_depth.increment()?;
5820 }
5821 let val_ref = self.gain_state.get_or_insert_with(|| {
5822 fidl::new_empty!(fidl_fuchsia_hardware_audio__common::GainState, D)
5823 });
5824 fidl::decode!(
5825 fidl_fuchsia_hardware_audio__common::GainState,
5826 D,
5827 val_ref,
5828 decoder,
5829 inner_offset,
5830 inner_depth
5831 )?;
5832 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5833 {
5834 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5835 }
5836 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5837 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5838 }
5839 }
5840
5841 next_offset += envelope_size;
5842 _next_ordinal_to_read += 1;
5843 if next_offset >= end_offset {
5844 return Ok(());
5845 }
5846
5847 while _next_ordinal_to_read < 2 {
5849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5850 _next_ordinal_to_read += 1;
5851 next_offset += envelope_size;
5852 }
5853
5854 let next_out_of_line = decoder.next_out_of_line();
5855 let handles_before = decoder.remaining_handles();
5856 if let Some((inlined, num_bytes, num_handles)) =
5857 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5858 {
5859 let member_inline_size =
5860 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5861 if inlined != (member_inline_size <= 4) {
5862 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5863 }
5864 let inner_offset;
5865 let mut inner_depth = depth.clone();
5866 if inlined {
5867 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5868 inner_offset = next_offset;
5869 } else {
5870 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5871 inner_depth.increment()?;
5872 }
5873 let val_ref = self.min_gain_db.get_or_insert_with(|| fidl::new_empty!(f32, D));
5874 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
5875 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5876 {
5877 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5878 }
5879 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5880 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5881 }
5882 }
5883
5884 next_offset += envelope_size;
5885 _next_ordinal_to_read += 1;
5886 if next_offset >= end_offset {
5887 return Ok(());
5888 }
5889
5890 while _next_ordinal_to_read < 3 {
5892 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5893 _next_ordinal_to_read += 1;
5894 next_offset += envelope_size;
5895 }
5896
5897 let next_out_of_line = decoder.next_out_of_line();
5898 let handles_before = decoder.remaining_handles();
5899 if let Some((inlined, num_bytes, num_handles)) =
5900 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5901 {
5902 let member_inline_size =
5903 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5904 if inlined != (member_inline_size <= 4) {
5905 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5906 }
5907 let inner_offset;
5908 let mut inner_depth = depth.clone();
5909 if inlined {
5910 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5911 inner_offset = next_offset;
5912 } else {
5913 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5914 inner_depth.increment()?;
5915 }
5916 let val_ref = self.max_gain_db.get_or_insert_with(|| fidl::new_empty!(f32, D));
5917 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
5918 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5919 {
5920 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5921 }
5922 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5923 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5924 }
5925 }
5926
5927 next_offset += envelope_size;
5928 _next_ordinal_to_read += 1;
5929 if next_offset >= end_offset {
5930 return Ok(());
5931 }
5932
5933 while _next_ordinal_to_read < 4 {
5935 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5936 _next_ordinal_to_read += 1;
5937 next_offset += envelope_size;
5938 }
5939
5940 let next_out_of_line = decoder.next_out_of_line();
5941 let handles_before = decoder.remaining_handles();
5942 if let Some((inlined, num_bytes, num_handles)) =
5943 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5944 {
5945 let member_inline_size =
5946 <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5947 if inlined != (member_inline_size <= 4) {
5948 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5949 }
5950 let inner_offset;
5951 let mut inner_depth = depth.clone();
5952 if inlined {
5953 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5954 inner_offset = next_offset;
5955 } else {
5956 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5957 inner_depth.increment()?;
5958 }
5959 let val_ref = self.gain_step_db.get_or_insert_with(|| fidl::new_empty!(f32, D));
5960 fidl::decode!(f32, D, val_ref, decoder, inner_offset, inner_depth)?;
5961 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5962 {
5963 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5964 }
5965 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5966 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5967 }
5968 }
5969
5970 next_offset += envelope_size;
5971 _next_ordinal_to_read += 1;
5972 if next_offset >= end_offset {
5973 return Ok(());
5974 }
5975
5976 while _next_ordinal_to_read < 5 {
5978 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5979 _next_ordinal_to_read += 1;
5980 next_offset += envelope_size;
5981 }
5982
5983 let next_out_of_line = decoder.next_out_of_line();
5984 let handles_before = decoder.remaining_handles();
5985 if let Some((inlined, num_bytes, num_handles)) =
5986 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5987 {
5988 let member_inline_size =
5989 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5990 if inlined != (member_inline_size <= 4) {
5991 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5992 }
5993 let inner_offset;
5994 let mut inner_depth = depth.clone();
5995 if inlined {
5996 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5997 inner_offset = next_offset;
5998 } else {
5999 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6000 inner_depth.increment()?;
6001 }
6002 let val_ref = self.can_mute.get_or_insert_with(|| fidl::new_empty!(bool, D));
6003 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6004 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6005 {
6006 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6007 }
6008 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6009 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6010 }
6011 }
6012
6013 next_offset += envelope_size;
6014 _next_ordinal_to_read += 1;
6015 if next_offset >= end_offset {
6016 return Ok(());
6017 }
6018
6019 while _next_ordinal_to_read < 6 {
6021 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6022 _next_ordinal_to_read += 1;
6023 next_offset += envelope_size;
6024 }
6025
6026 let next_out_of_line = decoder.next_out_of_line();
6027 let handles_before = decoder.remaining_handles();
6028 if let Some((inlined, num_bytes, num_handles)) =
6029 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6030 {
6031 let member_inline_size =
6032 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6033 if inlined != (member_inline_size <= 4) {
6034 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6035 }
6036 let inner_offset;
6037 let mut inner_depth = depth.clone();
6038 if inlined {
6039 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6040 inner_offset = next_offset;
6041 } else {
6042 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6043 inner_depth.increment()?;
6044 }
6045 let val_ref = self.can_agc.get_or_insert_with(|| fidl::new_empty!(bool, D));
6046 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6047 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6048 {
6049 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6050 }
6051 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6052 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6053 }
6054 }
6055
6056 next_offset += envelope_size;
6057
6058 while next_offset < end_offset {
6060 _next_ordinal_to_read += 1;
6061 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6062 next_offset += envelope_size;
6063 }
6064
6065 Ok(())
6066 }
6067 }
6068
6069 impl PacketStream {
6070 #[inline(always)]
6071 fn max_ordinal_present(&self) -> u64 {
6072 if let Some(_) = self.needs_cache_flush_or_invalidate {
6073 return 2;
6074 }
6075 if let Some(_) = self.supported_buffer_types {
6076 return 1;
6077 }
6078 0
6079 }
6080 }
6081
6082 impl fidl::encoding::ValueTypeMarker for PacketStream {
6083 type Borrowed<'a> = &'a Self;
6084 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6085 value
6086 }
6087 }
6088
6089 unsafe impl fidl::encoding::TypeMarker for PacketStream {
6090 type Owned = Self;
6091
6092 #[inline(always)]
6093 fn inline_align(_context: fidl::encoding::Context) -> usize {
6094 8
6095 }
6096
6097 #[inline(always)]
6098 fn inline_size(_context: fidl::encoding::Context) -> usize {
6099 16
6100 }
6101 }
6102
6103 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PacketStream, D>
6104 for &PacketStream
6105 {
6106 unsafe fn encode(
6107 self,
6108 encoder: &mut fidl::encoding::Encoder<'_, D>,
6109 offset: usize,
6110 mut depth: fidl::encoding::Depth,
6111 ) -> fidl::Result<()> {
6112 encoder.debug_check_bounds::<PacketStream>(offset);
6113 let max_ordinal: u64 = self.max_ordinal_present();
6115 encoder.write_num(max_ordinal, offset);
6116 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6117 if max_ordinal == 0 {
6119 return Ok(());
6120 }
6121 depth.increment()?;
6122 let envelope_size = 8;
6123 let bytes_len = max_ordinal as usize * envelope_size;
6124 #[allow(unused_variables)]
6125 let offset = encoder.out_of_line_offset(bytes_len);
6126 let mut _prev_end_offset: usize = 0;
6127 if 1 > max_ordinal {
6128 return Ok(());
6129 }
6130
6131 let cur_offset: usize = (1 - 1) * envelope_size;
6134
6135 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6137
6138 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::BufferType, D>(
6143 self.supported_buffer_types.as_ref().map(<fidl_fuchsia_hardware_audio__common::BufferType as fidl::encoding::ValueTypeMarker>::borrow),
6144 encoder, offset + cur_offset, depth
6145 )?;
6146
6147 _prev_end_offset = cur_offset + envelope_size;
6148 if 2 > max_ordinal {
6149 return Ok(());
6150 }
6151
6152 let cur_offset: usize = (2 - 1) * envelope_size;
6155
6156 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6158
6159 fidl::encoding::encode_in_envelope_optional::<bool, D>(
6164 self.needs_cache_flush_or_invalidate
6165 .as_ref()
6166 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
6167 encoder,
6168 offset + cur_offset,
6169 depth,
6170 )?;
6171
6172 _prev_end_offset = cur_offset + envelope_size;
6173
6174 Ok(())
6175 }
6176 }
6177
6178 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PacketStream {
6179 #[inline(always)]
6180 fn new_empty() -> Self {
6181 Self::default()
6182 }
6183
6184 unsafe fn decode(
6185 &mut self,
6186 decoder: &mut fidl::encoding::Decoder<'_, D>,
6187 offset: usize,
6188 mut depth: fidl::encoding::Depth,
6189 ) -> fidl::Result<()> {
6190 decoder.debug_check_bounds::<Self>(offset);
6191 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6192 None => return Err(fidl::Error::NotNullable),
6193 Some(len) => len,
6194 };
6195 if len == 0 {
6197 return Ok(());
6198 };
6199 depth.increment()?;
6200 let envelope_size = 8;
6201 let bytes_len = len * envelope_size;
6202 let offset = decoder.out_of_line_offset(bytes_len)?;
6203 let mut _next_ordinal_to_read = 0;
6205 let mut next_offset = offset;
6206 let end_offset = offset + bytes_len;
6207 _next_ordinal_to_read += 1;
6208 if next_offset >= end_offset {
6209 return Ok(());
6210 }
6211
6212 while _next_ordinal_to_read < 1 {
6214 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6215 _next_ordinal_to_read += 1;
6216 next_offset += envelope_size;
6217 }
6218
6219 let next_out_of_line = decoder.next_out_of_line();
6220 let handles_before = decoder.remaining_handles();
6221 if let Some((inlined, num_bytes, num_handles)) =
6222 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6223 {
6224 let member_inline_size = <fidl_fuchsia_hardware_audio__common::BufferType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6225 if inlined != (member_inline_size <= 4) {
6226 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6227 }
6228 let inner_offset;
6229 let mut inner_depth = depth.clone();
6230 if inlined {
6231 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6232 inner_offset = next_offset;
6233 } else {
6234 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6235 inner_depth.increment()?;
6236 }
6237 let val_ref = self.supported_buffer_types.get_or_insert_with(|| {
6238 fidl::new_empty!(fidl_fuchsia_hardware_audio__common::BufferType, D)
6239 });
6240 fidl::decode!(
6241 fidl_fuchsia_hardware_audio__common::BufferType,
6242 D,
6243 val_ref,
6244 decoder,
6245 inner_offset,
6246 inner_depth
6247 )?;
6248 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6249 {
6250 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6251 }
6252 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6253 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6254 }
6255 }
6256
6257 next_offset += envelope_size;
6258 _next_ordinal_to_read += 1;
6259 if next_offset >= end_offset {
6260 return Ok(());
6261 }
6262
6263 while _next_ordinal_to_read < 2 {
6265 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6266 _next_ordinal_to_read += 1;
6267 next_offset += envelope_size;
6268 }
6269
6270 let next_out_of_line = decoder.next_out_of_line();
6271 let handles_before = decoder.remaining_handles();
6272 if let Some((inlined, num_bytes, num_handles)) =
6273 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6274 {
6275 let member_inline_size =
6276 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6277 if inlined != (member_inline_size <= 4) {
6278 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6279 }
6280 let inner_offset;
6281 let mut inner_depth = depth.clone();
6282 if inlined {
6283 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6284 inner_offset = next_offset;
6285 } else {
6286 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6287 inner_depth.increment()?;
6288 }
6289 let val_ref = self
6290 .needs_cache_flush_or_invalidate
6291 .get_or_insert_with(|| fidl::new_empty!(bool, D));
6292 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6293 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6294 {
6295 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6296 }
6297 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6298 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6299 }
6300 }
6301
6302 next_offset += envelope_size;
6303
6304 while next_offset < end_offset {
6306 _next_ordinal_to_read += 1;
6307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6308 next_offset += envelope_size;
6309 }
6310
6311 Ok(())
6312 }
6313 }
6314
6315 impl PlugProperties {
6316 #[inline(always)]
6317 fn max_ordinal_present(&self) -> u64 {
6318 if let Some(_) = self.plug_detect_capabilities {
6319 return 2;
6320 }
6321 if let Some(_) = self.plug_state {
6322 return 1;
6323 }
6324 0
6325 }
6326 }
6327
6328 impl fidl::encoding::ValueTypeMarker for PlugProperties {
6329 type Borrowed<'a> = &'a Self;
6330 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6331 value
6332 }
6333 }
6334
6335 unsafe impl fidl::encoding::TypeMarker for PlugProperties {
6336 type Owned = Self;
6337
6338 #[inline(always)]
6339 fn inline_align(_context: fidl::encoding::Context) -> usize {
6340 8
6341 }
6342
6343 #[inline(always)]
6344 fn inline_size(_context: fidl::encoding::Context) -> usize {
6345 16
6346 }
6347 }
6348
6349 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PlugProperties, D>
6350 for &PlugProperties
6351 {
6352 unsafe fn encode(
6353 self,
6354 encoder: &mut fidl::encoding::Encoder<'_, D>,
6355 offset: usize,
6356 mut depth: fidl::encoding::Depth,
6357 ) -> fidl::Result<()> {
6358 encoder.debug_check_bounds::<PlugProperties>(offset);
6359 let max_ordinal: u64 = self.max_ordinal_present();
6361 encoder.write_num(max_ordinal, offset);
6362 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6363 if max_ordinal == 0 {
6365 return Ok(());
6366 }
6367 depth.increment()?;
6368 let envelope_size = 8;
6369 let bytes_len = max_ordinal as usize * envelope_size;
6370 #[allow(unused_variables)]
6371 let offset = encoder.out_of_line_offset(bytes_len);
6372 let mut _prev_end_offset: usize = 0;
6373 if 1 > max_ordinal {
6374 return Ok(());
6375 }
6376
6377 let cur_offset: usize = (1 - 1) * envelope_size;
6380
6381 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6383
6384 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::PlugState, D>(
6389 self.plug_state.as_ref().map(<fidl_fuchsia_hardware_audio__common::PlugState as fidl::encoding::ValueTypeMarker>::borrow),
6390 encoder, offset + cur_offset, depth
6391 )?;
6392
6393 _prev_end_offset = cur_offset + envelope_size;
6394 if 2 > max_ordinal {
6395 return Ok(());
6396 }
6397
6398 let cur_offset: usize = (2 - 1) * envelope_size;
6401
6402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6404
6405 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_audio__common::PlugDetectCapabilities, D>(
6410 self.plug_detect_capabilities.as_ref().map(<fidl_fuchsia_hardware_audio__common::PlugDetectCapabilities as fidl::encoding::ValueTypeMarker>::borrow),
6411 encoder, offset + cur_offset, depth
6412 )?;
6413
6414 _prev_end_offset = cur_offset + envelope_size;
6415
6416 Ok(())
6417 }
6418 }
6419
6420 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PlugProperties {
6421 #[inline(always)]
6422 fn new_empty() -> Self {
6423 Self::default()
6424 }
6425
6426 unsafe fn decode(
6427 &mut self,
6428 decoder: &mut fidl::encoding::Decoder<'_, D>,
6429 offset: usize,
6430 mut depth: fidl::encoding::Depth,
6431 ) -> fidl::Result<()> {
6432 decoder.debug_check_bounds::<Self>(offset);
6433 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6434 None => return Err(fidl::Error::NotNullable),
6435 Some(len) => len,
6436 };
6437 if len == 0 {
6439 return Ok(());
6440 };
6441 depth.increment()?;
6442 let envelope_size = 8;
6443 let bytes_len = len * envelope_size;
6444 let offset = decoder.out_of_line_offset(bytes_len)?;
6445 let mut _next_ordinal_to_read = 0;
6447 let mut next_offset = offset;
6448 let end_offset = offset + bytes_len;
6449 _next_ordinal_to_read += 1;
6450 if next_offset >= end_offset {
6451 return Ok(());
6452 }
6453
6454 while _next_ordinal_to_read < 1 {
6456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6457 _next_ordinal_to_read += 1;
6458 next_offset += envelope_size;
6459 }
6460
6461 let next_out_of_line = decoder.next_out_of_line();
6462 let handles_before = decoder.remaining_handles();
6463 if let Some((inlined, num_bytes, num_handles)) =
6464 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6465 {
6466 let member_inline_size = <fidl_fuchsia_hardware_audio__common::PlugState as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6467 if inlined != (member_inline_size <= 4) {
6468 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6469 }
6470 let inner_offset;
6471 let mut inner_depth = depth.clone();
6472 if inlined {
6473 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6474 inner_offset = next_offset;
6475 } else {
6476 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6477 inner_depth.increment()?;
6478 }
6479 let val_ref = self.plug_state.get_or_insert_with(|| {
6480 fidl::new_empty!(fidl_fuchsia_hardware_audio__common::PlugState, D)
6481 });
6482 fidl::decode!(
6483 fidl_fuchsia_hardware_audio__common::PlugState,
6484 D,
6485 val_ref,
6486 decoder,
6487 inner_offset,
6488 inner_depth
6489 )?;
6490 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6491 {
6492 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6493 }
6494 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6495 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6496 }
6497 }
6498
6499 next_offset += envelope_size;
6500 _next_ordinal_to_read += 1;
6501 if next_offset >= end_offset {
6502 return Ok(());
6503 }
6504
6505 while _next_ordinal_to_read < 2 {
6507 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6508 _next_ordinal_to_read += 1;
6509 next_offset += envelope_size;
6510 }
6511
6512 let next_out_of_line = decoder.next_out_of_line();
6513 let handles_before = decoder.remaining_handles();
6514 if let Some((inlined, num_bytes, num_handles)) =
6515 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6516 {
6517 let member_inline_size = <fidl_fuchsia_hardware_audio__common::PlugDetectCapabilities as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6518 if inlined != (member_inline_size <= 4) {
6519 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6520 }
6521 let inner_offset;
6522 let mut inner_depth = depth.clone();
6523 if inlined {
6524 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6525 inner_offset = next_offset;
6526 } else {
6527 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6528 inner_depth.increment()?;
6529 }
6530 let val_ref = self.plug_detect_capabilities.get_or_insert_with(|| {
6531 fidl::new_empty!(fidl_fuchsia_hardware_audio__common::PlugDetectCapabilities, D)
6532 });
6533 fidl::decode!(
6534 fidl_fuchsia_hardware_audio__common::PlugDetectCapabilities,
6535 D,
6536 val_ref,
6537 decoder,
6538 inner_offset,
6539 inner_depth
6540 )?;
6541 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6542 {
6543 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6544 }
6545 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6546 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6547 }
6548 }
6549
6550 next_offset += envelope_size;
6551
6552 while next_offset < end_offset {
6554 _next_ordinal_to_read += 1;
6555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6556 next_offset += envelope_size;
6557 }
6558
6559 Ok(())
6560 }
6561 }
6562
6563 impl RingBuffer {
6564 #[inline(always)]
6565 fn max_ordinal_present(&self) -> u64 {
6566 if let Some(_) = self.notifications_per_ring {
6567 return 6;
6568 }
6569 if let Some(_) = self.ring_buffer_constraints {
6570 return 5;
6571 }
6572 if let Some(_) = self.supported_formats {
6573 return 4;
6574 }
6575 if let Some(_) = self.external_delay {
6576 return 3;
6577 }
6578 if let Some(_) = self.internal_delay {
6579 return 2;
6580 }
6581 if let Some(_) = self.driver_transfer_bytes {
6582 return 1;
6583 }
6584 0
6585 }
6586 }
6587
6588 impl fidl::encoding::ValueTypeMarker for RingBuffer {
6589 type Borrowed<'a> = &'a Self;
6590 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6591 value
6592 }
6593 }
6594
6595 unsafe impl fidl::encoding::TypeMarker for RingBuffer {
6596 type Owned = Self;
6597
6598 #[inline(always)]
6599 fn inline_align(_context: fidl::encoding::Context) -> usize {
6600 8
6601 }
6602
6603 #[inline(always)]
6604 fn inline_size(_context: fidl::encoding::Context) -> usize {
6605 16
6606 }
6607 }
6608
6609 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RingBuffer, D>
6610 for &RingBuffer
6611 {
6612 unsafe fn encode(
6613 self,
6614 encoder: &mut fidl::encoding::Encoder<'_, D>,
6615 offset: usize,
6616 mut depth: fidl::encoding::Depth,
6617 ) -> fidl::Result<()> {
6618 encoder.debug_check_bounds::<RingBuffer>(offset);
6619 let max_ordinal: u64 = self.max_ordinal_present();
6621 encoder.write_num(max_ordinal, offset);
6622 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6623 if max_ordinal == 0 {
6625 return Ok(());
6626 }
6627 depth.increment()?;
6628 let envelope_size = 8;
6629 let bytes_len = max_ordinal as usize * envelope_size;
6630 #[allow(unused_variables)]
6631 let offset = encoder.out_of_line_offset(bytes_len);
6632 let mut _prev_end_offset: usize = 0;
6633 if 1 > max_ordinal {
6634 return Ok(());
6635 }
6636
6637 let cur_offset: usize = (1 - 1) * envelope_size;
6640
6641 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6643
6644 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6649 self.driver_transfer_bytes
6650 .as_ref()
6651 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6652 encoder,
6653 offset + cur_offset,
6654 depth,
6655 )?;
6656
6657 _prev_end_offset = cur_offset + envelope_size;
6658 if 2 > max_ordinal {
6659 return Ok(());
6660 }
6661
6662 let cur_offset: usize = (2 - 1) * envelope_size;
6665
6666 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6668
6669 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6674 self.internal_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6675 encoder,
6676 offset + cur_offset,
6677 depth,
6678 )?;
6679
6680 _prev_end_offset = cur_offset + envelope_size;
6681 if 3 > max_ordinal {
6682 return Ok(());
6683 }
6684
6685 let cur_offset: usize = (3 - 1) * envelope_size;
6688
6689 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6691
6692 fidl::encoding::encode_in_envelope_optional::<i64, D>(
6697 self.external_delay.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
6698 encoder,
6699 offset + cur_offset,
6700 depth,
6701 )?;
6702
6703 _prev_end_offset = cur_offset + envelope_size;
6704 if 4 > max_ordinal {
6705 return Ok(());
6706 }
6707
6708 let cur_offset: usize = (4 - 1) * envelope_size;
6711
6712 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6714
6715 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<FormatRange, 64>, D>(
6720 self.supported_formats.as_ref().map(<fidl::encoding::Vector<FormatRange, 64> as fidl::encoding::ValueTypeMarker>::borrow),
6721 encoder, offset + cur_offset, depth
6722 )?;
6723
6724 _prev_end_offset = cur_offset + envelope_size;
6725 if 5 > max_ordinal {
6726 return Ok(());
6727 }
6728
6729 let cur_offset: usize = (5 - 1) * envelope_size;
6732
6733 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6735
6736 fidl::encoding::encode_in_envelope_optional::<RingBufferConstraints, D>(
6741 self.ring_buffer_constraints
6742 .as_ref()
6743 .map(<RingBufferConstraints as fidl::encoding::ValueTypeMarker>::borrow),
6744 encoder,
6745 offset + cur_offset,
6746 depth,
6747 )?;
6748
6749 _prev_end_offset = cur_offset + envelope_size;
6750 if 6 > max_ordinal {
6751 return Ok(());
6752 }
6753
6754 let cur_offset: usize = (6 - 1) * envelope_size;
6757
6758 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6760
6761 fidl::encoding::encode_in_envelope_optional::<u32, D>(
6766 self.notifications_per_ring
6767 .as_ref()
6768 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
6769 encoder,
6770 offset + cur_offset,
6771 depth,
6772 )?;
6773
6774 _prev_end_offset = cur_offset + envelope_size;
6775
6776 Ok(())
6777 }
6778 }
6779
6780 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RingBuffer {
6781 #[inline(always)]
6782 fn new_empty() -> Self {
6783 Self::default()
6784 }
6785
6786 unsafe fn decode(
6787 &mut self,
6788 decoder: &mut fidl::encoding::Decoder<'_, D>,
6789 offset: usize,
6790 mut depth: fidl::encoding::Depth,
6791 ) -> fidl::Result<()> {
6792 decoder.debug_check_bounds::<Self>(offset);
6793 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6794 None => return Err(fidl::Error::NotNullable),
6795 Some(len) => len,
6796 };
6797 if len == 0 {
6799 return Ok(());
6800 };
6801 depth.increment()?;
6802 let envelope_size = 8;
6803 let bytes_len = len * envelope_size;
6804 let offset = decoder.out_of_line_offset(bytes_len)?;
6805 let mut _next_ordinal_to_read = 0;
6807 let mut next_offset = offset;
6808 let end_offset = offset + bytes_len;
6809 _next_ordinal_to_read += 1;
6810 if next_offset >= end_offset {
6811 return Ok(());
6812 }
6813
6814 while _next_ordinal_to_read < 1 {
6816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6817 _next_ordinal_to_read += 1;
6818 next_offset += envelope_size;
6819 }
6820
6821 let next_out_of_line = decoder.next_out_of_line();
6822 let handles_before = decoder.remaining_handles();
6823 if let Some((inlined, num_bytes, num_handles)) =
6824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6825 {
6826 let member_inline_size =
6827 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6828 if inlined != (member_inline_size <= 4) {
6829 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6830 }
6831 let inner_offset;
6832 let mut inner_depth = depth.clone();
6833 if inlined {
6834 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6835 inner_offset = next_offset;
6836 } else {
6837 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6838 inner_depth.increment()?;
6839 }
6840 let val_ref =
6841 self.driver_transfer_bytes.get_or_insert_with(|| fidl::new_empty!(u32, D));
6842 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
6843 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6844 {
6845 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6846 }
6847 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6848 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6849 }
6850 }
6851
6852 next_offset += envelope_size;
6853 _next_ordinal_to_read += 1;
6854 if next_offset >= end_offset {
6855 return Ok(());
6856 }
6857
6858 while _next_ordinal_to_read < 2 {
6860 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6861 _next_ordinal_to_read += 1;
6862 next_offset += envelope_size;
6863 }
6864
6865 let next_out_of_line = decoder.next_out_of_line();
6866 let handles_before = decoder.remaining_handles();
6867 if let Some((inlined, num_bytes, num_handles)) =
6868 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6869 {
6870 let member_inline_size =
6871 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6872 if inlined != (member_inline_size <= 4) {
6873 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6874 }
6875 let inner_offset;
6876 let mut inner_depth = depth.clone();
6877 if inlined {
6878 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6879 inner_offset = next_offset;
6880 } else {
6881 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6882 inner_depth.increment()?;
6883 }
6884 let val_ref = self.internal_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
6885 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6886 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6887 {
6888 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6889 }
6890 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6891 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6892 }
6893 }
6894
6895 next_offset += envelope_size;
6896 _next_ordinal_to_read += 1;
6897 if next_offset >= end_offset {
6898 return Ok(());
6899 }
6900
6901 while _next_ordinal_to_read < 3 {
6903 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6904 _next_ordinal_to_read += 1;
6905 next_offset += envelope_size;
6906 }
6907
6908 let next_out_of_line = decoder.next_out_of_line();
6909 let handles_before = decoder.remaining_handles();
6910 if let Some((inlined, num_bytes, num_handles)) =
6911 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6912 {
6913 let member_inline_size =
6914 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6915 if inlined != (member_inline_size <= 4) {
6916 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6917 }
6918 let inner_offset;
6919 let mut inner_depth = depth.clone();
6920 if inlined {
6921 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6922 inner_offset = next_offset;
6923 } else {
6924 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6925 inner_depth.increment()?;
6926 }
6927 let val_ref = self.external_delay.get_or_insert_with(|| fidl::new_empty!(i64, D));
6928 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
6929 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6930 {
6931 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6932 }
6933 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6934 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6935 }
6936 }
6937
6938 next_offset += envelope_size;
6939 _next_ordinal_to_read += 1;
6940 if next_offset >= end_offset {
6941 return Ok(());
6942 }
6943
6944 while _next_ordinal_to_read < 4 {
6946 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6947 _next_ordinal_to_read += 1;
6948 next_offset += envelope_size;
6949 }
6950
6951 let next_out_of_line = decoder.next_out_of_line();
6952 let handles_before = decoder.remaining_handles();
6953 if let Some((inlined, num_bytes, num_handles)) =
6954 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6955 {
6956 let member_inline_size = <fidl::encoding::Vector<FormatRange, 64> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6957 if inlined != (member_inline_size <= 4) {
6958 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6959 }
6960 let inner_offset;
6961 let mut inner_depth = depth.clone();
6962 if inlined {
6963 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6964 inner_offset = next_offset;
6965 } else {
6966 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6967 inner_depth.increment()?;
6968 }
6969 let val_ref = self.supported_formats.get_or_insert_with(
6970 || fidl::new_empty!(fidl::encoding::Vector<FormatRange, 64>, D),
6971 );
6972 fidl::decode!(fidl::encoding::Vector<FormatRange, 64>, D, val_ref, decoder, inner_offset, inner_depth)?;
6973 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6974 {
6975 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6976 }
6977 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6978 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6979 }
6980 }
6981
6982 next_offset += envelope_size;
6983 _next_ordinal_to_read += 1;
6984 if next_offset >= end_offset {
6985 return Ok(());
6986 }
6987
6988 while _next_ordinal_to_read < 5 {
6990 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6991 _next_ordinal_to_read += 1;
6992 next_offset += envelope_size;
6993 }
6994
6995 let next_out_of_line = decoder.next_out_of_line();
6996 let handles_before = decoder.remaining_handles();
6997 if let Some((inlined, num_bytes, num_handles)) =
6998 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6999 {
7000 let member_inline_size =
7001 <RingBufferConstraints as fidl::encoding::TypeMarker>::inline_size(
7002 decoder.context,
7003 );
7004 if inlined != (member_inline_size <= 4) {
7005 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7006 }
7007 let inner_offset;
7008 let mut inner_depth = depth.clone();
7009 if inlined {
7010 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7011 inner_offset = next_offset;
7012 } else {
7013 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7014 inner_depth.increment()?;
7015 }
7016 let val_ref = self
7017 .ring_buffer_constraints
7018 .get_or_insert_with(|| fidl::new_empty!(RingBufferConstraints, D));
7019 fidl::decode!(
7020 RingBufferConstraints,
7021 D,
7022 val_ref,
7023 decoder,
7024 inner_offset,
7025 inner_depth
7026 )?;
7027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7028 {
7029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7030 }
7031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7033 }
7034 }
7035
7036 next_offset += envelope_size;
7037 _next_ordinal_to_read += 1;
7038 if next_offset >= end_offset {
7039 return Ok(());
7040 }
7041
7042 while _next_ordinal_to_read < 6 {
7044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7045 _next_ordinal_to_read += 1;
7046 next_offset += envelope_size;
7047 }
7048
7049 let next_out_of_line = decoder.next_out_of_line();
7050 let handles_before = decoder.remaining_handles();
7051 if let Some((inlined, num_bytes, num_handles)) =
7052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7053 {
7054 let member_inline_size =
7055 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7056 if inlined != (member_inline_size <= 4) {
7057 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7058 }
7059 let inner_offset;
7060 let mut inner_depth = depth.clone();
7061 if inlined {
7062 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7063 inner_offset = next_offset;
7064 } else {
7065 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7066 inner_depth.increment()?;
7067 }
7068 let val_ref =
7069 self.notifications_per_ring.get_or_insert_with(|| fidl::new_empty!(u32, D));
7070 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
7071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7072 {
7073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7074 }
7075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7077 }
7078 }
7079
7080 next_offset += envelope_size;
7081
7082 while next_offset < end_offset {
7084 _next_ordinal_to_read += 1;
7085 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7086 next_offset += envelope_size;
7087 }
7088
7089 Ok(())
7090 }
7091 }
7092
7093 impl StreamConfig {
7094 #[inline(always)]
7095 fn max_ordinal_present(&self) -> u64 {
7096 if let Some(_) = self.plug_properties {
7097 return 5;
7098 }
7099 if let Some(_) = self.gain_properties {
7100 return 4;
7101 }
7102 if let Some(_) = self.clock_properties {
7103 return 3;
7104 }
7105 if let Some(_) = self.ring_buffer {
7106 return 2;
7107 }
7108 if let Some(_) = self.is_input {
7109 return 1;
7110 }
7111 0
7112 }
7113 }
7114
7115 impl fidl::encoding::ValueTypeMarker for StreamConfig {
7116 type Borrowed<'a> = &'a Self;
7117 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7118 value
7119 }
7120 }
7121
7122 unsafe impl fidl::encoding::TypeMarker for StreamConfig {
7123 type Owned = Self;
7124
7125 #[inline(always)]
7126 fn inline_align(_context: fidl::encoding::Context) -> usize {
7127 8
7128 }
7129
7130 #[inline(always)]
7131 fn inline_size(_context: fidl::encoding::Context) -> usize {
7132 16
7133 }
7134 }
7135
7136 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StreamConfig, D>
7137 for &StreamConfig
7138 {
7139 unsafe fn encode(
7140 self,
7141 encoder: &mut fidl::encoding::Encoder<'_, D>,
7142 offset: usize,
7143 mut depth: fidl::encoding::Depth,
7144 ) -> fidl::Result<()> {
7145 encoder.debug_check_bounds::<StreamConfig>(offset);
7146 let max_ordinal: u64 = self.max_ordinal_present();
7148 encoder.write_num(max_ordinal, offset);
7149 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7150 if max_ordinal == 0 {
7152 return Ok(());
7153 }
7154 depth.increment()?;
7155 let envelope_size = 8;
7156 let bytes_len = max_ordinal as usize * envelope_size;
7157 #[allow(unused_variables)]
7158 let offset = encoder.out_of_line_offset(bytes_len);
7159 let mut _prev_end_offset: usize = 0;
7160 if 1 > max_ordinal {
7161 return Ok(());
7162 }
7163
7164 let cur_offset: usize = (1 - 1) * envelope_size;
7167
7168 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7170
7171 fidl::encoding::encode_in_envelope_optional::<bool, D>(
7176 self.is_input.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
7177 encoder,
7178 offset + cur_offset,
7179 depth,
7180 )?;
7181
7182 _prev_end_offset = cur_offset + envelope_size;
7183 if 2 > max_ordinal {
7184 return Ok(());
7185 }
7186
7187 let cur_offset: usize = (2 - 1) * envelope_size;
7190
7191 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7193
7194 fidl::encoding::encode_in_envelope_optional::<RingBuffer, D>(
7199 self.ring_buffer
7200 .as_ref()
7201 .map(<RingBuffer as fidl::encoding::ValueTypeMarker>::borrow),
7202 encoder,
7203 offset + cur_offset,
7204 depth,
7205 )?;
7206
7207 _prev_end_offset = cur_offset + envelope_size;
7208 if 3 > max_ordinal {
7209 return Ok(());
7210 }
7211
7212 let cur_offset: usize = (3 - 1) * envelope_size;
7215
7216 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7218
7219 fidl::encoding::encode_in_envelope_optional::<ClockProperties, D>(
7224 self.clock_properties
7225 .as_ref()
7226 .map(<ClockProperties as fidl::encoding::ValueTypeMarker>::borrow),
7227 encoder,
7228 offset + cur_offset,
7229 depth,
7230 )?;
7231
7232 _prev_end_offset = cur_offset + envelope_size;
7233 if 4 > max_ordinal {
7234 return Ok(());
7235 }
7236
7237 let cur_offset: usize = (4 - 1) * envelope_size;
7240
7241 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7243
7244 fidl::encoding::encode_in_envelope_optional::<GainProperties, D>(
7249 self.gain_properties
7250 .as_ref()
7251 .map(<GainProperties as fidl::encoding::ValueTypeMarker>::borrow),
7252 encoder,
7253 offset + cur_offset,
7254 depth,
7255 )?;
7256
7257 _prev_end_offset = cur_offset + envelope_size;
7258 if 5 > max_ordinal {
7259 return Ok(());
7260 }
7261
7262 let cur_offset: usize = (5 - 1) * envelope_size;
7265
7266 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7268
7269 fidl::encoding::encode_in_envelope_optional::<PlugProperties, D>(
7274 self.plug_properties
7275 .as_ref()
7276 .map(<PlugProperties as fidl::encoding::ValueTypeMarker>::borrow),
7277 encoder,
7278 offset + cur_offset,
7279 depth,
7280 )?;
7281
7282 _prev_end_offset = cur_offset + envelope_size;
7283
7284 Ok(())
7285 }
7286 }
7287
7288 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StreamConfig {
7289 #[inline(always)]
7290 fn new_empty() -> Self {
7291 Self::default()
7292 }
7293
7294 unsafe fn decode(
7295 &mut self,
7296 decoder: &mut fidl::encoding::Decoder<'_, D>,
7297 offset: usize,
7298 mut depth: fidl::encoding::Depth,
7299 ) -> fidl::Result<()> {
7300 decoder.debug_check_bounds::<Self>(offset);
7301 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7302 None => return Err(fidl::Error::NotNullable),
7303 Some(len) => len,
7304 };
7305 if len == 0 {
7307 return Ok(());
7308 };
7309 depth.increment()?;
7310 let envelope_size = 8;
7311 let bytes_len = len * envelope_size;
7312 let offset = decoder.out_of_line_offset(bytes_len)?;
7313 let mut _next_ordinal_to_read = 0;
7315 let mut next_offset = offset;
7316 let end_offset = offset + bytes_len;
7317 _next_ordinal_to_read += 1;
7318 if next_offset >= end_offset {
7319 return Ok(());
7320 }
7321
7322 while _next_ordinal_to_read < 1 {
7324 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7325 _next_ordinal_to_read += 1;
7326 next_offset += envelope_size;
7327 }
7328
7329 let next_out_of_line = decoder.next_out_of_line();
7330 let handles_before = decoder.remaining_handles();
7331 if let Some((inlined, num_bytes, num_handles)) =
7332 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7333 {
7334 let member_inline_size =
7335 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7336 if inlined != (member_inline_size <= 4) {
7337 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7338 }
7339 let inner_offset;
7340 let mut inner_depth = depth.clone();
7341 if inlined {
7342 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7343 inner_offset = next_offset;
7344 } else {
7345 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7346 inner_depth.increment()?;
7347 }
7348 let val_ref = self.is_input.get_or_insert_with(|| fidl::new_empty!(bool, D));
7349 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
7350 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7351 {
7352 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7353 }
7354 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7355 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7356 }
7357 }
7358
7359 next_offset += envelope_size;
7360 _next_ordinal_to_read += 1;
7361 if next_offset >= end_offset {
7362 return Ok(());
7363 }
7364
7365 while _next_ordinal_to_read < 2 {
7367 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7368 _next_ordinal_to_read += 1;
7369 next_offset += envelope_size;
7370 }
7371
7372 let next_out_of_line = decoder.next_out_of_line();
7373 let handles_before = decoder.remaining_handles();
7374 if let Some((inlined, num_bytes, num_handles)) =
7375 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7376 {
7377 let member_inline_size =
7378 <RingBuffer as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7379 if inlined != (member_inline_size <= 4) {
7380 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7381 }
7382 let inner_offset;
7383 let mut inner_depth = depth.clone();
7384 if inlined {
7385 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7386 inner_offset = next_offset;
7387 } else {
7388 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7389 inner_depth.increment()?;
7390 }
7391 let val_ref =
7392 self.ring_buffer.get_or_insert_with(|| fidl::new_empty!(RingBuffer, D));
7393 fidl::decode!(RingBuffer, D, val_ref, decoder, inner_offset, inner_depth)?;
7394 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7395 {
7396 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7397 }
7398 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7399 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7400 }
7401 }
7402
7403 next_offset += envelope_size;
7404 _next_ordinal_to_read += 1;
7405 if next_offset >= end_offset {
7406 return Ok(());
7407 }
7408
7409 while _next_ordinal_to_read < 3 {
7411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7412 _next_ordinal_to_read += 1;
7413 next_offset += envelope_size;
7414 }
7415
7416 let next_out_of_line = decoder.next_out_of_line();
7417 let handles_before = decoder.remaining_handles();
7418 if let Some((inlined, num_bytes, num_handles)) =
7419 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7420 {
7421 let member_inline_size =
7422 <ClockProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7423 if inlined != (member_inline_size <= 4) {
7424 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7425 }
7426 let inner_offset;
7427 let mut inner_depth = depth.clone();
7428 if inlined {
7429 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7430 inner_offset = next_offset;
7431 } else {
7432 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7433 inner_depth.increment()?;
7434 }
7435 let val_ref = self
7436 .clock_properties
7437 .get_or_insert_with(|| fidl::new_empty!(ClockProperties, D));
7438 fidl::decode!(ClockProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
7439 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7440 {
7441 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7442 }
7443 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7444 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7445 }
7446 }
7447
7448 next_offset += envelope_size;
7449 _next_ordinal_to_read += 1;
7450 if next_offset >= end_offset {
7451 return Ok(());
7452 }
7453
7454 while _next_ordinal_to_read < 4 {
7456 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7457 _next_ordinal_to_read += 1;
7458 next_offset += envelope_size;
7459 }
7460
7461 let next_out_of_line = decoder.next_out_of_line();
7462 let handles_before = decoder.remaining_handles();
7463 if let Some((inlined, num_bytes, num_handles)) =
7464 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7465 {
7466 let member_inline_size =
7467 <GainProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7468 if inlined != (member_inline_size <= 4) {
7469 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7470 }
7471 let inner_offset;
7472 let mut inner_depth = depth.clone();
7473 if inlined {
7474 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7475 inner_offset = next_offset;
7476 } else {
7477 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7478 inner_depth.increment()?;
7479 }
7480 let val_ref =
7481 self.gain_properties.get_or_insert_with(|| fidl::new_empty!(GainProperties, D));
7482 fidl::decode!(GainProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
7483 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7484 {
7485 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7486 }
7487 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7488 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7489 }
7490 }
7491
7492 next_offset += envelope_size;
7493 _next_ordinal_to_read += 1;
7494 if next_offset >= end_offset {
7495 return Ok(());
7496 }
7497
7498 while _next_ordinal_to_read < 5 {
7500 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7501 _next_ordinal_to_read += 1;
7502 next_offset += envelope_size;
7503 }
7504
7505 let next_out_of_line = decoder.next_out_of_line();
7506 let handles_before = decoder.remaining_handles();
7507 if let Some((inlined, num_bytes, num_handles)) =
7508 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7509 {
7510 let member_inline_size =
7511 <PlugProperties as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7512 if inlined != (member_inline_size <= 4) {
7513 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7514 }
7515 let inner_offset;
7516 let mut inner_depth = depth.clone();
7517 if inlined {
7518 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7519 inner_offset = next_offset;
7520 } else {
7521 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7522 inner_depth.increment()?;
7523 }
7524 let val_ref =
7525 self.plug_properties.get_or_insert_with(|| fidl::new_empty!(PlugProperties, D));
7526 fidl::decode!(PlugProperties, D, val_ref, decoder, inner_offset, inner_depth)?;
7527 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7528 {
7529 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7530 }
7531 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7532 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7533 }
7534 }
7535
7536 next_offset += envelope_size;
7537
7538 while next_offset < end_offset {
7540 _next_ordinal_to_read += 1;
7541 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7542 next_offset += envelope_size;
7543 }
7544
7545 Ok(())
7546 }
7547 }
7548
7549 impl fidl::encoding::ValueTypeMarker for DeviceSpecific {
7550 type Borrowed<'a> = &'a Self;
7551 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7552 value
7553 }
7554 }
7555
7556 unsafe impl fidl::encoding::TypeMarker for DeviceSpecific {
7557 type Owned = Self;
7558
7559 #[inline(always)]
7560 fn inline_align(_context: fidl::encoding::Context) -> usize {
7561 8
7562 }
7563
7564 #[inline(always)]
7565 fn inline_size(_context: fidl::encoding::Context) -> usize {
7566 16
7567 }
7568 }
7569
7570 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceSpecific, D>
7571 for &DeviceSpecific
7572 {
7573 #[inline]
7574 unsafe fn encode(
7575 self,
7576 encoder: &mut fidl::encoding::Encoder<'_, D>,
7577 offset: usize,
7578 _depth: fidl::encoding::Depth,
7579 ) -> fidl::Result<()> {
7580 encoder.debug_check_bounds::<DeviceSpecific>(offset);
7581 encoder.write_num::<u64>(self.ordinal(), offset);
7582 match self {
7583 DeviceSpecific::StreamConfig(ref val) => {
7584 fidl::encoding::encode_in_envelope::<StreamConfig, D>(
7585 <StreamConfig as fidl::encoding::ValueTypeMarker>::borrow(val),
7586 encoder,
7587 offset + 8,
7588 _depth,
7589 )
7590 }
7591 DeviceSpecific::Dai(ref val) => fidl::encoding::encode_in_envelope::<Dai, D>(
7592 <Dai as fidl::encoding::ValueTypeMarker>::borrow(val),
7593 encoder,
7594 offset + 8,
7595 _depth,
7596 ),
7597 DeviceSpecific::Codec(ref val) => fidl::encoding::encode_in_envelope::<Codec, D>(
7598 <Codec as fidl::encoding::ValueTypeMarker>::borrow(val),
7599 encoder,
7600 offset + 8,
7601 _depth,
7602 ),
7603 DeviceSpecific::Composite(ref val) => {
7604 fidl::encoding::encode_in_envelope::<Composite, D>(
7605 <Composite as fidl::encoding::ValueTypeMarker>::borrow(val),
7606 encoder,
7607 offset + 8,
7608 _depth,
7609 )
7610 }
7611 DeviceSpecific::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
7612 }
7613 }
7614 }
7615
7616 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceSpecific {
7617 #[inline(always)]
7618 fn new_empty() -> Self {
7619 Self::__SourceBreaking { unknown_ordinal: 0 }
7620 }
7621
7622 #[inline]
7623 unsafe fn decode(
7624 &mut self,
7625 decoder: &mut fidl::encoding::Decoder<'_, D>,
7626 offset: usize,
7627 mut depth: fidl::encoding::Depth,
7628 ) -> fidl::Result<()> {
7629 decoder.debug_check_bounds::<Self>(offset);
7630 #[allow(unused_variables)]
7631 let next_out_of_line = decoder.next_out_of_line();
7632 let handles_before = decoder.remaining_handles();
7633 let (ordinal, inlined, num_bytes, num_handles) =
7634 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
7635
7636 let member_inline_size = match ordinal {
7637 1 => <StreamConfig as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7638 2 => <Dai as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7639 3 => <Codec as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7640 4 => <Composite as fidl::encoding::TypeMarker>::inline_size(decoder.context),
7641 0 => return Err(fidl::Error::UnknownUnionTag),
7642 _ => num_bytes as usize,
7643 };
7644
7645 if inlined != (member_inline_size <= 4) {
7646 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7647 }
7648 let _inner_offset;
7649 if inlined {
7650 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
7651 _inner_offset = offset + 8;
7652 } else {
7653 depth.increment()?;
7654 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7655 }
7656 match ordinal {
7657 1 => {
7658 #[allow(irrefutable_let_patterns)]
7659 if let DeviceSpecific::StreamConfig(_) = self {
7660 } else {
7662 *self = DeviceSpecific::StreamConfig(fidl::new_empty!(StreamConfig, D));
7664 }
7665 #[allow(irrefutable_let_patterns)]
7666 if let DeviceSpecific::StreamConfig(ref mut val) = self {
7667 fidl::decode!(StreamConfig, D, val, decoder, _inner_offset, depth)?;
7668 } else {
7669 unreachable!()
7670 }
7671 }
7672 2 => {
7673 #[allow(irrefutable_let_patterns)]
7674 if let DeviceSpecific::Dai(_) = self {
7675 } else {
7677 *self = DeviceSpecific::Dai(fidl::new_empty!(Dai, D));
7679 }
7680 #[allow(irrefutable_let_patterns)]
7681 if let DeviceSpecific::Dai(ref mut val) = self {
7682 fidl::decode!(Dai, D, val, decoder, _inner_offset, depth)?;
7683 } else {
7684 unreachable!()
7685 }
7686 }
7687 3 => {
7688 #[allow(irrefutable_let_patterns)]
7689 if let DeviceSpecific::Codec(_) = self {
7690 } else {
7692 *self = DeviceSpecific::Codec(fidl::new_empty!(Codec, D));
7694 }
7695 #[allow(irrefutable_let_patterns)]
7696 if let DeviceSpecific::Codec(ref mut val) = self {
7697 fidl::decode!(Codec, D, val, decoder, _inner_offset, depth)?;
7698 } else {
7699 unreachable!()
7700 }
7701 }
7702 4 => {
7703 #[allow(irrefutable_let_patterns)]
7704 if let DeviceSpecific::Composite(_) = self {
7705 } else {
7707 *self = DeviceSpecific::Composite(fidl::new_empty!(Composite, D));
7709 }
7710 #[allow(irrefutable_let_patterns)]
7711 if let DeviceSpecific::Composite(ref mut val) = self {
7712 fidl::decode!(Composite, D, val, decoder, _inner_offset, depth)?;
7713 } else {
7714 unreachable!()
7715 }
7716 }
7717 #[allow(deprecated)]
7718 ordinal => {
7719 for _ in 0..num_handles {
7720 decoder.drop_next_handle()?;
7721 }
7722 *self = DeviceSpecific::__SourceBreaking { unknown_ordinal: ordinal };
7723 }
7724 }
7725 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
7726 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7727 }
7728 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7729 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7730 }
7731 Ok(())
7732 }
7733 }
7734}