1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10use futures::future::{self, MaybeDone, TryFutureExt};
11use zx_status;
12
13#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
14pub struct Config {
15 pub back_off_time_between_pull_samples_sec: i64,
16 pub disable_delays: bool,
17 pub early_exit: bool,
18 pub first_sampling_delay_sec: i64,
19 pub has_always_on_counter: bool,
20 pub has_real_time_clock: bool,
21 pub initial_frequency_ppm: u32,
22 pub max_frequency_error_ppm: u32,
23 pub monitor_time_source_url: String,
24 pub monitor_uses_pull: bool,
25 pub oscillator_error_std_dev_ppm: u32,
26 pub power_topology_integration_enabled: bool,
27 pub primary_time_source_url: String,
28 pub primary_uses_pull: bool,
29 pub serve_fuchsia_time_alarms: bool,
30 pub serve_fuchsia_time_external_adjust: bool,
31 pub serve_test_protocols: bool,
32 pub utc_start_at_startup: bool,
33 pub utc_start_at_startup_when_invalid_rtc: bool,
34}
35
36impl fidl::Persistable for Config {}
37
38mod internal {
39 use super::*;
40
41 impl fidl::encoding::ValueTypeMarker for Config {
42 type Borrowed<'a> = &'a Self;
43 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
44 value
45 }
46 }
47
48 unsafe impl fidl::encoding::TypeMarker for Config {
49 type Owned = Self;
50
51 #[inline(always)]
52 fn inline_align(_context: fidl::encoding::Context) -> usize {
53 8
54 }
55
56 #[inline(always)]
57 fn inline_size(_context: fidl::encoding::Context) -> usize {
58 96
59 }
60 }
61
62 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Config, D> for &Config {
63 #[inline]
64 unsafe fn encode(
65 self,
66 encoder: &mut fidl::encoding::Encoder<'_, D>,
67 offset: usize,
68 _depth: fidl::encoding::Depth,
69 ) -> fidl::Result<()> {
70 encoder.debug_check_bounds::<Config>(offset);
71 fidl::encoding::Encode::<Config, D>::encode(
73 (
74 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.back_off_time_between_pull_samples_sec),
75 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.disable_delays),
76 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.early_exit),
77 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.first_sampling_delay_sec),
78 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.has_always_on_counter),
79 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.has_real_time_clock),
80 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.initial_frequency_ppm),
81 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.max_frequency_error_ppm),
82 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.monitor_time_source_url),
83 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.monitor_uses_pull),
84 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.oscillator_error_std_dev_ppm),
85 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.power_topology_integration_enabled),
86 <fidl::encoding::BoundedString<4096> as fidl::encoding::ValueTypeMarker>::borrow(&self.primary_time_source_url),
87 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.primary_uses_pull),
88 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.serve_fuchsia_time_alarms),
89 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.serve_fuchsia_time_external_adjust),
90 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.serve_test_protocols),
91 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.utc_start_at_startup),
92 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.utc_start_at_startup_when_invalid_rtc),
93 ),
94 encoder, offset, _depth
95 )
96 }
97 }
98 unsafe impl<
99 D: fidl::encoding::ResourceDialect,
100 T0: fidl::encoding::Encode<i64, D>,
101 T1: fidl::encoding::Encode<bool, D>,
102 T2: fidl::encoding::Encode<bool, D>,
103 T3: fidl::encoding::Encode<i64, D>,
104 T4: fidl::encoding::Encode<bool, D>,
105 T5: fidl::encoding::Encode<bool, D>,
106 T6: fidl::encoding::Encode<u32, D>,
107 T7: fidl::encoding::Encode<u32, D>,
108 T8: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
109 T9: fidl::encoding::Encode<bool, D>,
110 T10: fidl::encoding::Encode<u32, D>,
111 T11: fidl::encoding::Encode<bool, D>,
112 T12: fidl::encoding::Encode<fidl::encoding::BoundedString<4096>, D>,
113 T13: fidl::encoding::Encode<bool, D>,
114 T14: fidl::encoding::Encode<bool, D>,
115 T15: fidl::encoding::Encode<bool, D>,
116 T16: fidl::encoding::Encode<bool, D>,
117 T17: fidl::encoding::Encode<bool, D>,
118 T18: fidl::encoding::Encode<bool, D>,
119 > fidl::encoding::Encode<Config, D>
120 for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)
121 {
122 #[inline]
123 unsafe fn encode(
124 self,
125 encoder: &mut fidl::encoding::Encoder<'_, D>,
126 offset: usize,
127 depth: fidl::encoding::Depth,
128 ) -> fidl::Result<()> {
129 encoder.debug_check_bounds::<Config>(offset);
130 unsafe {
133 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
134 (ptr as *mut u64).write_unaligned(0);
135 }
136 unsafe {
137 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(24);
138 (ptr as *mut u64).write_unaligned(0);
139 }
140 unsafe {
141 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(32);
142 (ptr as *mut u64).write_unaligned(0);
143 }
144 unsafe {
145 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(56);
146 (ptr as *mut u64).write_unaligned(0);
147 }
148 unsafe {
149 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(64);
150 (ptr as *mut u64).write_unaligned(0);
151 }
152 unsafe {
153 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(88);
154 (ptr as *mut u64).write_unaligned(0);
155 }
156 self.0.encode(encoder, offset + 0, depth)?;
158 self.1.encode(encoder, offset + 8, depth)?;
159 self.2.encode(encoder, offset + 9, depth)?;
160 self.3.encode(encoder, offset + 16, depth)?;
161 self.4.encode(encoder, offset + 24, depth)?;
162 self.5.encode(encoder, offset + 25, depth)?;
163 self.6.encode(encoder, offset + 28, depth)?;
164 self.7.encode(encoder, offset + 32, depth)?;
165 self.8.encode(encoder, offset + 40, depth)?;
166 self.9.encode(encoder, offset + 56, depth)?;
167 self.10.encode(encoder, offset + 60, depth)?;
168 self.11.encode(encoder, offset + 64, depth)?;
169 self.12.encode(encoder, offset + 72, depth)?;
170 self.13.encode(encoder, offset + 88, depth)?;
171 self.14.encode(encoder, offset + 89, depth)?;
172 self.15.encode(encoder, offset + 90, depth)?;
173 self.16.encode(encoder, offset + 91, depth)?;
174 self.17.encode(encoder, offset + 92, depth)?;
175 self.18.encode(encoder, offset + 93, depth)?;
176 Ok(())
177 }
178 }
179
180 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Config {
181 #[inline(always)]
182 fn new_empty() -> Self {
183 Self {
184 back_off_time_between_pull_samples_sec: fidl::new_empty!(i64, D),
185 disable_delays: fidl::new_empty!(bool, D),
186 early_exit: fidl::new_empty!(bool, D),
187 first_sampling_delay_sec: fidl::new_empty!(i64, D),
188 has_always_on_counter: fidl::new_empty!(bool, D),
189 has_real_time_clock: fidl::new_empty!(bool, D),
190 initial_frequency_ppm: fidl::new_empty!(u32, D),
191 max_frequency_error_ppm: fidl::new_empty!(u32, D),
192 monitor_time_source_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
193 monitor_uses_pull: fidl::new_empty!(bool, D),
194 oscillator_error_std_dev_ppm: fidl::new_empty!(u32, D),
195 power_topology_integration_enabled: fidl::new_empty!(bool, D),
196 primary_time_source_url: fidl::new_empty!(fidl::encoding::BoundedString<4096>, D),
197 primary_uses_pull: fidl::new_empty!(bool, D),
198 serve_fuchsia_time_alarms: fidl::new_empty!(bool, D),
199 serve_fuchsia_time_external_adjust: fidl::new_empty!(bool, D),
200 serve_test_protocols: fidl::new_empty!(bool, D),
201 utc_start_at_startup: fidl::new_empty!(bool, D),
202 utc_start_at_startup_when_invalid_rtc: fidl::new_empty!(bool, D),
203 }
204 }
205
206 #[inline]
207 unsafe fn decode(
208 &mut self,
209 decoder: &mut fidl::encoding::Decoder<'_, D>,
210 offset: usize,
211 _depth: fidl::encoding::Depth,
212 ) -> fidl::Result<()> {
213 decoder.debug_check_bounds::<Self>(offset);
214 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
216 let padval = unsafe { (ptr as *const u64).read_unaligned() };
217 let mask = 0xffffffffffff0000u64;
218 let maskedval = padval & mask;
219 if maskedval != 0 {
220 return Err(fidl::Error::NonZeroPadding {
221 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
222 });
223 }
224 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(24) };
225 let padval = unsafe { (ptr as *const u64).read_unaligned() };
226 let mask = 0xffff0000u64;
227 let maskedval = padval & mask;
228 if maskedval != 0 {
229 return Err(fidl::Error::NonZeroPadding {
230 padding_start: offset + 24 + ((mask as u64).trailing_zeros() / 8) as usize,
231 });
232 }
233 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(32) };
234 let padval = unsafe { (ptr as *const u64).read_unaligned() };
235 let mask = 0xffffffff00000000u64;
236 let maskedval = padval & mask;
237 if maskedval != 0 {
238 return Err(fidl::Error::NonZeroPadding {
239 padding_start: offset + 32 + ((mask as u64).trailing_zeros() / 8) as usize,
240 });
241 }
242 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(56) };
243 let padval = unsafe { (ptr as *const u64).read_unaligned() };
244 let mask = 0xffffff00u64;
245 let maskedval = padval & mask;
246 if maskedval != 0 {
247 return Err(fidl::Error::NonZeroPadding {
248 padding_start: offset + 56 + ((mask as u64).trailing_zeros() / 8) as usize,
249 });
250 }
251 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(64) };
252 let padval = unsafe { (ptr as *const u64).read_unaligned() };
253 let mask = 0xffffffffffffff00u64;
254 let maskedval = padval & mask;
255 if maskedval != 0 {
256 return Err(fidl::Error::NonZeroPadding {
257 padding_start: offset + 64 + ((mask as u64).trailing_zeros() / 8) as usize,
258 });
259 }
260 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(88) };
261 let padval = unsafe { (ptr as *const u64).read_unaligned() };
262 let mask = 0xffff000000000000u64;
263 let maskedval = padval & mask;
264 if maskedval != 0 {
265 return Err(fidl::Error::NonZeroPadding {
266 padding_start: offset + 88 + ((mask as u64).trailing_zeros() / 8) as usize,
267 });
268 }
269 fidl::decode!(
270 i64,
271 D,
272 &mut self.back_off_time_between_pull_samples_sec,
273 decoder,
274 offset + 0,
275 _depth
276 )?;
277 fidl::decode!(bool, D, &mut self.disable_delays, decoder, offset + 8, _depth)?;
278 fidl::decode!(bool, D, &mut self.early_exit, decoder, offset + 9, _depth)?;
279 fidl::decode!(
280 i64,
281 D,
282 &mut self.first_sampling_delay_sec,
283 decoder,
284 offset + 16,
285 _depth
286 )?;
287 fidl::decode!(bool, D, &mut self.has_always_on_counter, decoder, offset + 24, _depth)?;
288 fidl::decode!(bool, D, &mut self.has_real_time_clock, decoder, offset + 25, _depth)?;
289 fidl::decode!(u32, D, &mut self.initial_frequency_ppm, decoder, offset + 28, _depth)?;
290 fidl::decode!(u32, D, &mut self.max_frequency_error_ppm, decoder, offset + 32, _depth)?;
291 fidl::decode!(
292 fidl::encoding::BoundedString<4096>,
293 D,
294 &mut self.monitor_time_source_url,
295 decoder,
296 offset + 40,
297 _depth
298 )?;
299 fidl::decode!(bool, D, &mut self.monitor_uses_pull, decoder, offset + 56, _depth)?;
300 fidl::decode!(
301 u32,
302 D,
303 &mut self.oscillator_error_std_dev_ppm,
304 decoder,
305 offset + 60,
306 _depth
307 )?;
308 fidl::decode!(
309 bool,
310 D,
311 &mut self.power_topology_integration_enabled,
312 decoder,
313 offset + 64,
314 _depth
315 )?;
316 fidl::decode!(
317 fidl::encoding::BoundedString<4096>,
318 D,
319 &mut self.primary_time_source_url,
320 decoder,
321 offset + 72,
322 _depth
323 )?;
324 fidl::decode!(bool, D, &mut self.primary_uses_pull, decoder, offset + 88, _depth)?;
325 fidl::decode!(
326 bool,
327 D,
328 &mut self.serve_fuchsia_time_alarms,
329 decoder,
330 offset + 89,
331 _depth
332 )?;
333 fidl::decode!(
334 bool,
335 D,
336 &mut self.serve_fuchsia_time_external_adjust,
337 decoder,
338 offset + 90,
339 _depth
340 )?;
341 fidl::decode!(bool, D, &mut self.serve_test_protocols, decoder, offset + 91, _depth)?;
342 fidl::decode!(bool, D, &mut self.utc_start_at_startup, decoder, offset + 92, _depth)?;
343 fidl::decode!(
344 bool,
345 D,
346 &mut self.utc_start_at_startup_when_invalid_rtc,
347 decoder,
348 offset + 93,
349 _depth
350 )?;
351 Ok(())
352 }
353 }
354}