fidl_fuchsia_wlan_minstrel/
fidl_fuchsia_wlan_minstrel.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, PartialEq, PartialOrd)]
14pub struct Peer {
15    pub addr: [u8; 6],
16    pub max_tp: u16,
17    pub max_probability: u16,
18    pub basic_highest: u16,
19    pub basic_max_probability: u16,
20    pub probes: u64,
21    pub entries: Vec<StatsEntry>,
22}
23
24impl fidl::Persistable for Peer {}
25
26#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
27pub struct Peers {
28    pub addrs: Vec<[u8; 6]>,
29}
30
31impl fidl::Persistable for Peers {}
32
33#[derive(Clone, Debug, PartialEq, PartialOrd)]
34pub struct StatsEntry {
35    pub tx_vector_idx: u16,
36    pub tx_vec_desc: String,
37    pub success_cur: u64,
38    pub attempts_cur: u64,
39    pub probability: f32,
40    pub cur_tp: f32,
41    pub success_total: u64,
42    pub attempts_total: u64,
43    pub probes_total: u64,
44    pub probe_cycles_skipped: u8,
45}
46
47impl fidl::Persistable for StatsEntry {}
48
49mod internal {
50    use super::*;
51
52    impl fidl::encoding::ValueTypeMarker for Peer {
53        type Borrowed<'a> = &'a Self;
54        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
55            value
56        }
57    }
58
59    unsafe impl fidl::encoding::TypeMarker for Peer {
60        type Owned = Self;
61
62        #[inline(always)]
63        fn inline_align(_context: fidl::encoding::Context) -> usize {
64            8
65        }
66
67        #[inline(always)]
68        fn inline_size(_context: fidl::encoding::Context) -> usize {
69            40
70        }
71    }
72
73    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peer, D> for &Peer {
74        #[inline]
75        unsafe fn encode(
76            self,
77            encoder: &mut fidl::encoding::Encoder<'_, D>,
78            offset: usize,
79            _depth: fidl::encoding::Depth,
80        ) -> fidl::Result<()> {
81            encoder.debug_check_bounds::<Peer>(offset);
82            // Delegate to tuple encoding.
83            fidl::encoding::Encode::<Peer, D>::encode(
84                (
85                    <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.addr),
86                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_tp),
87                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_probability),
88                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_highest),
89                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.basic_max_probability),
90                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.probes),
91                    <fidl::encoding::UnboundedVector<StatsEntry> as fidl::encoding::ValueTypeMarker>::borrow(&self.entries),
92                ),
93                encoder, offset, _depth
94            )
95        }
96    }
97    unsafe impl<
98            D: fidl::encoding::ResourceDialect,
99            T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
100            T1: fidl::encoding::Encode<u16, D>,
101            T2: fidl::encoding::Encode<u16, D>,
102            T3: fidl::encoding::Encode<u16, D>,
103            T4: fidl::encoding::Encode<u16, D>,
104            T5: fidl::encoding::Encode<u64, D>,
105            T6: fidl::encoding::Encode<fidl::encoding::UnboundedVector<StatsEntry>, D>,
106        > fidl::encoding::Encode<Peer, D> for (T0, T1, T2, T3, T4, T5, T6)
107    {
108        #[inline]
109        unsafe fn encode(
110            self,
111            encoder: &mut fidl::encoding::Encoder<'_, D>,
112            offset: usize,
113            depth: fidl::encoding::Depth,
114        ) -> fidl::Result<()> {
115            encoder.debug_check_bounds::<Peer>(offset);
116            // Zero out padding regions. There's no need to apply masks
117            // because the unmasked parts will be overwritten by fields.
118            unsafe {
119                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
120                (ptr as *mut u64).write_unaligned(0);
121            }
122            // Write the fields.
123            self.0.encode(encoder, offset + 0, depth)?;
124            self.1.encode(encoder, offset + 6, depth)?;
125            self.2.encode(encoder, offset + 8, depth)?;
126            self.3.encode(encoder, offset + 10, depth)?;
127            self.4.encode(encoder, offset + 12, depth)?;
128            self.5.encode(encoder, offset + 16, depth)?;
129            self.6.encode(encoder, offset + 24, depth)?;
130            Ok(())
131        }
132    }
133
134    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peer {
135        #[inline(always)]
136        fn new_empty() -> Self {
137            Self {
138                addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
139                max_tp: fidl::new_empty!(u16, D),
140                max_probability: fidl::new_empty!(u16, D),
141                basic_highest: fidl::new_empty!(u16, D),
142                basic_max_probability: fidl::new_empty!(u16, D),
143                probes: fidl::new_empty!(u64, D),
144                entries: fidl::new_empty!(fidl::encoding::UnboundedVector<StatsEntry>, D),
145            }
146        }
147
148        #[inline]
149        unsafe fn decode(
150            &mut self,
151            decoder: &mut fidl::encoding::Decoder<'_, D>,
152            offset: usize,
153            _depth: fidl::encoding::Depth,
154        ) -> fidl::Result<()> {
155            decoder.debug_check_bounds::<Self>(offset);
156            // Verify that padding bytes are zero.
157            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
158            let padval = unsafe { (ptr as *const u64).read_unaligned() };
159            let mask = 0xffff000000000000u64;
160            let maskedval = padval & mask;
161            if maskedval != 0 {
162                return Err(fidl::Error::NonZeroPadding {
163                    padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
164                });
165            }
166            fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.addr, decoder, offset + 0, _depth)?;
167            fidl::decode!(u16, D, &mut self.max_tp, decoder, offset + 6, _depth)?;
168            fidl::decode!(u16, D, &mut self.max_probability, decoder, offset + 8, _depth)?;
169            fidl::decode!(u16, D, &mut self.basic_highest, decoder, offset + 10, _depth)?;
170            fidl::decode!(u16, D, &mut self.basic_max_probability, decoder, offset + 12, _depth)?;
171            fidl::decode!(u64, D, &mut self.probes, decoder, offset + 16, _depth)?;
172            fidl::decode!(
173                fidl::encoding::UnboundedVector<StatsEntry>,
174                D,
175                &mut self.entries,
176                decoder,
177                offset + 24,
178                _depth
179            )?;
180            Ok(())
181        }
182    }
183
184    impl fidl::encoding::ValueTypeMarker for Peers {
185        type Borrowed<'a> = &'a Self;
186        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
187            value
188        }
189    }
190
191    unsafe impl fidl::encoding::TypeMarker for Peers {
192        type Owned = Self;
193
194        #[inline(always)]
195        fn inline_align(_context: fidl::encoding::Context) -> usize {
196            8
197        }
198
199        #[inline(always)]
200        fn inline_size(_context: fidl::encoding::Context) -> usize {
201            16
202        }
203    }
204
205    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Peers, D> for &Peers {
206        #[inline]
207        unsafe fn encode(
208            self,
209            encoder: &mut fidl::encoding::Encoder<'_, D>,
210            offset: usize,
211            _depth: fidl::encoding::Depth,
212        ) -> fidl::Result<()> {
213            encoder.debug_check_bounds::<Peers>(offset);
214            // Delegate to tuple encoding.
215            fidl::encoding::Encode::<Peers, D>::encode(
216                (
217                    <fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>> as fidl::encoding::ValueTypeMarker>::borrow(&self.addrs),
218                ),
219                encoder, offset, _depth
220            )
221        }
222    }
223    unsafe impl<
224            D: fidl::encoding::ResourceDialect,
225            T0: fidl::encoding::Encode<
226                fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>>,
227                D,
228            >,
229        > fidl::encoding::Encode<Peers, D> for (T0,)
230    {
231        #[inline]
232        unsafe fn encode(
233            self,
234            encoder: &mut fidl::encoding::Encoder<'_, D>,
235            offset: usize,
236            depth: fidl::encoding::Depth,
237        ) -> fidl::Result<()> {
238            encoder.debug_check_bounds::<Peers>(offset);
239            // Zero out padding regions. There's no need to apply masks
240            // because the unmasked parts will be overwritten by fields.
241            // Write the fields.
242            self.0.encode(encoder, offset + 0, depth)?;
243            Ok(())
244        }
245    }
246
247    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Peers {
248        #[inline(always)]
249        fn new_empty() -> Self {
250            Self {
251                addrs: fidl::new_empty!(
252                    fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>>,
253                    D
254                ),
255            }
256        }
257
258        #[inline]
259        unsafe fn decode(
260            &mut self,
261            decoder: &mut fidl::encoding::Decoder<'_, D>,
262            offset: usize,
263            _depth: fidl::encoding::Depth,
264        ) -> fidl::Result<()> {
265            decoder.debug_check_bounds::<Self>(offset);
266            // Verify that padding bytes are zero.
267            fidl::decode!(
268                fidl::encoding::UnboundedVector<fidl::encoding::Array<u8, 6>>,
269                D,
270                &mut self.addrs,
271                decoder,
272                offset + 0,
273                _depth
274            )?;
275            Ok(())
276        }
277    }
278
279    impl fidl::encoding::ValueTypeMarker for StatsEntry {
280        type Borrowed<'a> = &'a Self;
281        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
282            value
283        }
284    }
285
286    unsafe impl fidl::encoding::TypeMarker for StatsEntry {
287        type Owned = Self;
288
289        #[inline(always)]
290        fn inline_align(_context: fidl::encoding::Context) -> usize {
291            8
292        }
293
294        #[inline(always)]
295        fn inline_size(_context: fidl::encoding::Context) -> usize {
296            80
297        }
298    }
299
300    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<StatsEntry, D>
301        for &StatsEntry
302    {
303        #[inline]
304        unsafe fn encode(
305            self,
306            encoder: &mut fidl::encoding::Encoder<'_, D>,
307            offset: usize,
308            _depth: fidl::encoding::Depth,
309        ) -> fidl::Result<()> {
310            encoder.debug_check_bounds::<StatsEntry>(offset);
311            // Delegate to tuple encoding.
312            fidl::encoding::Encode::<StatsEntry, D>::encode(
313                (
314                    <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_vector_idx),
315                    <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow(
316                        &self.tx_vec_desc,
317                    ),
318                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.success_cur),
319                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.attempts_cur),
320                    <f32 as fidl::encoding::ValueTypeMarker>::borrow(&self.probability),
321                    <f32 as fidl::encoding::ValueTypeMarker>::borrow(&self.cur_tp),
322                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.success_total),
323                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.attempts_total),
324                    <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.probes_total),
325                    <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.probe_cycles_skipped),
326                ),
327                encoder,
328                offset,
329                _depth,
330            )
331        }
332    }
333    unsafe impl<
334            D: fidl::encoding::ResourceDialect,
335            T0: fidl::encoding::Encode<u16, D>,
336            T1: fidl::encoding::Encode<fidl::encoding::UnboundedString, D>,
337            T2: fidl::encoding::Encode<u64, D>,
338            T3: fidl::encoding::Encode<u64, D>,
339            T4: fidl::encoding::Encode<f32, D>,
340            T5: fidl::encoding::Encode<f32, D>,
341            T6: fidl::encoding::Encode<u64, D>,
342            T7: fidl::encoding::Encode<u64, D>,
343            T8: fidl::encoding::Encode<u64, D>,
344            T9: fidl::encoding::Encode<u8, D>,
345        > fidl::encoding::Encode<StatsEntry, D> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
346    {
347        #[inline]
348        unsafe fn encode(
349            self,
350            encoder: &mut fidl::encoding::Encoder<'_, D>,
351            offset: usize,
352            depth: fidl::encoding::Depth,
353        ) -> fidl::Result<()> {
354            encoder.debug_check_bounds::<StatsEntry>(offset);
355            // Zero out padding regions. There's no need to apply masks
356            // because the unmasked parts will be overwritten by fields.
357            unsafe {
358                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
359                (ptr as *mut u64).write_unaligned(0);
360            }
361            unsafe {
362                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(72);
363                (ptr as *mut u64).write_unaligned(0);
364            }
365            // Write the fields.
366            self.0.encode(encoder, offset + 0, depth)?;
367            self.1.encode(encoder, offset + 8, depth)?;
368            self.2.encode(encoder, offset + 24, depth)?;
369            self.3.encode(encoder, offset + 32, depth)?;
370            self.4.encode(encoder, offset + 40, depth)?;
371            self.5.encode(encoder, offset + 44, depth)?;
372            self.6.encode(encoder, offset + 48, depth)?;
373            self.7.encode(encoder, offset + 56, depth)?;
374            self.8.encode(encoder, offset + 64, depth)?;
375            self.9.encode(encoder, offset + 72, depth)?;
376            Ok(())
377        }
378    }
379
380    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for StatsEntry {
381        #[inline(always)]
382        fn new_empty() -> Self {
383            Self {
384                tx_vector_idx: fidl::new_empty!(u16, D),
385                tx_vec_desc: fidl::new_empty!(fidl::encoding::UnboundedString, D),
386                success_cur: fidl::new_empty!(u64, D),
387                attempts_cur: fidl::new_empty!(u64, D),
388                probability: fidl::new_empty!(f32, D),
389                cur_tp: fidl::new_empty!(f32, D),
390                success_total: fidl::new_empty!(u64, D),
391                attempts_total: fidl::new_empty!(u64, D),
392                probes_total: fidl::new_empty!(u64, D),
393                probe_cycles_skipped: fidl::new_empty!(u8, D),
394            }
395        }
396
397        #[inline]
398        unsafe fn decode(
399            &mut self,
400            decoder: &mut fidl::encoding::Decoder<'_, D>,
401            offset: usize,
402            _depth: fidl::encoding::Depth,
403        ) -> fidl::Result<()> {
404            decoder.debug_check_bounds::<Self>(offset);
405            // Verify that padding bytes are zero.
406            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
407            let padval = unsafe { (ptr as *const u64).read_unaligned() };
408            let mask = 0xffffffffffff0000u64;
409            let maskedval = padval & mask;
410            if maskedval != 0 {
411                return Err(fidl::Error::NonZeroPadding {
412                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
413                });
414            }
415            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(72) };
416            let padval = unsafe { (ptr as *const u64).read_unaligned() };
417            let mask = 0xffffffffffffff00u64;
418            let maskedval = padval & mask;
419            if maskedval != 0 {
420                return Err(fidl::Error::NonZeroPadding {
421                    padding_start: offset + 72 + ((mask as u64).trailing_zeros() / 8) as usize,
422                });
423            }
424            fidl::decode!(u16, D, &mut self.tx_vector_idx, decoder, offset + 0, _depth)?;
425            fidl::decode!(
426                fidl::encoding::UnboundedString,
427                D,
428                &mut self.tx_vec_desc,
429                decoder,
430                offset + 8,
431                _depth
432            )?;
433            fidl::decode!(u64, D, &mut self.success_cur, decoder, offset + 24, _depth)?;
434            fidl::decode!(u64, D, &mut self.attempts_cur, decoder, offset + 32, _depth)?;
435            fidl::decode!(f32, D, &mut self.probability, decoder, offset + 40, _depth)?;
436            fidl::decode!(f32, D, &mut self.cur_tp, decoder, offset + 44, _depth)?;
437            fidl::decode!(u64, D, &mut self.success_total, decoder, offset + 48, _depth)?;
438            fidl::decode!(u64, D, &mut self.attempts_total, decoder, offset + 56, _depth)?;
439            fidl::decode!(u64, D, &mut self.probes_total, decoder, offset + 64, _depth)?;
440            fidl::decode!(u8, D, &mut self.probe_cycles_skipped, decoder, offset + 72, _depth)?;
441            Ok(())
442        }
443    }
444}