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