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