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