1#![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 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 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 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 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}