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