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 _};
10pub use fidl_fuchsia_hardware_google_nanohub_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct DeviceDownloadFirmwareRequest {
16 pub firmware: fidl::Vmo,
17 pub offset: u64,
18}
19
20impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
21 for DeviceDownloadFirmwareRequest
22{
23}
24
25#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
26pub struct DeviceMarker;
27
28impl fidl::endpoints::ProtocolMarker for DeviceMarker {
29 type Proxy = DeviceProxy;
30 type RequestStream = DeviceRequestStream;
31 #[cfg(target_os = "fuchsia")]
32 type SynchronousProxy = DeviceSynchronousProxy;
33
34 const DEBUG_NAME: &'static str = "fuchsia.hardware.google.nanohub.Device";
35}
36impl fidl::endpoints::DiscoverableProtocolMarker for DeviceMarker {}
37pub type DeviceDownloadFirmwareResult = Result<(), i32>;
38
39pub trait DeviceProxyInterface: Send + Sync {
40 type DownloadFirmwareResponseFut: std::future::Future<Output = Result<DeviceDownloadFirmwareResult, fidl::Error>>
41 + Send;
42 fn r#download_firmware(
43 &self,
44 firmware: fidl::Vmo,
45 offset: u64,
46 ) -> Self::DownloadFirmwareResponseFut;
47}
48#[derive(Debug)]
49#[cfg(target_os = "fuchsia")]
50pub struct DeviceSynchronousProxy {
51 client: fidl::client::sync::Client,
52}
53
54#[cfg(target_os = "fuchsia")]
55impl fidl::endpoints::SynchronousProxy for DeviceSynchronousProxy {
56 type Proxy = DeviceProxy;
57 type Protocol = DeviceMarker;
58
59 fn from_channel(inner: fidl::Channel) -> Self {
60 Self::new(inner)
61 }
62
63 fn into_channel(self) -> fidl::Channel {
64 self.client.into_channel()
65 }
66
67 fn as_channel(&self) -> &fidl::Channel {
68 self.client.as_channel()
69 }
70}
71
72#[cfg(target_os = "fuchsia")]
73impl DeviceSynchronousProxy {
74 pub fn new(channel: fidl::Channel) -> Self {
75 let protocol_name = <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
76 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
77 }
78
79 pub fn into_channel(self) -> fidl::Channel {
80 self.client.into_channel()
81 }
82
83 pub fn wait_for_event(
86 &self,
87 deadline: zx::MonotonicInstant,
88 ) -> Result<DeviceEvent, fidl::Error> {
89 DeviceEvent::decode(self.client.wait_for_event(deadline)?)
90 }
91
92 pub fn r#download_firmware(
94 &self,
95 mut firmware: fidl::Vmo,
96 mut offset: u64,
97 ___deadline: zx::MonotonicInstant,
98 ) -> Result<DeviceDownloadFirmwareResult, fidl::Error> {
99 let _response = self.client.send_query::<
100 DeviceDownloadFirmwareRequest,
101 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
102 >(
103 (firmware, offset,),
104 0x7bba8137e24661e5,
105 fidl::encoding::DynamicFlags::empty(),
106 ___deadline,
107 )?;
108 Ok(_response.map(|x| x))
109 }
110}
111
112#[derive(Debug, Clone)]
113pub struct DeviceProxy {
114 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
115}
116
117impl fidl::endpoints::Proxy for DeviceProxy {
118 type Protocol = DeviceMarker;
119
120 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
121 Self::new(inner)
122 }
123
124 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
125 self.client.into_channel().map_err(|client| Self { client })
126 }
127
128 fn as_channel(&self) -> &::fidl::AsyncChannel {
129 self.client.as_channel()
130 }
131}
132
133impl DeviceProxy {
134 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
136 let protocol_name = <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
137 Self { client: fidl::client::Client::new(channel, protocol_name) }
138 }
139
140 pub fn take_event_stream(&self) -> DeviceEventStream {
146 DeviceEventStream { event_receiver: self.client.take_event_receiver() }
147 }
148
149 pub fn r#download_firmware(
151 &self,
152 mut firmware: fidl::Vmo,
153 mut offset: u64,
154 ) -> fidl::client::QueryResponseFut<
155 DeviceDownloadFirmwareResult,
156 fidl::encoding::DefaultFuchsiaResourceDialect,
157 > {
158 DeviceProxyInterface::r#download_firmware(self, firmware, offset)
159 }
160}
161
162impl DeviceProxyInterface for DeviceProxy {
163 type DownloadFirmwareResponseFut = fidl::client::QueryResponseFut<
164 DeviceDownloadFirmwareResult,
165 fidl::encoding::DefaultFuchsiaResourceDialect,
166 >;
167 fn r#download_firmware(
168 &self,
169 mut firmware: fidl::Vmo,
170 mut offset: u64,
171 ) -> Self::DownloadFirmwareResponseFut {
172 fn _decode(
173 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
174 ) -> Result<DeviceDownloadFirmwareResult, fidl::Error> {
175 let _response = fidl::client::decode_transaction_body::<
176 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
177 fidl::encoding::DefaultFuchsiaResourceDialect,
178 0x7bba8137e24661e5,
179 >(_buf?)?;
180 Ok(_response.map(|x| x))
181 }
182 self.client
183 .send_query_and_decode::<DeviceDownloadFirmwareRequest, DeviceDownloadFirmwareResult>(
184 (firmware, offset),
185 0x7bba8137e24661e5,
186 fidl::encoding::DynamicFlags::empty(),
187 _decode,
188 )
189 }
190}
191
192pub struct DeviceEventStream {
193 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
194}
195
196impl std::marker::Unpin for DeviceEventStream {}
197
198impl futures::stream::FusedStream for DeviceEventStream {
199 fn is_terminated(&self) -> bool {
200 self.event_receiver.is_terminated()
201 }
202}
203
204impl futures::Stream for DeviceEventStream {
205 type Item = Result<DeviceEvent, fidl::Error>;
206
207 fn poll_next(
208 mut self: std::pin::Pin<&mut Self>,
209 cx: &mut std::task::Context<'_>,
210 ) -> std::task::Poll<Option<Self::Item>> {
211 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
212 &mut self.event_receiver,
213 cx
214 )?) {
215 Some(buf) => std::task::Poll::Ready(Some(DeviceEvent::decode(buf))),
216 None => std::task::Poll::Ready(None),
217 }
218 }
219}
220
221#[derive(Debug)]
222pub enum DeviceEvent {
223 #[non_exhaustive]
224 _UnknownEvent {
225 ordinal: u64,
227 },
228}
229
230impl DeviceEvent {
231 fn decode(
233 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
234 ) -> Result<DeviceEvent, fidl::Error> {
235 let (bytes, _handles) = buf.split_mut();
236 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
237 debug_assert_eq!(tx_header.tx_id, 0);
238 match tx_header.ordinal {
239 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
240 Ok(DeviceEvent::_UnknownEvent { ordinal: tx_header.ordinal })
241 }
242 _ => Err(fidl::Error::UnknownOrdinal {
243 ordinal: tx_header.ordinal,
244 protocol_name: <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
245 }),
246 }
247 }
248}
249
250pub struct DeviceRequestStream {
252 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
253 is_terminated: bool,
254}
255
256impl std::marker::Unpin for DeviceRequestStream {}
257
258impl futures::stream::FusedStream for DeviceRequestStream {
259 fn is_terminated(&self) -> bool {
260 self.is_terminated
261 }
262}
263
264impl fidl::endpoints::RequestStream for DeviceRequestStream {
265 type Protocol = DeviceMarker;
266 type ControlHandle = DeviceControlHandle;
267
268 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
269 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
270 }
271
272 fn control_handle(&self) -> Self::ControlHandle {
273 DeviceControlHandle { inner: self.inner.clone() }
274 }
275
276 fn into_inner(
277 self,
278 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
279 {
280 (self.inner, self.is_terminated)
281 }
282
283 fn from_inner(
284 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
285 is_terminated: bool,
286 ) -> Self {
287 Self { inner, is_terminated }
288 }
289}
290
291impl futures::Stream for DeviceRequestStream {
292 type Item = Result<DeviceRequest, fidl::Error>;
293
294 fn poll_next(
295 mut self: std::pin::Pin<&mut Self>,
296 cx: &mut std::task::Context<'_>,
297 ) -> std::task::Poll<Option<Self::Item>> {
298 let this = &mut *self;
299 if this.inner.check_shutdown(cx) {
300 this.is_terminated = true;
301 return std::task::Poll::Ready(None);
302 }
303 if this.is_terminated {
304 panic!("polled DeviceRequestStream after completion");
305 }
306 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
307 |bytes, handles| {
308 match this.inner.channel().read_etc(cx, bytes, handles) {
309 std::task::Poll::Ready(Ok(())) => {}
310 std::task::Poll::Pending => return std::task::Poll::Pending,
311 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
312 this.is_terminated = true;
313 return std::task::Poll::Ready(None);
314 }
315 std::task::Poll::Ready(Err(e)) => {
316 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
317 e.into(),
318 ))))
319 }
320 }
321
322 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
324
325 std::task::Poll::Ready(Some(match header.ordinal {
326 0x7bba8137e24661e5 => {
327 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
328 let mut req = fidl::new_empty!(
329 DeviceDownloadFirmwareRequest,
330 fidl::encoding::DefaultFuchsiaResourceDialect
331 );
332 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceDownloadFirmwareRequest>(&header, _body_bytes, handles, &mut req)?;
333 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
334 Ok(DeviceRequest::DownloadFirmware {
335 firmware: req.firmware,
336 offset: req.offset,
337
338 responder: DeviceDownloadFirmwareResponder {
339 control_handle: std::mem::ManuallyDrop::new(control_handle),
340 tx_id: header.tx_id,
341 },
342 })
343 }
344 _ if header.tx_id == 0
345 && header
346 .dynamic_flags()
347 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
348 {
349 Ok(DeviceRequest::_UnknownMethod {
350 ordinal: header.ordinal,
351 control_handle: DeviceControlHandle { inner: this.inner.clone() },
352 method_type: fidl::MethodType::OneWay,
353 })
354 }
355 _ if header
356 .dynamic_flags()
357 .contains(fidl::encoding::DynamicFlags::FLEXIBLE) =>
358 {
359 this.inner.send_framework_err(
360 fidl::encoding::FrameworkErr::UnknownMethod,
361 header.tx_id,
362 header.ordinal,
363 header.dynamic_flags(),
364 (bytes, handles),
365 )?;
366 Ok(DeviceRequest::_UnknownMethod {
367 ordinal: header.ordinal,
368 control_handle: DeviceControlHandle { inner: this.inner.clone() },
369 method_type: fidl::MethodType::TwoWay,
370 })
371 }
372 _ => Err(fidl::Error::UnknownOrdinal {
373 ordinal: header.ordinal,
374 protocol_name:
375 <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
376 }),
377 }))
378 },
379 )
380 }
381}
382
383#[derive(Debug)]
385pub enum DeviceRequest {
386 DownloadFirmware {
388 firmware: fidl::Vmo,
389 offset: u64,
390 responder: DeviceDownloadFirmwareResponder,
391 },
392 #[non_exhaustive]
394 _UnknownMethod {
395 ordinal: u64,
397 control_handle: DeviceControlHandle,
398 method_type: fidl::MethodType,
399 },
400}
401
402impl DeviceRequest {
403 #[allow(irrefutable_let_patterns)]
404 pub fn into_download_firmware(
405 self,
406 ) -> Option<(fidl::Vmo, u64, DeviceDownloadFirmwareResponder)> {
407 if let DeviceRequest::DownloadFirmware { firmware, offset, responder } = self {
408 Some((firmware, offset, responder))
409 } else {
410 None
411 }
412 }
413
414 pub fn method_name(&self) -> &'static str {
416 match *self {
417 DeviceRequest::DownloadFirmware { .. } => "download_firmware",
418 DeviceRequest::_UnknownMethod { method_type: fidl::MethodType::OneWay, .. } => {
419 "unknown one-way method"
420 }
421 DeviceRequest::_UnknownMethod { method_type: fidl::MethodType::TwoWay, .. } => {
422 "unknown two-way method"
423 }
424 }
425 }
426}
427
428#[derive(Debug, Clone)]
429pub struct DeviceControlHandle {
430 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
431}
432
433impl fidl::endpoints::ControlHandle for DeviceControlHandle {
434 fn shutdown(&self) {
435 self.inner.shutdown()
436 }
437 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
438 self.inner.shutdown_with_epitaph(status)
439 }
440
441 fn is_closed(&self) -> bool {
442 self.inner.channel().is_closed()
443 }
444 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
445 self.inner.channel().on_closed()
446 }
447
448 #[cfg(target_os = "fuchsia")]
449 fn signal_peer(
450 &self,
451 clear_mask: zx::Signals,
452 set_mask: zx::Signals,
453 ) -> Result<(), zx_status::Status> {
454 use fidl::Peered;
455 self.inner.channel().signal_peer(clear_mask, set_mask)
456 }
457}
458
459impl DeviceControlHandle {}
460
461#[must_use = "FIDL methods require a response to be sent"]
462#[derive(Debug)]
463pub struct DeviceDownloadFirmwareResponder {
464 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
465 tx_id: u32,
466}
467
468impl std::ops::Drop for DeviceDownloadFirmwareResponder {
472 fn drop(&mut self) {
473 self.control_handle.shutdown();
474 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
476 }
477}
478
479impl fidl::endpoints::Responder for DeviceDownloadFirmwareResponder {
480 type ControlHandle = DeviceControlHandle;
481
482 fn control_handle(&self) -> &DeviceControlHandle {
483 &self.control_handle
484 }
485
486 fn drop_without_shutdown(mut self) {
487 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
489 std::mem::forget(self);
491 }
492}
493
494impl DeviceDownloadFirmwareResponder {
495 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
499 let _result = self.send_raw(result);
500 if _result.is_err() {
501 self.control_handle.shutdown();
502 }
503 self.drop_without_shutdown();
504 _result
505 }
506
507 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
509 let _result = self.send_raw(result);
510 self.drop_without_shutdown();
511 _result
512 }
513
514 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
515 self.control_handle
516 .inner
517 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
518 result,
519 self.tx_id,
520 0x7bba8137e24661e5,
521 fidl::encoding::DynamicFlags::empty(),
522 )
523 }
524}
525
526#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
527pub struct ServiceMarker;
528
529#[cfg(target_os = "fuchsia")]
530impl fidl::endpoints::ServiceMarker for ServiceMarker {
531 type Proxy = ServiceProxy;
532 type Request = ServiceRequest;
533 const SERVICE_NAME: &'static str = "fuchsia.hardware.google.nanohub.Service";
534}
535
536#[cfg(target_os = "fuchsia")]
539pub enum ServiceRequest {
540 Nanohub(DeviceRequestStream),
541}
542
543#[cfg(target_os = "fuchsia")]
544impl fidl::endpoints::ServiceRequest for ServiceRequest {
545 type Service = ServiceMarker;
546
547 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
548 match name {
549 "nanohub" => Self::Nanohub(
550 <DeviceRequestStream as fidl::endpoints::RequestStream>::from_channel(_channel),
551 ),
552 _ => panic!("no such member protocol name for service Service"),
553 }
554 }
555
556 fn member_names() -> &'static [&'static str] {
557 &["nanohub"]
558 }
559}
560#[cfg(target_os = "fuchsia")]
561pub struct ServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
562
563#[cfg(target_os = "fuchsia")]
564impl fidl::endpoints::ServiceProxy for ServiceProxy {
565 type Service = ServiceMarker;
566
567 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
568 Self(opener)
569 }
570}
571
572#[cfg(target_os = "fuchsia")]
573impl ServiceProxy {
574 pub fn connect_to_nanohub(&self) -> Result<DeviceProxy, fidl::Error> {
575 let (proxy, server_end) = fidl::endpoints::create_proxy::<DeviceMarker>();
576 self.connect_channel_to_nanohub(server_end)?;
577 Ok(proxy)
578 }
579
580 pub fn connect_to_nanohub_sync(&self) -> Result<DeviceSynchronousProxy, fidl::Error> {
583 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<DeviceMarker>();
584 self.connect_channel_to_nanohub(server_end)?;
585 Ok(proxy)
586 }
587
588 pub fn connect_channel_to_nanohub(
591 &self,
592 server_end: fidl::endpoints::ServerEnd<DeviceMarker>,
593 ) -> Result<(), fidl::Error> {
594 self.0.open_member("nanohub", server_end.into_channel())
595 }
596
597 pub fn instance_name(&self) -> &str {
598 self.0.instance_name()
599 }
600}
601
602mod internal {
603 use super::*;
604
605 impl fidl::encoding::ResourceTypeMarker for DeviceDownloadFirmwareRequest {
606 type Borrowed<'a> = &'a mut Self;
607 fn take_or_borrow<'a>(
608 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
609 ) -> Self::Borrowed<'a> {
610 value
611 }
612 }
613
614 unsafe impl fidl::encoding::TypeMarker for DeviceDownloadFirmwareRequest {
615 type Owned = Self;
616
617 #[inline(always)]
618 fn inline_align(_context: fidl::encoding::Context) -> usize {
619 8
620 }
621
622 #[inline(always)]
623 fn inline_size(_context: fidl::encoding::Context) -> usize {
624 16
625 }
626 }
627
628 unsafe impl
629 fidl::encoding::Encode<
630 DeviceDownloadFirmwareRequest,
631 fidl::encoding::DefaultFuchsiaResourceDialect,
632 > for &mut DeviceDownloadFirmwareRequest
633 {
634 #[inline]
635 unsafe fn encode(
636 self,
637 encoder: &mut fidl::encoding::Encoder<
638 '_,
639 fidl::encoding::DefaultFuchsiaResourceDialect,
640 >,
641 offset: usize,
642 _depth: fidl::encoding::Depth,
643 ) -> fidl::Result<()> {
644 encoder.debug_check_bounds::<DeviceDownloadFirmwareRequest>(offset);
645 fidl::encoding::Encode::<
647 DeviceDownloadFirmwareRequest,
648 fidl::encoding::DefaultFuchsiaResourceDialect,
649 >::encode(
650 (
651 <fidl::encoding::HandleType<
652 fidl::Vmo,
653 { fidl::ObjectType::VMO.into_raw() },
654 49271,
655 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
656 &mut self.firmware
657 ),
658 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.offset),
659 ),
660 encoder,
661 offset,
662 _depth,
663 )
664 }
665 }
666 unsafe impl<
667 T0: fidl::encoding::Encode<
668 fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 49271>,
669 fidl::encoding::DefaultFuchsiaResourceDialect,
670 >,
671 T1: fidl::encoding::Encode<u64, fidl::encoding::DefaultFuchsiaResourceDialect>,
672 >
673 fidl::encoding::Encode<
674 DeviceDownloadFirmwareRequest,
675 fidl::encoding::DefaultFuchsiaResourceDialect,
676 > for (T0, T1)
677 {
678 #[inline]
679 unsafe fn encode(
680 self,
681 encoder: &mut fidl::encoding::Encoder<
682 '_,
683 fidl::encoding::DefaultFuchsiaResourceDialect,
684 >,
685 offset: usize,
686 depth: fidl::encoding::Depth,
687 ) -> fidl::Result<()> {
688 encoder.debug_check_bounds::<DeviceDownloadFirmwareRequest>(offset);
689 unsafe {
692 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
693 (ptr as *mut u64).write_unaligned(0);
694 }
695 self.0.encode(encoder, offset + 0, depth)?;
697 self.1.encode(encoder, offset + 8, depth)?;
698 Ok(())
699 }
700 }
701
702 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
703 for DeviceDownloadFirmwareRequest
704 {
705 #[inline(always)]
706 fn new_empty() -> Self {
707 Self {
708 firmware: fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 49271>, fidl::encoding::DefaultFuchsiaResourceDialect),
709 offset: fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect),
710 }
711 }
712
713 #[inline]
714 unsafe fn decode(
715 &mut self,
716 decoder: &mut fidl::encoding::Decoder<
717 '_,
718 fidl::encoding::DefaultFuchsiaResourceDialect,
719 >,
720 offset: usize,
721 _depth: fidl::encoding::Depth,
722 ) -> fidl::Result<()> {
723 decoder.debug_check_bounds::<Self>(offset);
724 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
726 let padval = unsafe { (ptr as *const u64).read_unaligned() };
727 let mask = 0xffffffff00000000u64;
728 let maskedval = padval & mask;
729 if maskedval != 0 {
730 return Err(fidl::Error::NonZeroPadding {
731 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
732 });
733 }
734 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 49271>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.firmware, decoder, offset + 0, _depth)?;
735 fidl::decode!(
736 u64,
737 fidl::encoding::DefaultFuchsiaResourceDialect,
738 &mut self.offset,
739 decoder,
740 offset + 8,
741 _depth
742 )?;
743 Ok(())
744 }
745 }
746}