fidl_fuchsia_hardware_rtc__common/
fidl_fuchsia_hardware_rtc__common.rs1#![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, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12#[repr(C)]
13pub struct DeviceSet2Request {
14 pub rtc: Time,
15}
16
17impl fidl::Persistable for DeviceSet2Request {}
18
19#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
20#[repr(C)]
21pub struct DeviceGetResponse {
22 pub rtc: Time,
23}
24
25impl fidl::Persistable for DeviceGetResponse {}
26
27#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
28#[repr(C)]
29pub struct Time {
30 pub seconds: u8,
31 pub minutes: u8,
32 pub hours: u8,
33 pub day: u8,
34 pub month: u8,
35 pub year: u16,
36}
37
38impl fidl::Persistable for Time {}
39
40pub mod device_ordinals {
41 pub const GET: u64 = 0x27fdad10b3816ff4;
42 pub const SET2: u64 = 0x16698df780253ae5;
43}
44
45mod internal {
46 use super::*;
47
48 impl fidl::encoding::ValueTypeMarker for DeviceSet2Request {
49 type Borrowed<'a> = &'a Self;
50 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
51 value
52 }
53 }
54
55 unsafe impl fidl::encoding::TypeMarker for DeviceSet2Request {
56 type Owned = Self;
57
58 #[inline(always)]
59 fn inline_align(_context: fidl::encoding::Context) -> usize {
60 2
61 }
62
63 #[inline(always)]
64 fn inline_size(_context: fidl::encoding::Context) -> usize {
65 8
66 }
67 }
68
69 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceSet2Request, D>
70 for &DeviceSet2Request
71 {
72 #[inline]
73 unsafe fn encode(
74 self,
75 encoder: &mut fidl::encoding::Encoder<'_, D>,
76 offset: usize,
77 _depth: fidl::encoding::Depth,
78 ) -> fidl::Result<()> {
79 encoder.debug_check_bounds::<DeviceSet2Request>(offset);
80 unsafe {
81 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
83 (buf_ptr as *mut DeviceSet2Request)
84 .write_unaligned((self as *const DeviceSet2Request).read());
85 let padding_ptr = buf_ptr.offset(4) as *mut u16;
88 let padding_mask = 0xff00u16;
89 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
90 }
91 Ok(())
92 }
93 }
94 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Time, D>>
95 fidl::encoding::Encode<DeviceSet2Request, D> for (T0,)
96 {
97 #[inline]
98 unsafe fn encode(
99 self,
100 encoder: &mut fidl::encoding::Encoder<'_, D>,
101 offset: usize,
102 depth: fidl::encoding::Depth,
103 ) -> fidl::Result<()> {
104 encoder.debug_check_bounds::<DeviceSet2Request>(offset);
105 self.0.encode(encoder, offset + 0, depth)?;
109 Ok(())
110 }
111 }
112
113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceSet2Request {
114 #[inline(always)]
115 fn new_empty() -> Self {
116 Self { rtc: fidl::new_empty!(Time, D) }
117 }
118
119 #[inline]
120 unsafe fn decode(
121 &mut self,
122 decoder: &mut fidl::encoding::Decoder<'_, D>,
123 offset: usize,
124 _depth: fidl::encoding::Depth,
125 ) -> fidl::Result<()> {
126 decoder.debug_check_bounds::<Self>(offset);
127 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
128 let ptr = unsafe { buf_ptr.offset(4) };
130 let padval = unsafe { (ptr as *const u16).read_unaligned() };
131 let mask = 0xff00u16;
132 let maskedval = padval & mask;
133 if maskedval != 0 {
134 return Err(fidl::Error::NonZeroPadding {
135 padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
136 });
137 }
138 unsafe {
140 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
141 }
142 Ok(())
143 }
144 }
145
146 impl fidl::encoding::ValueTypeMarker for DeviceGetResponse {
147 type Borrowed<'a> = &'a Self;
148 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
149 value
150 }
151 }
152
153 unsafe impl fidl::encoding::TypeMarker for DeviceGetResponse {
154 type Owned = Self;
155
156 #[inline(always)]
157 fn inline_align(_context: fidl::encoding::Context) -> usize {
158 2
159 }
160
161 #[inline(always)]
162 fn inline_size(_context: fidl::encoding::Context) -> usize {
163 8
164 }
165 }
166
167 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceGetResponse, D>
168 for &DeviceGetResponse
169 {
170 #[inline]
171 unsafe fn encode(
172 self,
173 encoder: &mut fidl::encoding::Encoder<'_, D>,
174 offset: usize,
175 _depth: fidl::encoding::Depth,
176 ) -> fidl::Result<()> {
177 encoder.debug_check_bounds::<DeviceGetResponse>(offset);
178 unsafe {
179 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
181 (buf_ptr as *mut DeviceGetResponse)
182 .write_unaligned((self as *const DeviceGetResponse).read());
183 let padding_ptr = buf_ptr.offset(4) as *mut u16;
186 let padding_mask = 0xff00u16;
187 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
188 }
189 Ok(())
190 }
191 }
192 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Time, D>>
193 fidl::encoding::Encode<DeviceGetResponse, D> for (T0,)
194 {
195 #[inline]
196 unsafe fn encode(
197 self,
198 encoder: &mut fidl::encoding::Encoder<'_, D>,
199 offset: usize,
200 depth: fidl::encoding::Depth,
201 ) -> fidl::Result<()> {
202 encoder.debug_check_bounds::<DeviceGetResponse>(offset);
203 self.0.encode(encoder, offset + 0, depth)?;
207 Ok(())
208 }
209 }
210
211 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceGetResponse {
212 #[inline(always)]
213 fn new_empty() -> Self {
214 Self { rtc: fidl::new_empty!(Time, D) }
215 }
216
217 #[inline]
218 unsafe fn decode(
219 &mut self,
220 decoder: &mut fidl::encoding::Decoder<'_, D>,
221 offset: usize,
222 _depth: fidl::encoding::Depth,
223 ) -> fidl::Result<()> {
224 decoder.debug_check_bounds::<Self>(offset);
225 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
226 let ptr = unsafe { buf_ptr.offset(4) };
228 let padval = unsafe { (ptr as *const u16).read_unaligned() };
229 let mask = 0xff00u16;
230 let maskedval = padval & mask;
231 if maskedval != 0 {
232 return Err(fidl::Error::NonZeroPadding {
233 padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
234 });
235 }
236 unsafe {
238 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
239 }
240 Ok(())
241 }
242 }
243
244 impl fidl::encoding::ValueTypeMarker for Time {
245 type Borrowed<'a> = &'a Self;
246 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
247 value
248 }
249 }
250
251 unsafe impl fidl::encoding::TypeMarker for Time {
252 type Owned = Self;
253
254 #[inline(always)]
255 fn inline_align(_context: fidl::encoding::Context) -> usize {
256 2
257 }
258
259 #[inline(always)]
260 fn inline_size(_context: fidl::encoding::Context) -> usize {
261 8
262 }
263 }
264
265 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Time, D> for &Time {
266 #[inline]
267 unsafe fn encode(
268 self,
269 encoder: &mut fidl::encoding::Encoder<'_, D>,
270 offset: usize,
271 _depth: fidl::encoding::Depth,
272 ) -> fidl::Result<()> {
273 encoder.debug_check_bounds::<Time>(offset);
274 unsafe {
275 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
277 (buf_ptr as *mut Time).write_unaligned((self as *const Time).read());
278 let padding_ptr = buf_ptr.offset(4) as *mut u16;
281 let padding_mask = 0xff00u16;
282 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
283 }
284 Ok(())
285 }
286 }
287 unsafe impl<
288 D: fidl::encoding::ResourceDialect,
289 T0: fidl::encoding::Encode<u8, D>,
290 T1: fidl::encoding::Encode<u8, D>,
291 T2: fidl::encoding::Encode<u8, D>,
292 T3: fidl::encoding::Encode<u8, D>,
293 T4: fidl::encoding::Encode<u8, D>,
294 T5: fidl::encoding::Encode<u16, D>,
295 > fidl::encoding::Encode<Time, D> for (T0, T1, T2, T3, T4, T5)
296 {
297 #[inline]
298 unsafe fn encode(
299 self,
300 encoder: &mut fidl::encoding::Encoder<'_, D>,
301 offset: usize,
302 depth: fidl::encoding::Depth,
303 ) -> fidl::Result<()> {
304 encoder.debug_check_bounds::<Time>(offset);
305 unsafe {
308 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(4);
309 (ptr as *mut u16).write_unaligned(0);
310 }
311 self.0.encode(encoder, offset + 0, depth)?;
313 self.1.encode(encoder, offset + 1, depth)?;
314 self.2.encode(encoder, offset + 2, depth)?;
315 self.3.encode(encoder, offset + 3, depth)?;
316 self.4.encode(encoder, offset + 4, depth)?;
317 self.5.encode(encoder, offset + 6, depth)?;
318 Ok(())
319 }
320 }
321
322 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Time {
323 #[inline(always)]
324 fn new_empty() -> Self {
325 Self {
326 seconds: fidl::new_empty!(u8, D),
327 minutes: fidl::new_empty!(u8, D),
328 hours: fidl::new_empty!(u8, D),
329 day: fidl::new_empty!(u8, D),
330 month: fidl::new_empty!(u8, D),
331 year: fidl::new_empty!(u16, D),
332 }
333 }
334
335 #[inline]
336 unsafe fn decode(
337 &mut self,
338 decoder: &mut fidl::encoding::Decoder<'_, D>,
339 offset: usize,
340 _depth: fidl::encoding::Depth,
341 ) -> fidl::Result<()> {
342 decoder.debug_check_bounds::<Self>(offset);
343 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
344 let ptr = unsafe { buf_ptr.offset(4) };
346 let padval = unsafe { (ptr as *const u16).read_unaligned() };
347 let mask = 0xff00u16;
348 let maskedval = padval & mask;
349 if maskedval != 0 {
350 return Err(fidl::Error::NonZeroPadding {
351 padding_start: offset + 4 + ((mask as u64).trailing_zeros() / 8) as usize,
352 });
353 }
354 unsafe {
356 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
357 }
358 Ok(())
359 }
360 }
361}