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