fidl_cf_sc_internal_a2dpprofileconfig/
fidl_cf_sc_internal_a2dpprofileconfig.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10use futures::future::{self, MaybeDone, TryFutureExt};
11use zx_status;
12
13#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
14pub struct Config {
15    pub channel_mode: String,
16    pub domain: String,
17    pub enable_aac: bool,
18    pub enable_avrcp_target: bool,
19    pub enable_sink: bool,
20    pub initiator_delay: u32,
21    pub source_type: String,
22}
23
24impl fidl::Persistable for Config {}
25
26mod internal {
27    use super::*;
28
29    impl fidl::encoding::ValueTypeMarker for Config {
30        type Borrowed<'a> = &'a Self;
31        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
32            value
33        }
34    }
35
36    unsafe impl fidl::encoding::TypeMarker for Config {
37        type Owned = Self;
38
39        #[inline(always)]
40        fn inline_align(_context: fidl::encoding::Context) -> usize {
41            8
42        }
43
44        #[inline(always)]
45        fn inline_size(_context: fidl::encoding::Context) -> usize {
46            56
47        }
48    }
49
50    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
51        #[inline]
52        unsafe fn encode(
53            self,
54            encoder: &mut fidl::encoding::Encoder<'_, D>,
55            offset: usize,
56            _depth: fidl::encoding::Depth,
57        ) -> fidl::Result<()> {
58            encoder.debug_check_bounds::<Config>(offset);
59            // Delegate to tuple encoding.
60            fidl::encoding::Encode::<Config, D>::encode(
61                (
62                    <fidl::encoding::BoundedString<5> as fidl::encoding::ValueTypeMarker>::borrow(
63                        &self.channel_mode,
64                    ),
65                    <fidl::encoding::BoundedString<20> as fidl::encoding::ValueTypeMarker>::borrow(
66                        &self.domain,
67                    ),
68                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_aac),
69                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_avrcp_target),
70                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_sink),
71                    <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.initiator_delay),
72                    <fidl::encoding::BoundedString<10> as fidl::encoding::ValueTypeMarker>::borrow(
73                        &self.source_type,
74                    ),
75                ),
76                encoder,
77                offset,
78                _depth,
79            )
80        }
81    }
82    unsafe impl<
83            D: fidl::encoding::ResourceDialect,
84            T0: fidl::encoding::Encode<fidl::encoding::BoundedString<5>, D>,
85            T1: fidl::encoding::Encode<fidl::encoding::BoundedString<20>, D>,
86            T2: fidl::encoding::Encode<bool, D>,
87            T3: fidl::encoding::Encode<bool, D>,
88            T4: fidl::encoding::Encode<bool, D>,
89            T5: fidl::encoding::Encode<u32, D>,
90            T6: fidl::encoding::Encode<fidl::encoding::BoundedString<10>, D>,
91        > fidl::encoding::Encode<Config, D> for (T0, T1, T2, T3, T4, T5, T6)
92    {
93        #[inline]
94        unsafe fn encode(
95            self,
96            encoder: &mut fidl::encoding::Encoder<'_, D>,
97            offset: usize,
98            depth: fidl::encoding::Depth,
99        ) -> fidl::Result<()> {
100            encoder.debug_check_bounds::<Config>(offset);
101            // Zero out padding regions. There's no need to apply masks
102            // because the unmasked parts will be overwritten by fields.
103            unsafe {
104                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
105                (ptr as *mut u64).write_unaligned(0);
106            }
107            // Write the fields.
108            self.0.encode(encoder, offset + 0, depth)?;
109            self.1.encode(encoder, offset + 16, depth)?;
110            self.2.encode(encoder, offset + 32, depth)?;
111            self.3.encode(encoder, offset + 33, depth)?;
112            self.4.encode(encoder, offset + 34, depth)?;
113            self.5.encode(encoder, offset + 36, depth)?;
114            self.6.encode(encoder, offset + 40, depth)?;
115            Ok(())
116        }
117    }
118
119    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
120        #[inline(always)]
121        fn new_empty() -> Self {
122            Self {
123                channel_mode: fidl::new_empty!(fidl::encoding::BoundedString<5>, D),
124                domain: fidl::new_empty!(fidl::encoding::BoundedString<20>, D),
125                enable_aac: fidl::new_empty!(bool, D),
126                enable_avrcp_target: fidl::new_empty!(bool, D),
127                enable_sink: fidl::new_empty!(bool, D),
128                initiator_delay: fidl::new_empty!(u32, D),
129                source_type: fidl::new_empty!(fidl::encoding::BoundedString<10>, D),
130            }
131        }
132
133        #[inline]
134        unsafe fn decode(
135            &mut self,
136            decoder: &mut fidl::encoding::Decoder<'_, D>,
137            offset: usize,
138            _depth: fidl::encoding::Depth,
139        ) -> fidl::Result<()> {
140            decoder.debug_check_bounds::<Self>(offset);
141            // Verify that padding bytes are zero.
142            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
143            let padval = unsafe { (ptr as *const u64).read_unaligned() };
144            let mask = 0xff000000u64;
145            let maskedval = padval & mask;
146            if maskedval != 0 {
147                return Err(fidl::Error::NonZeroPadding {
148                    padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
149                });
150            }
151            fidl::decode!(
152                fidl::encoding::BoundedString<5>,
153                D,
154                &mut self.channel_mode,
155                decoder,
156                offset + 0,
157                _depth
158            )?;
159            fidl::decode!(
160                fidl::encoding::BoundedString<20>,
161                D,
162                &mut self.domain,
163                decoder,
164                offset + 16,
165                _depth
166            )?;
167            fidl::decode!(bool, D, &mut self.enable_aac, decoder, offset + 32, _depth)?;
168            fidl::decode!(bool, D, &mut self.enable_avrcp_target, decoder, offset + 33, _depth)?;
169            fidl::decode!(bool, D, &mut self.enable_sink, decoder, offset + 34, _depth)?;
170            fidl::decode!(u32, D, &mut self.initiator_delay, decoder, offset + 36, _depth)?;
171            fidl::decode!(
172                fidl::encoding::BoundedString<10>,
173                D,
174                &mut self.source_type,
175                decoder,
176                offset + 40,
177                _depth
178            )?;
179            Ok(())
180        }
181    }
182}