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