fidl_cf_sc_internal_btgapconfig/
fidl_cf_sc_internal_btgapconfig.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 bredr_connectable: bool,
16    pub bredr_security_mode: String,
17    pub le_background_scanning: bool,
18    pub le_privacy: bool,
19    pub le_security_mode: String,
20}
21
22impl fidl::Persistable for Config {}
23
24mod internal {
25    use super::*;
26
27    impl fidl::encoding::ValueTypeMarker for Config {
28        type Borrowed<'a> = &'a Self;
29        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
30            value
31        }
32    }
33
34    unsafe impl fidl::encoding::TypeMarker for Config {
35        type Owned = Self;
36
37        #[inline(always)]
38        fn inline_align(_context: fidl::encoding::Context) -> usize {
39            8
40        }
41
42        #[inline(always)]
43        fn inline_size(_context: fidl::encoding::Context) -> usize {
44            48
45        }
46    }
47
48    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
49        #[inline]
50        unsafe fn encode(
51            self,
52            encoder: &mut fidl::encoding::Encoder<'_, D>,
53            offset: usize,
54            _depth: fidl::encoding::Depth,
55        ) -> fidl::Result<()> {
56            encoder.debug_check_bounds::<Config>(offset);
57            // Delegate to tuple encoding.
58            fidl::encoding::Encode::<Config, D>::encode(
59                (
60                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.bredr_connectable),
61                    <fidl::encoding::BoundedString<21> as fidl::encoding::ValueTypeMarker>::borrow(
62                        &self.bredr_security_mode,
63                    ),
64                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.le_background_scanning),
65                    <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.le_privacy),
66                    <fidl::encoding::BoundedString<21> as fidl::encoding::ValueTypeMarker>::borrow(
67                        &self.le_security_mode,
68                    ),
69                ),
70                encoder,
71                offset,
72                _depth,
73            )
74        }
75    }
76    unsafe impl<
77            D: fidl::encoding::ResourceDialect,
78            T0: fidl::encoding::Encode<bool, D>,
79            T1: fidl::encoding::Encode<fidl::encoding::BoundedString<21>, D>,
80            T2: fidl::encoding::Encode<bool, D>,
81            T3: fidl::encoding::Encode<bool, D>,
82            T4: fidl::encoding::Encode<fidl::encoding::BoundedString<21>, D>,
83        > fidl::encoding::Encode<Config, D> for (T0, T1, T2, T3, T4)
84    {
85        #[inline]
86        unsafe fn encode(
87            self,
88            encoder: &mut fidl::encoding::Encoder<'_, D>,
89            offset: usize,
90            depth: fidl::encoding::Depth,
91        ) -> fidl::Result<()> {
92            encoder.debug_check_bounds::<Config>(offset);
93            // Zero out padding regions. There's no need to apply masks
94            // because the unmasked parts will be overwritten by fields.
95            unsafe {
96                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
97                (ptr as *mut u64).write_unaligned(0);
98            }
99            unsafe {
100                let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
101                (ptr as *mut u64).write_unaligned(0);
102            }
103            // Write the fields.
104            self.0.encode(encoder, offset + 0, depth)?;
105            self.1.encode(encoder, offset + 8, depth)?;
106            self.2.encode(encoder, offset + 24, depth)?;
107            self.3.encode(encoder, offset + 25, depth)?;
108            self.4.encode(encoder, offset + 32, depth)?;
109            Ok(())
110        }
111    }
112
113    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
114        #[inline(always)]
115        fn new_empty() -> Self {
116            Self {
117                bredr_connectable: fidl::new_empty!(bool, D),
118                bredr_security_mode: fidl::new_empty!(fidl::encoding::BoundedString<21>, D),
119                le_background_scanning: fidl::new_empty!(bool, D),
120                le_privacy: fidl::new_empty!(bool, D),
121                le_security_mode: fidl::new_empty!(fidl::encoding::BoundedString<21>, D),
122            }
123        }
124
125        #[inline]
126        unsafe fn decode(
127            &mut self,
128            decoder: &mut fidl::encoding::Decoder<'_, D>,
129            offset: usize,
130            _depth: fidl::encoding::Depth,
131        ) -> fidl::Result<()> {
132            decoder.debug_check_bounds::<Self>(offset);
133            // Verify that padding bytes are zero.
134            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
135            let padval = unsafe { (ptr as *const u64).read_unaligned() };
136            let mask = 0xffffffffffffff00u64;
137            let maskedval = padval & mask;
138            if maskedval != 0 {
139                return Err(fidl::Error::NonZeroPadding {
140                    padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
141                });
142            }
143            let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
144            let padval = unsafe { (ptr as *const u64).read_unaligned() };
145            let mask = 0xffffffffffff0000u64;
146            let maskedval = padval & mask;
147            if maskedval != 0 {
148                return Err(fidl::Error::NonZeroPadding {
149                    padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
150                });
151            }
152            fidl::decode!(bool, D, &mut self.bredr_connectable, decoder, offset + 0, _depth)?;
153            fidl::decode!(
154                fidl::encoding::BoundedString<21>,
155                D,
156                &mut self.bredr_security_mode,
157                decoder,
158                offset + 8,
159                _depth
160            )?;
161            fidl::decode!(bool, D, &mut self.le_background_scanning, decoder, offset + 24, _depth)?;
162            fidl::decode!(bool, D, &mut self.le_privacy, decoder, offset + 25, _depth)?;
163            fidl::decode!(
164                fidl::encoding::BoundedString<21>,
165                D,
166                &mut self.le_security_mode,
167                decoder,
168                offset + 32,
169                _depth
170            )?;
171            Ok(())
172        }
173    }
174}