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
11#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct Config {
13 pub device_path: String,
14 pub enable_suspend: bool,
15 pub hci_command_timeout_seconds: u16,
16 pub le_active_scan_interval: u16,
17 pub le_active_scan_window: u16,
18 pub le_fast_adv_interval_max: u16,
19 pub le_fast_adv_interval_min: u16,
20 pub le_fast_adv_max_tx_power: i8,
21 pub le_slow_adv_interval_max: u16,
22 pub le_slow_adv_interval_min: u16,
23 pub le_slow_adv_max_tx_power: i8,
24 pub le_very_fast_adv_interval_max: u16,
25 pub le_very_fast_adv_interval_min: u16,
26 pub le_very_fast_adv_max_tx_power: i8,
27 pub legacy_pairing_enabled: bool,
28 pub override_vendor_capabilites_version: u16,
29 pub sco_offload_path_index: u8,
30}
31
32impl fidl::Persistable for Config {}
33
34mod internal {
35 use super::*;
36
37 impl fidl::encoding::ValueTypeMarker for Config {
38 type Borrowed<'a> = &'a Self;
39 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
40 value
41 }
42 }
43
44 unsafe impl fidl::encoding::TypeMarker for Config {
45 type Owned = Self;
46
47 #[inline(always)]
48 fn inline_align(_context: fidl::encoding::Context) -> usize {
49 8
50 }
51
52 #[inline(always)]
53 fn inline_size(_context: fidl::encoding::Context) -> usize {
54 48
55 }
56 }
57
58 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
59 #[inline]
60 unsafe fn encode(
61 self,
62 encoder: &mut fidl::encoding::Encoder<'_, D>,
63 offset: usize,
64 _depth: fidl::encoding::Depth,
65 ) -> fidl::Result<()> {
66 encoder.debug_check_bounds::<Config>(offset);
67 fidl::encoding::Encode::<Config, D>::encode(
69 (
70 <fidl::encoding::BoundedString<512> as fidl::encoding::ValueTypeMarker>::borrow(
71 &self.device_path,
72 ),
73 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enable_suspend),
74 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
75 &self.hci_command_timeout_seconds,
76 ),
77 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.le_active_scan_interval),
78 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.le_active_scan_window),
79 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
80 &self.le_fast_adv_interval_max,
81 ),
82 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
83 &self.le_fast_adv_interval_min,
84 ),
85 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.le_fast_adv_max_tx_power),
86 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
87 &self.le_slow_adv_interval_max,
88 ),
89 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
90 &self.le_slow_adv_interval_min,
91 ),
92 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.le_slow_adv_max_tx_power),
93 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
94 &self.le_very_fast_adv_interval_max,
95 ),
96 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
97 &self.le_very_fast_adv_interval_min,
98 ),
99 <i8 as fidl::encoding::ValueTypeMarker>::borrow(
100 &self.le_very_fast_adv_max_tx_power,
101 ),
102 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.legacy_pairing_enabled),
103 <u16 as fidl::encoding::ValueTypeMarker>::borrow(
104 &self.override_vendor_capabilites_version,
105 ),
106 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.sco_offload_path_index),
107 ),
108 encoder,
109 offset,
110 _depth,
111 )
112 }
113 }
114 unsafe impl<
115 D: fidl::encoding::ResourceDialect,
116 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<512>, D>,
117 T1: fidl::encoding::Encode<bool, D>,
118 T2: fidl::encoding::Encode<u16, D>,
119 T3: fidl::encoding::Encode<u16, D>,
120 T4: fidl::encoding::Encode<u16, D>,
121 T5: fidl::encoding::Encode<u16, D>,
122 T6: fidl::encoding::Encode<u16, D>,
123 T7: fidl::encoding::Encode<i8, D>,
124 T8: fidl::encoding::Encode<u16, D>,
125 T9: fidl::encoding::Encode<u16, D>,
126 T10: fidl::encoding::Encode<i8, D>,
127 T11: fidl::encoding::Encode<u16, D>,
128 T12: fidl::encoding::Encode<u16, D>,
129 T13: fidl::encoding::Encode<i8, D>,
130 T14: fidl::encoding::Encode<bool, D>,
131 T15: fidl::encoding::Encode<u16, D>,
132 T16: fidl::encoding::Encode<u8, D>,
133 > fidl::encoding::Encode<Config, D>
134 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)
135 {
136 #[inline]
137 unsafe fn encode(
138 self,
139 encoder: &mut fidl::encoding::Encoder<'_, D>,
140 offset: usize,
141 depth: fidl::encoding::Depth,
142 ) -> fidl::Result<()> {
143 encoder.debug_check_bounds::<Config>(offset);
144 unsafe {
147 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
148 (ptr as *mut u64).write_unaligned(0);
149 }
150 unsafe {
151 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
152 (ptr as *mut u64).write_unaligned(0);
153 }
154 unsafe {
155 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
156 (ptr as *mut u64).write_unaligned(0);
157 }
158 unsafe {
159 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
160 (ptr as *mut u64).write_unaligned(0);
161 }
162 self.0.encode(encoder, offset + 0, depth)?;
164 self.1.encode(encoder, offset + 16, depth)?;
165 self.2.encode(encoder, offset + 18, depth)?;
166 self.3.encode(encoder, offset + 20, depth)?;
167 self.4.encode(encoder, offset + 22, depth)?;
168 self.5.encode(encoder, offset + 24, depth)?;
169 self.6.encode(encoder, offset + 26, depth)?;
170 self.7.encode(encoder, offset + 28, depth)?;
171 self.8.encode(encoder, offset + 30, depth)?;
172 self.9.encode(encoder, offset + 32, depth)?;
173 self.10.encode(encoder, offset + 34, depth)?;
174 self.11.encode(encoder, offset + 36, depth)?;
175 self.12.encode(encoder, offset + 38, depth)?;
176 self.13.encode(encoder, offset + 40, depth)?;
177 self.14.encode(encoder, offset + 41, depth)?;
178 self.15.encode(encoder, offset + 42, depth)?;
179 self.16.encode(encoder, offset + 44, depth)?;
180 Ok(())
181 }
182 }
183
184 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
185 #[inline(always)]
186 fn new_empty() -> Self {
187 Self {
188 device_path: fidl::new_empty!(fidl::encoding::BoundedString<512>, D),
189 enable_suspend: fidl::new_empty!(bool, D),
190 hci_command_timeout_seconds: fidl::new_empty!(u16, D),
191 le_active_scan_interval: fidl::new_empty!(u16, D),
192 le_active_scan_window: fidl::new_empty!(u16, D),
193 le_fast_adv_interval_max: fidl::new_empty!(u16, D),
194 le_fast_adv_interval_min: fidl::new_empty!(u16, D),
195 le_fast_adv_max_tx_power: fidl::new_empty!(i8, D),
196 le_slow_adv_interval_max: fidl::new_empty!(u16, D),
197 le_slow_adv_interval_min: fidl::new_empty!(u16, D),
198 le_slow_adv_max_tx_power: fidl::new_empty!(i8, D),
199 le_very_fast_adv_interval_max: fidl::new_empty!(u16, D),
200 le_very_fast_adv_interval_min: fidl::new_empty!(u16, D),
201 le_very_fast_adv_max_tx_power: fidl::new_empty!(i8, D),
202 legacy_pairing_enabled: fidl::new_empty!(bool, D),
203 override_vendor_capabilites_version: fidl::new_empty!(u16, D),
204 sco_offload_path_index: fidl::new_empty!(u8, D),
205 }
206 }
207
208 #[inline]
209 unsafe fn decode(
210 &mut self,
211 decoder: &mut fidl::encoding::Decoder<'_, D>,
212 offset: usize,
213 _depth: fidl::encoding::Depth,
214 ) -> fidl::Result<()> {
215 decoder.debug_check_bounds::<Self>(offset);
216 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
218 let padval = unsafe { (ptr as *const u64).read_unaligned() };
219 let mask = 0xff00u64;
220 let maskedval = padval & mask;
221 if maskedval != 0 {
222 return Err(fidl::Error::NonZeroPadding {
223 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
224 });
225 }
226 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
227 let padval = unsafe { (ptr as *const u64).read_unaligned() };
228 let mask = 0xff0000000000u64;
229 let maskedval = padval & mask;
230 if maskedval != 0 {
231 return Err(fidl::Error::NonZeroPadding {
232 padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
233 });
234 }
235 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
236 let padval = unsafe { (ptr as *const u64).read_unaligned() };
237 let mask = 0xff000000u64;
238 let maskedval = padval & mask;
239 if maskedval != 0 {
240 return Err(fidl::Error::NonZeroPadding {
241 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
242 });
243 }
244 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
245 let padval = unsafe { (ptr as *const u64).read_unaligned() };
246 let mask = 0xffffff0000000000u64;
247 let maskedval = padval & mask;
248 if maskedval != 0 {
249 return Err(fidl::Error::NonZeroPadding {
250 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
251 });
252 }
253 fidl::decode!(
254 fidl::encoding::BoundedString<512>,
255 D,
256 &mut self.device_path,
257 decoder,
258 offset + 0,
259 _depth
260 )?;
261 fidl::decode!(bool, D, &mut self.enable_suspend, decoder, offset + 16, _depth)?;
262 fidl::decode!(
263 u16,
264 D,
265 &mut self.hci_command_timeout_seconds,
266 decoder,
267 offset + 18,
268 _depth
269 )?;
270 fidl::decode!(u16, D, &mut self.le_active_scan_interval, decoder, offset + 20, _depth)?;
271 fidl::decode!(u16, D, &mut self.le_active_scan_window, decoder, offset + 22, _depth)?;
272 fidl::decode!(
273 u16,
274 D,
275 &mut self.le_fast_adv_interval_max,
276 decoder,
277 offset + 24,
278 _depth
279 )?;
280 fidl::decode!(
281 u16,
282 D,
283 &mut self.le_fast_adv_interval_min,
284 decoder,
285 offset + 26,
286 _depth
287 )?;
288 fidl::decode!(i8, D, &mut self.le_fast_adv_max_tx_power, decoder, offset + 28, _depth)?;
289 fidl::decode!(
290 u16,
291 D,
292 &mut self.le_slow_adv_interval_max,
293 decoder,
294 offset + 30,
295 _depth
296 )?;
297 fidl::decode!(
298 u16,
299 D,
300 &mut self.le_slow_adv_interval_min,
301 decoder,
302 offset + 32,
303 _depth
304 )?;
305 fidl::decode!(i8, D, &mut self.le_slow_adv_max_tx_power, decoder, offset + 34, _depth)?;
306 fidl::decode!(
307 u16,
308 D,
309 &mut self.le_very_fast_adv_interval_max,
310 decoder,
311 offset + 36,
312 _depth
313 )?;
314 fidl::decode!(
315 u16,
316 D,
317 &mut self.le_very_fast_adv_interval_min,
318 decoder,
319 offset + 38,
320 _depth
321 )?;
322 fidl::decode!(
323 i8,
324 D,
325 &mut self.le_very_fast_adv_max_tx_power,
326 decoder,
327 offset + 40,
328 _depth
329 )?;
330 fidl::decode!(bool, D, &mut self.legacy_pairing_enabled, decoder, offset + 41, _depth)?;
331 fidl::decode!(
332 u16,
333 D,
334 &mut self.override_vendor_capabilites_version,
335 decoder,
336 offset + 42,
337 _depth
338 )?;
339 fidl::decode!(u8, D, &mut self.sco_offload_path_index, decoder, offset + 44, _depth)?;
340 Ok(())
341 }
342 }
343}