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_pci_common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
16pub struct Bar {
17 pub bar_id: u32,
19 pub size: u64,
20 pub result: BarResult,
21}
22
23impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Bar {}
24
25#[derive(Debug, PartialEq)]
26pub struct DeviceGetBarResponse {
27 pub result: Bar,
28}
29
30impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DeviceGetBarResponse {}
31
32#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
33pub struct DeviceGetBtiResponse {
34 pub bti: fidl::Bti,
35}
36
37impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DeviceGetBtiResponse {}
38
39#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
40pub struct DeviceMapInterruptResponse {
41 pub interrupt: fidl::Interrupt,
42}
43
44impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
45 for DeviceMapInterruptResponse
46{
47}
48
49#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
50pub struct IoBar {
51 pub address: u64,
52 pub resource: fidl::Resource,
53}
54
55impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for IoBar {}
56
57#[derive(Debug)]
58pub enum BarResult {
59 Io(IoBar),
60 Vmo(fidl::Vmo),
61 #[doc(hidden)]
62 __SourceBreaking {
63 unknown_ordinal: u64,
64 },
65}
66
67#[macro_export]
69macro_rules! BarResultUnknown {
70 () => {
71 _
72 };
73}
74
75impl PartialEq for BarResult {
77 fn eq(&self, other: &Self) -> bool {
78 match (self, other) {
79 (Self::Io(x), Self::Io(y)) => *x == *y,
80 (Self::Vmo(x), Self::Vmo(y)) => *x == *y,
81 _ => false,
82 }
83 }
84}
85
86impl BarResult {
87 #[inline]
88 pub fn ordinal(&self) -> u64 {
89 match *self {
90 Self::Io(_) => 1,
91 Self::Vmo(_) => 2,
92 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
93 }
94 }
95
96 #[inline]
97 pub fn unknown_variant_for_testing() -> Self {
98 Self::__SourceBreaking { unknown_ordinal: 0 }
99 }
100
101 #[inline]
102 pub fn is_unknown(&self) -> bool {
103 match self {
104 Self::__SourceBreaking { .. } => true,
105 _ => false,
106 }
107 }
108}
109
110impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for BarResult {}
111
112#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
113pub struct BusMarker;
114
115impl fidl::endpoints::ProtocolMarker for BusMarker {
116 type Proxy = BusProxy;
117 type RequestStream = BusRequestStream;
118 #[cfg(target_os = "fuchsia")]
119 type SynchronousProxy = BusSynchronousProxy;
120
121 const DEBUG_NAME: &'static str = "fuchsia.hardware.pci.Bus";
122}
123impl fidl::endpoints::DiscoverableProtocolMarker for BusMarker {}
124pub type BusReadBarResult = Result<Vec<u8>, i32>;
125
126pub trait BusProxyInterface: Send + Sync {
127 type GetHostBridgeInfoResponseFut: std::future::Future<Output = Result<HostBridgeInfo, fidl::Error>>
128 + Send;
129 fn r#get_host_bridge_info(&self) -> Self::GetHostBridgeInfoResponseFut;
130 type GetDevicesResponseFut: std::future::Future<Output = Result<Vec<PciDevice>, fidl::Error>>
131 + Send;
132 fn r#get_devices(&self) -> Self::GetDevicesResponseFut;
133 type ReadBarResponseFut: std::future::Future<Output = Result<BusReadBarResult, fidl::Error>>
134 + Send;
135 fn r#read_bar(
136 &self,
137 device: &Address,
138 bar_id: u8,
139 offset: u64,
140 size: u64,
141 ) -> Self::ReadBarResponseFut;
142}
143#[derive(Debug)]
144#[cfg(target_os = "fuchsia")]
145pub struct BusSynchronousProxy {
146 client: fidl::client::sync::Client,
147}
148
149#[cfg(target_os = "fuchsia")]
150impl fidl::endpoints::SynchronousProxy for BusSynchronousProxy {
151 type Proxy = BusProxy;
152 type Protocol = BusMarker;
153
154 fn from_channel(inner: fidl::Channel) -> Self {
155 Self::new(inner)
156 }
157
158 fn into_channel(self) -> fidl::Channel {
159 self.client.into_channel()
160 }
161
162 fn as_channel(&self) -> &fidl::Channel {
163 self.client.as_channel()
164 }
165}
166
167#[cfg(target_os = "fuchsia")]
168impl BusSynchronousProxy {
169 pub fn new(channel: fidl::Channel) -> Self {
170 Self { client: fidl::client::sync::Client::new(channel) }
171 }
172
173 pub fn into_channel(self) -> fidl::Channel {
174 self.client.into_channel()
175 }
176
177 pub fn wait_for_event(&self, deadline: zx::MonotonicInstant) -> Result<BusEvent, fidl::Error> {
180 BusEvent::decode(self.client.wait_for_event::<BusMarker>(deadline)?)
181 }
182
183 pub fn r#get_host_bridge_info(
185 &self,
186 ___deadline: zx::MonotonicInstant,
187 ) -> Result<HostBridgeInfo, fidl::Error> {
188 let _response = self
189 .client
190 .send_query::<fidl::encoding::EmptyPayload, BusGetHostBridgeInfoResponse, BusMarker>(
191 (),
192 0x39f0b21bcd8c065d,
193 fidl::encoding::DynamicFlags::empty(),
194 ___deadline,
195 )?;
196 Ok(_response.info)
197 }
198
199 pub fn r#get_devices(
201 &self,
202 ___deadline: zx::MonotonicInstant,
203 ) -> Result<Vec<PciDevice>, fidl::Error> {
204 let _response = self
205 .client
206 .send_query::<fidl::encoding::EmptyPayload, BusGetDevicesResponse, BusMarker>(
207 (),
208 0x2b39a32926007c92,
209 fidl::encoding::DynamicFlags::empty(),
210 ___deadline,
211 )?;
212 Ok(_response.devices)
213 }
214
215 pub fn r#read_bar(
230 &self,
231 mut device: &Address,
232 mut bar_id: u8,
233 mut offset: u64,
234 mut size: u64,
235 ___deadline: zx::MonotonicInstant,
236 ) -> Result<BusReadBarResult, fidl::Error> {
237 let _response = self.client.send_query::<
238 BusReadBarRequest,
239 fidl::encoding::ResultType<BusReadBarResponse, i32>,
240 BusMarker,
241 >(
242 (device, bar_id, offset, size,),
243 0x798f39b0dfdc4860,
244 fidl::encoding::DynamicFlags::empty(),
245 ___deadline,
246 )?;
247 Ok(_response.map(|x| x.buffer))
248 }
249}
250
251#[cfg(target_os = "fuchsia")]
252impl From<BusSynchronousProxy> for zx::NullableHandle {
253 fn from(value: BusSynchronousProxy) -> Self {
254 value.into_channel().into()
255 }
256}
257
258#[cfg(target_os = "fuchsia")]
259impl From<fidl::Channel> for BusSynchronousProxy {
260 fn from(value: fidl::Channel) -> Self {
261 Self::new(value)
262 }
263}
264
265#[cfg(target_os = "fuchsia")]
266impl fidl::endpoints::FromClient for BusSynchronousProxy {
267 type Protocol = BusMarker;
268
269 fn from_client(value: fidl::endpoints::ClientEnd<BusMarker>) -> Self {
270 Self::new(value.into_channel())
271 }
272}
273
274#[derive(Debug, Clone)]
275pub struct BusProxy {
276 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
277}
278
279impl fidl::endpoints::Proxy for BusProxy {
280 type Protocol = BusMarker;
281
282 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
283 Self::new(inner)
284 }
285
286 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
287 self.client.into_channel().map_err(|client| Self { client })
288 }
289
290 fn as_channel(&self) -> &::fidl::AsyncChannel {
291 self.client.as_channel()
292 }
293}
294
295impl BusProxy {
296 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
298 let protocol_name = <BusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
299 Self { client: fidl::client::Client::new(channel, protocol_name) }
300 }
301
302 pub fn take_event_stream(&self) -> BusEventStream {
308 BusEventStream { event_receiver: self.client.take_event_receiver() }
309 }
310
311 pub fn r#get_host_bridge_info(
313 &self,
314 ) -> fidl::client::QueryResponseFut<HostBridgeInfo, fidl::encoding::DefaultFuchsiaResourceDialect>
315 {
316 BusProxyInterface::r#get_host_bridge_info(self)
317 }
318
319 pub fn r#get_devices(
321 &self,
322 ) -> fidl::client::QueryResponseFut<Vec<PciDevice>, fidl::encoding::DefaultFuchsiaResourceDialect>
323 {
324 BusProxyInterface::r#get_devices(self)
325 }
326
327 pub fn r#read_bar(
342 &self,
343 mut device: &Address,
344 mut bar_id: u8,
345 mut offset: u64,
346 mut size: u64,
347 ) -> fidl::client::QueryResponseFut<
348 BusReadBarResult,
349 fidl::encoding::DefaultFuchsiaResourceDialect,
350 > {
351 BusProxyInterface::r#read_bar(self, device, bar_id, offset, size)
352 }
353}
354
355impl BusProxyInterface for BusProxy {
356 type GetHostBridgeInfoResponseFut = fidl::client::QueryResponseFut<
357 HostBridgeInfo,
358 fidl::encoding::DefaultFuchsiaResourceDialect,
359 >;
360 fn r#get_host_bridge_info(&self) -> Self::GetHostBridgeInfoResponseFut {
361 fn _decode(
362 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
363 ) -> Result<HostBridgeInfo, fidl::Error> {
364 let _response = fidl::client::decode_transaction_body::<
365 BusGetHostBridgeInfoResponse,
366 fidl::encoding::DefaultFuchsiaResourceDialect,
367 0x39f0b21bcd8c065d,
368 >(_buf?)?;
369 Ok(_response.info)
370 }
371 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, HostBridgeInfo>(
372 (),
373 0x39f0b21bcd8c065d,
374 fidl::encoding::DynamicFlags::empty(),
375 _decode,
376 )
377 }
378
379 type GetDevicesResponseFut = fidl::client::QueryResponseFut<
380 Vec<PciDevice>,
381 fidl::encoding::DefaultFuchsiaResourceDialect,
382 >;
383 fn r#get_devices(&self) -> Self::GetDevicesResponseFut {
384 fn _decode(
385 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
386 ) -> Result<Vec<PciDevice>, fidl::Error> {
387 let _response = fidl::client::decode_transaction_body::<
388 BusGetDevicesResponse,
389 fidl::encoding::DefaultFuchsiaResourceDialect,
390 0x2b39a32926007c92,
391 >(_buf?)?;
392 Ok(_response.devices)
393 }
394 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, Vec<PciDevice>>(
395 (),
396 0x2b39a32926007c92,
397 fidl::encoding::DynamicFlags::empty(),
398 _decode,
399 )
400 }
401
402 type ReadBarResponseFut = fidl::client::QueryResponseFut<
403 BusReadBarResult,
404 fidl::encoding::DefaultFuchsiaResourceDialect,
405 >;
406 fn r#read_bar(
407 &self,
408 mut device: &Address,
409 mut bar_id: u8,
410 mut offset: u64,
411 mut size: u64,
412 ) -> Self::ReadBarResponseFut {
413 fn _decode(
414 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
415 ) -> Result<BusReadBarResult, fidl::Error> {
416 let _response = fidl::client::decode_transaction_body::<
417 fidl::encoding::ResultType<BusReadBarResponse, i32>,
418 fidl::encoding::DefaultFuchsiaResourceDialect,
419 0x798f39b0dfdc4860,
420 >(_buf?)?;
421 Ok(_response.map(|x| x.buffer))
422 }
423 self.client.send_query_and_decode::<BusReadBarRequest, BusReadBarResult>(
424 (device, bar_id, offset, size),
425 0x798f39b0dfdc4860,
426 fidl::encoding::DynamicFlags::empty(),
427 _decode,
428 )
429 }
430}
431
432pub struct BusEventStream {
433 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
434}
435
436impl std::marker::Unpin for BusEventStream {}
437
438impl futures::stream::FusedStream for BusEventStream {
439 fn is_terminated(&self) -> bool {
440 self.event_receiver.is_terminated()
441 }
442}
443
444impl futures::Stream for BusEventStream {
445 type Item = Result<BusEvent, fidl::Error>;
446
447 fn poll_next(
448 mut self: std::pin::Pin<&mut Self>,
449 cx: &mut std::task::Context<'_>,
450 ) -> std::task::Poll<Option<Self::Item>> {
451 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
452 &mut self.event_receiver,
453 cx
454 )?) {
455 Some(buf) => std::task::Poll::Ready(Some(BusEvent::decode(buf))),
456 None => std::task::Poll::Ready(None),
457 }
458 }
459}
460
461#[derive(Debug)]
462pub enum BusEvent {}
463
464impl BusEvent {
465 fn decode(
467 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
468 ) -> Result<BusEvent, fidl::Error> {
469 let (bytes, _handles) = buf.split_mut();
470 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
471 debug_assert_eq!(tx_header.tx_id, 0);
472 match tx_header.ordinal {
473 _ => Err(fidl::Error::UnknownOrdinal {
474 ordinal: tx_header.ordinal,
475 protocol_name: <BusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
476 }),
477 }
478 }
479}
480
481pub struct BusRequestStream {
483 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
484 is_terminated: bool,
485}
486
487impl std::marker::Unpin for BusRequestStream {}
488
489impl futures::stream::FusedStream for BusRequestStream {
490 fn is_terminated(&self) -> bool {
491 self.is_terminated
492 }
493}
494
495impl fidl::endpoints::RequestStream for BusRequestStream {
496 type Protocol = BusMarker;
497 type ControlHandle = BusControlHandle;
498
499 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
500 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
501 }
502
503 fn control_handle(&self) -> Self::ControlHandle {
504 BusControlHandle { inner: self.inner.clone() }
505 }
506
507 fn into_inner(
508 self,
509 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
510 {
511 (self.inner, self.is_terminated)
512 }
513
514 fn from_inner(
515 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
516 is_terminated: bool,
517 ) -> Self {
518 Self { inner, is_terminated }
519 }
520}
521
522impl futures::Stream for BusRequestStream {
523 type Item = Result<BusRequest, fidl::Error>;
524
525 fn poll_next(
526 mut self: std::pin::Pin<&mut Self>,
527 cx: &mut std::task::Context<'_>,
528 ) -> std::task::Poll<Option<Self::Item>> {
529 let this = &mut *self;
530 if this.inner.check_shutdown(cx) {
531 this.is_terminated = true;
532 return std::task::Poll::Ready(None);
533 }
534 if this.is_terminated {
535 panic!("polled BusRequestStream after completion");
536 }
537 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
538 |bytes, handles| {
539 match this.inner.channel().read_etc(cx, bytes, handles) {
540 std::task::Poll::Ready(Ok(())) => {}
541 std::task::Poll::Pending => return std::task::Poll::Pending,
542 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
543 this.is_terminated = true;
544 return std::task::Poll::Ready(None);
545 }
546 std::task::Poll::Ready(Err(e)) => {
547 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
548 e.into(),
549 ))));
550 }
551 }
552
553 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
555
556 std::task::Poll::Ready(Some(match header.ordinal {
557 0x39f0b21bcd8c065d => {
558 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
559 let mut req = fidl::new_empty!(
560 fidl::encoding::EmptyPayload,
561 fidl::encoding::DefaultFuchsiaResourceDialect
562 );
563 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
564 let control_handle = BusControlHandle { inner: this.inner.clone() };
565 Ok(BusRequest::GetHostBridgeInfo {
566 responder: BusGetHostBridgeInfoResponder {
567 control_handle: std::mem::ManuallyDrop::new(control_handle),
568 tx_id: header.tx_id,
569 },
570 })
571 }
572 0x2b39a32926007c92 => {
573 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
574 let mut req = fidl::new_empty!(
575 fidl::encoding::EmptyPayload,
576 fidl::encoding::DefaultFuchsiaResourceDialect
577 );
578 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
579 let control_handle = BusControlHandle { inner: this.inner.clone() };
580 Ok(BusRequest::GetDevices {
581 responder: BusGetDevicesResponder {
582 control_handle: std::mem::ManuallyDrop::new(control_handle),
583 tx_id: header.tx_id,
584 },
585 })
586 }
587 0x798f39b0dfdc4860 => {
588 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
589 let mut req = fidl::new_empty!(
590 BusReadBarRequest,
591 fidl::encoding::DefaultFuchsiaResourceDialect
592 );
593 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BusReadBarRequest>(&header, _body_bytes, handles, &mut req)?;
594 let control_handle = BusControlHandle { inner: this.inner.clone() };
595 Ok(BusRequest::ReadBar {
596 device: req.device,
597 bar_id: req.bar_id,
598 offset: req.offset,
599 size: req.size,
600
601 responder: BusReadBarResponder {
602 control_handle: std::mem::ManuallyDrop::new(control_handle),
603 tx_id: header.tx_id,
604 },
605 })
606 }
607 _ => Err(fidl::Error::UnknownOrdinal {
608 ordinal: header.ordinal,
609 protocol_name: <BusMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
610 }),
611 }))
612 },
613 )
614 }
615}
616
617#[derive(Debug)]
620pub enum BusRequest {
621 GetHostBridgeInfo { responder: BusGetHostBridgeInfoResponder },
623 GetDevices { responder: BusGetDevicesResponder },
625 ReadBar { device: Address, bar_id: u8, offset: u64, size: u64, responder: BusReadBarResponder },
640}
641
642impl BusRequest {
643 #[allow(irrefutable_let_patterns)]
644 pub fn into_get_host_bridge_info(self) -> Option<(BusGetHostBridgeInfoResponder)> {
645 if let BusRequest::GetHostBridgeInfo { responder } = self {
646 Some((responder))
647 } else {
648 None
649 }
650 }
651
652 #[allow(irrefutable_let_patterns)]
653 pub fn into_get_devices(self) -> Option<(BusGetDevicesResponder)> {
654 if let BusRequest::GetDevices { responder } = self { Some((responder)) } else { None }
655 }
656
657 #[allow(irrefutable_let_patterns)]
658 pub fn into_read_bar(self) -> Option<(Address, u8, u64, u64, BusReadBarResponder)> {
659 if let BusRequest::ReadBar { device, bar_id, offset, size, responder } = self {
660 Some((device, bar_id, offset, size, responder))
661 } else {
662 None
663 }
664 }
665
666 pub fn method_name(&self) -> &'static str {
668 match *self {
669 BusRequest::GetHostBridgeInfo { .. } => "get_host_bridge_info",
670 BusRequest::GetDevices { .. } => "get_devices",
671 BusRequest::ReadBar { .. } => "read_bar",
672 }
673 }
674}
675
676#[derive(Debug, Clone)]
677pub struct BusControlHandle {
678 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
679}
680
681impl fidl::endpoints::ControlHandle for BusControlHandle {
682 fn shutdown(&self) {
683 self.inner.shutdown()
684 }
685
686 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
687 self.inner.shutdown_with_epitaph(status)
688 }
689
690 fn is_closed(&self) -> bool {
691 self.inner.channel().is_closed()
692 }
693 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
694 self.inner.channel().on_closed()
695 }
696
697 #[cfg(target_os = "fuchsia")]
698 fn signal_peer(
699 &self,
700 clear_mask: zx::Signals,
701 set_mask: zx::Signals,
702 ) -> Result<(), zx_status::Status> {
703 use fidl::Peered;
704 self.inner.channel().signal_peer(clear_mask, set_mask)
705 }
706}
707
708impl BusControlHandle {}
709
710#[must_use = "FIDL methods require a response to be sent"]
711#[derive(Debug)]
712pub struct BusGetHostBridgeInfoResponder {
713 control_handle: std::mem::ManuallyDrop<BusControlHandle>,
714 tx_id: u32,
715}
716
717impl std::ops::Drop for BusGetHostBridgeInfoResponder {
721 fn drop(&mut self) {
722 self.control_handle.shutdown();
723 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
725 }
726}
727
728impl fidl::endpoints::Responder for BusGetHostBridgeInfoResponder {
729 type ControlHandle = BusControlHandle;
730
731 fn control_handle(&self) -> &BusControlHandle {
732 &self.control_handle
733 }
734
735 fn drop_without_shutdown(mut self) {
736 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
738 std::mem::forget(self);
740 }
741}
742
743impl BusGetHostBridgeInfoResponder {
744 pub fn send(self, mut info: &HostBridgeInfo) -> Result<(), fidl::Error> {
748 let _result = self.send_raw(info);
749 if _result.is_err() {
750 self.control_handle.shutdown();
751 }
752 self.drop_without_shutdown();
753 _result
754 }
755
756 pub fn send_no_shutdown_on_err(self, mut info: &HostBridgeInfo) -> Result<(), fidl::Error> {
758 let _result = self.send_raw(info);
759 self.drop_without_shutdown();
760 _result
761 }
762
763 fn send_raw(&self, mut info: &HostBridgeInfo) -> Result<(), fidl::Error> {
764 self.control_handle.inner.send::<BusGetHostBridgeInfoResponse>(
765 (info,),
766 self.tx_id,
767 0x39f0b21bcd8c065d,
768 fidl::encoding::DynamicFlags::empty(),
769 )
770 }
771}
772
773#[must_use = "FIDL methods require a response to be sent"]
774#[derive(Debug)]
775pub struct BusGetDevicesResponder {
776 control_handle: std::mem::ManuallyDrop<BusControlHandle>,
777 tx_id: u32,
778}
779
780impl std::ops::Drop for BusGetDevicesResponder {
784 fn drop(&mut self) {
785 self.control_handle.shutdown();
786 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
788 }
789}
790
791impl fidl::endpoints::Responder for BusGetDevicesResponder {
792 type ControlHandle = BusControlHandle;
793
794 fn control_handle(&self) -> &BusControlHandle {
795 &self.control_handle
796 }
797
798 fn drop_without_shutdown(mut self) {
799 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
801 std::mem::forget(self);
803 }
804}
805
806impl BusGetDevicesResponder {
807 pub fn send(self, mut devices: &[PciDevice]) -> Result<(), fidl::Error> {
811 let _result = self.send_raw(devices);
812 if _result.is_err() {
813 self.control_handle.shutdown();
814 }
815 self.drop_without_shutdown();
816 _result
817 }
818
819 pub fn send_no_shutdown_on_err(self, mut devices: &[PciDevice]) -> Result<(), fidl::Error> {
821 let _result = self.send_raw(devices);
822 self.drop_without_shutdown();
823 _result
824 }
825
826 fn send_raw(&self, mut devices: &[PciDevice]) -> Result<(), fidl::Error> {
827 self.control_handle.inner.send::<BusGetDevicesResponse>(
828 (devices,),
829 self.tx_id,
830 0x2b39a32926007c92,
831 fidl::encoding::DynamicFlags::empty(),
832 )
833 }
834}
835
836#[must_use = "FIDL methods require a response to be sent"]
837#[derive(Debug)]
838pub struct BusReadBarResponder {
839 control_handle: std::mem::ManuallyDrop<BusControlHandle>,
840 tx_id: u32,
841}
842
843impl std::ops::Drop for BusReadBarResponder {
847 fn drop(&mut self) {
848 self.control_handle.shutdown();
849 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
851 }
852}
853
854impl fidl::endpoints::Responder for BusReadBarResponder {
855 type ControlHandle = BusControlHandle;
856
857 fn control_handle(&self) -> &BusControlHandle {
858 &self.control_handle
859 }
860
861 fn drop_without_shutdown(mut self) {
862 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
864 std::mem::forget(self);
866 }
867}
868
869impl BusReadBarResponder {
870 pub fn send(self, mut result: Result<&[u8], i32>) -> Result<(), fidl::Error> {
874 let _result = self.send_raw(result);
875 if _result.is_err() {
876 self.control_handle.shutdown();
877 }
878 self.drop_without_shutdown();
879 _result
880 }
881
882 pub fn send_no_shutdown_on_err(
884 self,
885 mut result: Result<&[u8], i32>,
886 ) -> Result<(), fidl::Error> {
887 let _result = self.send_raw(result);
888 self.drop_without_shutdown();
889 _result
890 }
891
892 fn send_raw(&self, mut result: Result<&[u8], i32>) -> Result<(), fidl::Error> {
893 self.control_handle.inner.send::<fidl::encoding::ResultType<BusReadBarResponse, i32>>(
894 result.map(|buffer| (buffer,)),
895 self.tx_id,
896 0x798f39b0dfdc4860,
897 fidl::encoding::DynamicFlags::empty(),
898 )
899 }
900}
901
902#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
903pub struct DeviceMarker;
904
905impl fidl::endpoints::ProtocolMarker for DeviceMarker {
906 type Proxy = DeviceProxy;
907 type RequestStream = DeviceRequestStream;
908 #[cfg(target_os = "fuchsia")]
909 type SynchronousProxy = DeviceSynchronousProxy;
910
911 const DEBUG_NAME: &'static str = "fuchsia.hardware.pci.Device";
912}
913impl fidl::endpoints::DiscoverableProtocolMarker for DeviceMarker {}
914pub type DeviceGetBarResult = Result<Bar, i32>;
915pub type DeviceSetBusMasteringResult = Result<(), i32>;
916pub type DeviceResetDeviceResult = Result<(), i32>;
917pub type DeviceAckInterruptResult = Result<(), i32>;
918pub type DeviceMapInterruptResult = Result<fidl::Interrupt, i32>;
919pub type DeviceSetInterruptModeResult = Result<(), i32>;
920pub type DeviceReadConfig8Result = Result<u8, i32>;
921pub type DeviceReadConfig16Result = Result<u16, i32>;
922pub type DeviceReadConfig32Result = Result<u32, i32>;
923pub type DeviceWriteConfig8Result = Result<(), i32>;
924pub type DeviceWriteConfig16Result = Result<(), i32>;
925pub type DeviceWriteConfig32Result = Result<(), i32>;
926pub type DeviceGetBtiResult = Result<fidl::Bti, i32>;
927
928pub trait DeviceProxyInterface: Send + Sync {
929 type GetDeviceInfoResponseFut: std::future::Future<Output = Result<DeviceInfo, fidl::Error>>
930 + Send;
931 fn r#get_device_info(&self) -> Self::GetDeviceInfoResponseFut;
932 type GetBarResponseFut: std::future::Future<Output = Result<DeviceGetBarResult, fidl::Error>>
933 + Send;
934 fn r#get_bar(&self, bar_id: u32) -> Self::GetBarResponseFut;
935 type SetBusMasteringResponseFut: std::future::Future<Output = Result<DeviceSetBusMasteringResult, fidl::Error>>
936 + Send;
937 fn r#set_bus_mastering(&self, enabled: bool) -> Self::SetBusMasteringResponseFut;
938 type ResetDeviceResponseFut: std::future::Future<Output = Result<DeviceResetDeviceResult, fidl::Error>>
939 + Send;
940 fn r#reset_device(&self) -> Self::ResetDeviceResponseFut;
941 type AckInterruptResponseFut: std::future::Future<Output = Result<DeviceAckInterruptResult, fidl::Error>>
942 + Send;
943 fn r#ack_interrupt(&self) -> Self::AckInterruptResponseFut;
944 type MapInterruptResponseFut: std::future::Future<Output = Result<DeviceMapInterruptResult, fidl::Error>>
945 + Send;
946 fn r#map_interrupt(&self, which_irq: u32) -> Self::MapInterruptResponseFut;
947 type GetInterruptModesResponseFut: std::future::Future<Output = Result<InterruptModes, fidl::Error>>
948 + Send;
949 fn r#get_interrupt_modes(&self) -> Self::GetInterruptModesResponseFut;
950 type SetInterruptModeResponseFut: std::future::Future<Output = Result<DeviceSetInterruptModeResult, fidl::Error>>
951 + Send;
952 fn r#set_interrupt_mode(
953 &self,
954 mode: InterruptMode,
955 requested_irq_count: u32,
956 ) -> Self::SetInterruptModeResponseFut;
957 type ReadConfig8ResponseFut: std::future::Future<Output = Result<DeviceReadConfig8Result, fidl::Error>>
958 + Send;
959 fn r#read_config8(&self, offset: u16) -> Self::ReadConfig8ResponseFut;
960 type ReadConfig16ResponseFut: std::future::Future<Output = Result<DeviceReadConfig16Result, fidl::Error>>
961 + Send;
962 fn r#read_config16(&self, offset: u16) -> Self::ReadConfig16ResponseFut;
963 type ReadConfig32ResponseFut: std::future::Future<Output = Result<DeviceReadConfig32Result, fidl::Error>>
964 + Send;
965 fn r#read_config32(&self, offset: u16) -> Self::ReadConfig32ResponseFut;
966 type WriteConfig8ResponseFut: std::future::Future<Output = Result<DeviceWriteConfig8Result, fidl::Error>>
967 + Send;
968 fn r#write_config8(&self, offset: u16, value: u8) -> Self::WriteConfig8ResponseFut;
969 type WriteConfig16ResponseFut: std::future::Future<Output = Result<DeviceWriteConfig16Result, fidl::Error>>
970 + Send;
971 fn r#write_config16(&self, offset: u16, value: u16) -> Self::WriteConfig16ResponseFut;
972 type WriteConfig32ResponseFut: std::future::Future<Output = Result<DeviceWriteConfig32Result, fidl::Error>>
973 + Send;
974 fn r#write_config32(&self, offset: u16, value: u32) -> Self::WriteConfig32ResponseFut;
975 type GetCapabilitiesResponseFut: std::future::Future<Output = Result<Vec<u8>, fidl::Error>>
976 + Send;
977 fn r#get_capabilities(&self, id: CapabilityId) -> Self::GetCapabilitiesResponseFut;
978 type GetExtendedCapabilitiesResponseFut: std::future::Future<Output = Result<Vec<u16>, fidl::Error>>
979 + Send;
980 fn r#get_extended_capabilities(
981 &self,
982 id: ExtendedCapabilityId,
983 ) -> Self::GetExtendedCapabilitiesResponseFut;
984 type GetBtiResponseFut: std::future::Future<Output = Result<DeviceGetBtiResult, fidl::Error>>
985 + Send;
986 fn r#get_bti(&self, index: u32) -> Self::GetBtiResponseFut;
987}
988#[derive(Debug)]
989#[cfg(target_os = "fuchsia")]
990pub struct DeviceSynchronousProxy {
991 client: fidl::client::sync::Client,
992}
993
994#[cfg(target_os = "fuchsia")]
995impl fidl::endpoints::SynchronousProxy for DeviceSynchronousProxy {
996 type Proxy = DeviceProxy;
997 type Protocol = DeviceMarker;
998
999 fn from_channel(inner: fidl::Channel) -> Self {
1000 Self::new(inner)
1001 }
1002
1003 fn into_channel(self) -> fidl::Channel {
1004 self.client.into_channel()
1005 }
1006
1007 fn as_channel(&self) -> &fidl::Channel {
1008 self.client.as_channel()
1009 }
1010}
1011
1012#[cfg(target_os = "fuchsia")]
1013impl DeviceSynchronousProxy {
1014 pub fn new(channel: fidl::Channel) -> Self {
1015 Self { client: fidl::client::sync::Client::new(channel) }
1016 }
1017
1018 pub fn into_channel(self) -> fidl::Channel {
1019 self.client.into_channel()
1020 }
1021
1022 pub fn wait_for_event(
1025 &self,
1026 deadline: zx::MonotonicInstant,
1027 ) -> Result<DeviceEvent, fidl::Error> {
1028 DeviceEvent::decode(self.client.wait_for_event::<DeviceMarker>(deadline)?)
1029 }
1030
1031 pub fn r#get_device_info(
1033 &self,
1034 ___deadline: zx::MonotonicInstant,
1035 ) -> Result<DeviceInfo, fidl::Error> {
1036 let _response = self
1037 .client
1038 .send_query::<fidl::encoding::EmptyPayload, DeviceGetDeviceInfoResponse, DeviceMarker>(
1039 (),
1040 0x5599d144d4329916,
1041 fidl::encoding::DynamicFlags::empty(),
1042 ___deadline,
1043 )?;
1044 Ok(_response.info)
1045 }
1046
1047 pub fn r#get_bar(
1061 &self,
1062 mut bar_id: u32,
1063 ___deadline: zx::MonotonicInstant,
1064 ) -> Result<DeviceGetBarResult, fidl::Error> {
1065 let _response = self.client.send_query::<
1066 DeviceGetBarRequest,
1067 fidl::encoding::ResultType<DeviceGetBarResponse, i32>,
1068 DeviceMarker,
1069 >(
1070 (bar_id,),
1071 0x6b2683f6fbbff679,
1072 fidl::encoding::DynamicFlags::empty(),
1073 ___deadline,
1074 )?;
1075 Ok(_response.map(|x| x.result))
1076 }
1077
1078 pub fn r#set_bus_mastering(
1086 &self,
1087 mut enabled: bool,
1088 ___deadline: zx::MonotonicInstant,
1089 ) -> Result<DeviceSetBusMasteringResult, fidl::Error> {
1090 let _response = self.client.send_query::<
1091 DeviceSetBusMasteringRequest,
1092 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1093 DeviceMarker,
1094 >(
1095 (enabled,),
1096 0x3421e9e030211003,
1097 fidl::encoding::DynamicFlags::empty(),
1098 ___deadline,
1099 )?;
1100 Ok(_response.map(|x| x))
1101 }
1102
1103 pub fn r#reset_device(
1114 &self,
1115 ___deadline: zx::MonotonicInstant,
1116 ) -> Result<DeviceResetDeviceResult, fidl::Error> {
1117 let _response = self.client.send_query::<
1118 fidl::encoding::EmptyPayload,
1119 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1120 DeviceMarker,
1121 >(
1122 (),
1123 0x3c5b7579bb6f8b9f,
1124 fidl::encoding::DynamicFlags::empty(),
1125 ___deadline,
1126 )?;
1127 Ok(_response.map(|x| x))
1128 }
1129
1130 pub fn r#ack_interrupt(
1137 &self,
1138 ___deadline: zx::MonotonicInstant,
1139 ) -> Result<DeviceAckInterruptResult, fidl::Error> {
1140 let _response = self.client.send_query::<
1141 fidl::encoding::EmptyPayload,
1142 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1143 DeviceMarker,
1144 >(
1145 (),
1146 0x70742f64692d5a6b,
1147 fidl::encoding::DynamicFlags::empty(),
1148 ___deadline,
1149 )?;
1150 Ok(_response.map(|x| x))
1151 }
1152
1153 pub fn r#map_interrupt(
1172 &self,
1173 mut which_irq: u32,
1174 ___deadline: zx::MonotonicInstant,
1175 ) -> Result<DeviceMapInterruptResult, fidl::Error> {
1176 let _response = self.client.send_query::<
1177 DeviceMapInterruptRequest,
1178 fidl::encoding::ResultType<DeviceMapInterruptResponse, i32>,
1179 DeviceMarker,
1180 >(
1181 (which_irq,),
1182 0x25eeff9d34a1fa13,
1183 fidl::encoding::DynamicFlags::empty(),
1184 ___deadline,
1185 )?;
1186 Ok(_response.map(|x| x.interrupt))
1187 }
1188
1189 pub fn r#get_interrupt_modes(
1191 &self,
1192 ___deadline: zx::MonotonicInstant,
1193 ) -> Result<InterruptModes, fidl::Error> {
1194 let _response = self.client.send_query::<
1195 fidl::encoding::EmptyPayload,
1196 DeviceGetInterruptModesResponse,
1197 DeviceMarker,
1198 >(
1199 (),
1200 0x93f4cd8f79e9f4a,
1201 fidl::encoding::DynamicFlags::empty(),
1202 ___deadline,
1203 )?;
1204 Ok(_response.modes)
1205 }
1206
1207 pub fn r#set_interrupt_mode(
1221 &self,
1222 mut mode: InterruptMode,
1223 mut requested_irq_count: u32,
1224 ___deadline: zx::MonotonicInstant,
1225 ) -> Result<DeviceSetInterruptModeResult, fidl::Error> {
1226 let _response = self.client.send_query::<
1227 DeviceSetInterruptModeRequest,
1228 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1229 DeviceMarker,
1230 >(
1231 (mode, requested_irq_count,),
1232 0x85bebad3eb24866,
1233 fidl::encoding::DynamicFlags::empty(),
1234 ___deadline,
1235 )?;
1236 Ok(_response.map(|x| x))
1237 }
1238
1239 pub fn r#read_config8(
1249 &self,
1250 mut offset: u16,
1251 ___deadline: zx::MonotonicInstant,
1252 ) -> Result<DeviceReadConfig8Result, fidl::Error> {
1253 let _response = self.client.send_query::<
1254 DeviceReadConfig8Request,
1255 fidl::encoding::ResultType<DeviceReadConfig8Response, i32>,
1256 DeviceMarker,
1257 >(
1258 (offset,),
1259 0x28f9eb9e6dadda1c,
1260 fidl::encoding::DynamicFlags::empty(),
1261 ___deadline,
1262 )?;
1263 Ok(_response.map(|x| x.value))
1264 }
1265
1266 pub fn r#read_config16(
1276 &self,
1277 mut offset: u16,
1278 ___deadline: zx::MonotonicInstant,
1279 ) -> Result<DeviceReadConfig16Result, fidl::Error> {
1280 let _response = self.client.send_query::<
1281 DeviceReadConfig16Request,
1282 fidl::encoding::ResultType<DeviceReadConfig16Response, i32>,
1283 DeviceMarker,
1284 >(
1285 (offset,),
1286 0x3bcda6171a3270bb,
1287 fidl::encoding::DynamicFlags::empty(),
1288 ___deadline,
1289 )?;
1290 Ok(_response.map(|x| x.value))
1291 }
1292
1293 pub fn r#read_config32(
1303 &self,
1304 mut offset: u16,
1305 ___deadline: zx::MonotonicInstant,
1306 ) -> Result<DeviceReadConfig32Result, fidl::Error> {
1307 let _response = self.client.send_query::<
1308 DeviceReadConfig32Request,
1309 fidl::encoding::ResultType<DeviceReadConfig32Response, i32>,
1310 DeviceMarker,
1311 >(
1312 (offset,),
1313 0x55357535402f7507,
1314 fidl::encoding::DynamicFlags::empty(),
1315 ___deadline,
1316 )?;
1317 Ok(_response.map(|x| x.value))
1318 }
1319
1320 pub fn r#write_config8(
1333 &self,
1334 mut offset: u16,
1335 mut value: u8,
1336 ___deadline: zx::MonotonicInstant,
1337 ) -> Result<DeviceWriteConfig8Result, fidl::Error> {
1338 let _response = self.client.send_query::<
1339 DeviceWriteConfig8Request,
1340 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1341 DeviceMarker,
1342 >(
1343 (offset, value,),
1344 0x49a0719e1433cff,
1345 fidl::encoding::DynamicFlags::empty(),
1346 ___deadline,
1347 )?;
1348 Ok(_response.map(|x| x))
1349 }
1350
1351 pub fn r#write_config16(
1364 &self,
1365 mut offset: u16,
1366 mut value: u16,
1367 ___deadline: zx::MonotonicInstant,
1368 ) -> Result<DeviceWriteConfig16Result, fidl::Error> {
1369 let _response = self.client.send_query::<
1370 DeviceWriteConfig16Request,
1371 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1372 DeviceMarker,
1373 >(
1374 (offset, value,),
1375 0x3e30bf13f1c07eff,
1376 fidl::encoding::DynamicFlags::empty(),
1377 ___deadline,
1378 )?;
1379 Ok(_response.map(|x| x))
1380 }
1381
1382 pub fn r#write_config32(
1395 &self,
1396 mut offset: u16,
1397 mut value: u32,
1398 ___deadline: zx::MonotonicInstant,
1399 ) -> Result<DeviceWriteConfig32Result, fidl::Error> {
1400 let _response = self.client.send_query::<
1401 DeviceWriteConfig32Request,
1402 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1403 DeviceMarker,
1404 >(
1405 (offset, value,),
1406 0x161584e5199b388,
1407 fidl::encoding::DynamicFlags::empty(),
1408 ___deadline,
1409 )?;
1410 Ok(_response.map(|x| x))
1411 }
1412
1413 pub fn r#get_capabilities(
1420 &self,
1421 mut id: CapabilityId,
1422 ___deadline: zx::MonotonicInstant,
1423 ) -> Result<Vec<u8>, fidl::Error> {
1424 let _response = self.client.send_query::<
1425 DeviceGetCapabilitiesRequest,
1426 DeviceGetCapabilitiesResponse,
1427 DeviceMarker,
1428 >(
1429 (id,),
1430 0x3a050fde46f3ba0f,
1431 fidl::encoding::DynamicFlags::empty(),
1432 ___deadline,
1433 )?;
1434 Ok(_response.offsets)
1435 }
1436
1437 pub fn r#get_extended_capabilities(
1444 &self,
1445 mut id: ExtendedCapabilityId,
1446 ___deadline: zx::MonotonicInstant,
1447 ) -> Result<Vec<u16>, fidl::Error> {
1448 let _response = self.client.send_query::<
1449 DeviceGetExtendedCapabilitiesRequest,
1450 DeviceGetExtendedCapabilitiesResponse,
1451 DeviceMarker,
1452 >(
1453 (id,),
1454 0xb8573efcaae0c39,
1455 fidl::encoding::DynamicFlags::empty(),
1456 ___deadline,
1457 )?;
1458 Ok(_response.offsets)
1459 }
1460
1461 pub fn r#get_bti(
1469 &self,
1470 mut index: u32,
1471 ___deadline: zx::MonotonicInstant,
1472 ) -> Result<DeviceGetBtiResult, fidl::Error> {
1473 let _response = self.client.send_query::<
1474 DeviceGetBtiRequest,
1475 fidl::encoding::ResultType<DeviceGetBtiResponse, i32>,
1476 DeviceMarker,
1477 >(
1478 (index,),
1479 0x5e4fe9efb12d9ee3,
1480 fidl::encoding::DynamicFlags::empty(),
1481 ___deadline,
1482 )?;
1483 Ok(_response.map(|x| x.bti))
1484 }
1485}
1486
1487#[cfg(target_os = "fuchsia")]
1488impl From<DeviceSynchronousProxy> for zx::NullableHandle {
1489 fn from(value: DeviceSynchronousProxy) -> Self {
1490 value.into_channel().into()
1491 }
1492}
1493
1494#[cfg(target_os = "fuchsia")]
1495impl From<fidl::Channel> for DeviceSynchronousProxy {
1496 fn from(value: fidl::Channel) -> Self {
1497 Self::new(value)
1498 }
1499}
1500
1501#[cfg(target_os = "fuchsia")]
1502impl fidl::endpoints::FromClient for DeviceSynchronousProxy {
1503 type Protocol = DeviceMarker;
1504
1505 fn from_client(value: fidl::endpoints::ClientEnd<DeviceMarker>) -> Self {
1506 Self::new(value.into_channel())
1507 }
1508}
1509
1510#[derive(Debug, Clone)]
1511pub struct DeviceProxy {
1512 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1513}
1514
1515impl fidl::endpoints::Proxy for DeviceProxy {
1516 type Protocol = DeviceMarker;
1517
1518 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1519 Self::new(inner)
1520 }
1521
1522 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1523 self.client.into_channel().map_err(|client| Self { client })
1524 }
1525
1526 fn as_channel(&self) -> &::fidl::AsyncChannel {
1527 self.client.as_channel()
1528 }
1529}
1530
1531impl DeviceProxy {
1532 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1534 let protocol_name = <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1535 Self { client: fidl::client::Client::new(channel, protocol_name) }
1536 }
1537
1538 pub fn take_event_stream(&self) -> DeviceEventStream {
1544 DeviceEventStream { event_receiver: self.client.take_event_receiver() }
1545 }
1546
1547 pub fn r#get_device_info(
1549 &self,
1550 ) -> fidl::client::QueryResponseFut<DeviceInfo, fidl::encoding::DefaultFuchsiaResourceDialect>
1551 {
1552 DeviceProxyInterface::r#get_device_info(self)
1553 }
1554
1555 pub fn r#get_bar(
1569 &self,
1570 mut bar_id: u32,
1571 ) -> fidl::client::QueryResponseFut<
1572 DeviceGetBarResult,
1573 fidl::encoding::DefaultFuchsiaResourceDialect,
1574 > {
1575 DeviceProxyInterface::r#get_bar(self, bar_id)
1576 }
1577
1578 pub fn r#set_bus_mastering(
1586 &self,
1587 mut enabled: bool,
1588 ) -> fidl::client::QueryResponseFut<
1589 DeviceSetBusMasteringResult,
1590 fidl::encoding::DefaultFuchsiaResourceDialect,
1591 > {
1592 DeviceProxyInterface::r#set_bus_mastering(self, enabled)
1593 }
1594
1595 pub fn r#reset_device(
1606 &self,
1607 ) -> fidl::client::QueryResponseFut<
1608 DeviceResetDeviceResult,
1609 fidl::encoding::DefaultFuchsiaResourceDialect,
1610 > {
1611 DeviceProxyInterface::r#reset_device(self)
1612 }
1613
1614 pub fn r#ack_interrupt(
1621 &self,
1622 ) -> fidl::client::QueryResponseFut<
1623 DeviceAckInterruptResult,
1624 fidl::encoding::DefaultFuchsiaResourceDialect,
1625 > {
1626 DeviceProxyInterface::r#ack_interrupt(self)
1627 }
1628
1629 pub fn r#map_interrupt(
1648 &self,
1649 mut which_irq: u32,
1650 ) -> fidl::client::QueryResponseFut<
1651 DeviceMapInterruptResult,
1652 fidl::encoding::DefaultFuchsiaResourceDialect,
1653 > {
1654 DeviceProxyInterface::r#map_interrupt(self, which_irq)
1655 }
1656
1657 pub fn r#get_interrupt_modes(
1659 &self,
1660 ) -> fidl::client::QueryResponseFut<InterruptModes, fidl::encoding::DefaultFuchsiaResourceDialect>
1661 {
1662 DeviceProxyInterface::r#get_interrupt_modes(self)
1663 }
1664
1665 pub fn r#set_interrupt_mode(
1679 &self,
1680 mut mode: InterruptMode,
1681 mut requested_irq_count: u32,
1682 ) -> fidl::client::QueryResponseFut<
1683 DeviceSetInterruptModeResult,
1684 fidl::encoding::DefaultFuchsiaResourceDialect,
1685 > {
1686 DeviceProxyInterface::r#set_interrupt_mode(self, mode, requested_irq_count)
1687 }
1688
1689 pub fn r#read_config8(
1699 &self,
1700 mut offset: u16,
1701 ) -> fidl::client::QueryResponseFut<
1702 DeviceReadConfig8Result,
1703 fidl::encoding::DefaultFuchsiaResourceDialect,
1704 > {
1705 DeviceProxyInterface::r#read_config8(self, offset)
1706 }
1707
1708 pub fn r#read_config16(
1718 &self,
1719 mut offset: u16,
1720 ) -> fidl::client::QueryResponseFut<
1721 DeviceReadConfig16Result,
1722 fidl::encoding::DefaultFuchsiaResourceDialect,
1723 > {
1724 DeviceProxyInterface::r#read_config16(self, offset)
1725 }
1726
1727 pub fn r#read_config32(
1737 &self,
1738 mut offset: u16,
1739 ) -> fidl::client::QueryResponseFut<
1740 DeviceReadConfig32Result,
1741 fidl::encoding::DefaultFuchsiaResourceDialect,
1742 > {
1743 DeviceProxyInterface::r#read_config32(self, offset)
1744 }
1745
1746 pub fn r#write_config8(
1759 &self,
1760 mut offset: u16,
1761 mut value: u8,
1762 ) -> fidl::client::QueryResponseFut<
1763 DeviceWriteConfig8Result,
1764 fidl::encoding::DefaultFuchsiaResourceDialect,
1765 > {
1766 DeviceProxyInterface::r#write_config8(self, offset, value)
1767 }
1768
1769 pub fn r#write_config16(
1782 &self,
1783 mut offset: u16,
1784 mut value: u16,
1785 ) -> fidl::client::QueryResponseFut<
1786 DeviceWriteConfig16Result,
1787 fidl::encoding::DefaultFuchsiaResourceDialect,
1788 > {
1789 DeviceProxyInterface::r#write_config16(self, offset, value)
1790 }
1791
1792 pub fn r#write_config32(
1805 &self,
1806 mut offset: u16,
1807 mut value: u32,
1808 ) -> fidl::client::QueryResponseFut<
1809 DeviceWriteConfig32Result,
1810 fidl::encoding::DefaultFuchsiaResourceDialect,
1811 > {
1812 DeviceProxyInterface::r#write_config32(self, offset, value)
1813 }
1814
1815 pub fn r#get_capabilities(
1822 &self,
1823 mut id: CapabilityId,
1824 ) -> fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>
1825 {
1826 DeviceProxyInterface::r#get_capabilities(self, id)
1827 }
1828
1829 pub fn r#get_extended_capabilities(
1836 &self,
1837 mut id: ExtendedCapabilityId,
1838 ) -> fidl::client::QueryResponseFut<Vec<u16>, fidl::encoding::DefaultFuchsiaResourceDialect>
1839 {
1840 DeviceProxyInterface::r#get_extended_capabilities(self, id)
1841 }
1842
1843 pub fn r#get_bti(
1851 &self,
1852 mut index: u32,
1853 ) -> fidl::client::QueryResponseFut<
1854 DeviceGetBtiResult,
1855 fidl::encoding::DefaultFuchsiaResourceDialect,
1856 > {
1857 DeviceProxyInterface::r#get_bti(self, index)
1858 }
1859}
1860
1861impl DeviceProxyInterface for DeviceProxy {
1862 type GetDeviceInfoResponseFut =
1863 fidl::client::QueryResponseFut<DeviceInfo, fidl::encoding::DefaultFuchsiaResourceDialect>;
1864 fn r#get_device_info(&self) -> Self::GetDeviceInfoResponseFut {
1865 fn _decode(
1866 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1867 ) -> Result<DeviceInfo, fidl::Error> {
1868 let _response = fidl::client::decode_transaction_body::<
1869 DeviceGetDeviceInfoResponse,
1870 fidl::encoding::DefaultFuchsiaResourceDialect,
1871 0x5599d144d4329916,
1872 >(_buf?)?;
1873 Ok(_response.info)
1874 }
1875 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, DeviceInfo>(
1876 (),
1877 0x5599d144d4329916,
1878 fidl::encoding::DynamicFlags::empty(),
1879 _decode,
1880 )
1881 }
1882
1883 type GetBarResponseFut = fidl::client::QueryResponseFut<
1884 DeviceGetBarResult,
1885 fidl::encoding::DefaultFuchsiaResourceDialect,
1886 >;
1887 fn r#get_bar(&self, mut bar_id: u32) -> Self::GetBarResponseFut {
1888 fn _decode(
1889 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1890 ) -> Result<DeviceGetBarResult, fidl::Error> {
1891 let _response = fidl::client::decode_transaction_body::<
1892 fidl::encoding::ResultType<DeviceGetBarResponse, i32>,
1893 fidl::encoding::DefaultFuchsiaResourceDialect,
1894 0x6b2683f6fbbff679,
1895 >(_buf?)?;
1896 Ok(_response.map(|x| x.result))
1897 }
1898 self.client.send_query_and_decode::<DeviceGetBarRequest, DeviceGetBarResult>(
1899 (bar_id,),
1900 0x6b2683f6fbbff679,
1901 fidl::encoding::DynamicFlags::empty(),
1902 _decode,
1903 )
1904 }
1905
1906 type SetBusMasteringResponseFut = fidl::client::QueryResponseFut<
1907 DeviceSetBusMasteringResult,
1908 fidl::encoding::DefaultFuchsiaResourceDialect,
1909 >;
1910 fn r#set_bus_mastering(&self, mut enabled: bool) -> Self::SetBusMasteringResponseFut {
1911 fn _decode(
1912 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1913 ) -> Result<DeviceSetBusMasteringResult, fidl::Error> {
1914 let _response = fidl::client::decode_transaction_body::<
1915 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1916 fidl::encoding::DefaultFuchsiaResourceDialect,
1917 0x3421e9e030211003,
1918 >(_buf?)?;
1919 Ok(_response.map(|x| x))
1920 }
1921 self.client
1922 .send_query_and_decode::<DeviceSetBusMasteringRequest, DeviceSetBusMasteringResult>(
1923 (enabled,),
1924 0x3421e9e030211003,
1925 fidl::encoding::DynamicFlags::empty(),
1926 _decode,
1927 )
1928 }
1929
1930 type ResetDeviceResponseFut = fidl::client::QueryResponseFut<
1931 DeviceResetDeviceResult,
1932 fidl::encoding::DefaultFuchsiaResourceDialect,
1933 >;
1934 fn r#reset_device(&self) -> Self::ResetDeviceResponseFut {
1935 fn _decode(
1936 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1937 ) -> Result<DeviceResetDeviceResult, fidl::Error> {
1938 let _response = fidl::client::decode_transaction_body::<
1939 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1940 fidl::encoding::DefaultFuchsiaResourceDialect,
1941 0x3c5b7579bb6f8b9f,
1942 >(_buf?)?;
1943 Ok(_response.map(|x| x))
1944 }
1945 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, DeviceResetDeviceResult>(
1946 (),
1947 0x3c5b7579bb6f8b9f,
1948 fidl::encoding::DynamicFlags::empty(),
1949 _decode,
1950 )
1951 }
1952
1953 type AckInterruptResponseFut = fidl::client::QueryResponseFut<
1954 DeviceAckInterruptResult,
1955 fidl::encoding::DefaultFuchsiaResourceDialect,
1956 >;
1957 fn r#ack_interrupt(&self) -> Self::AckInterruptResponseFut {
1958 fn _decode(
1959 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1960 ) -> Result<DeviceAckInterruptResult, fidl::Error> {
1961 let _response = fidl::client::decode_transaction_body::<
1962 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
1963 fidl::encoding::DefaultFuchsiaResourceDialect,
1964 0x70742f64692d5a6b,
1965 >(_buf?)?;
1966 Ok(_response.map(|x| x))
1967 }
1968 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, DeviceAckInterruptResult>(
1969 (),
1970 0x70742f64692d5a6b,
1971 fidl::encoding::DynamicFlags::empty(),
1972 _decode,
1973 )
1974 }
1975
1976 type MapInterruptResponseFut = fidl::client::QueryResponseFut<
1977 DeviceMapInterruptResult,
1978 fidl::encoding::DefaultFuchsiaResourceDialect,
1979 >;
1980 fn r#map_interrupt(&self, mut which_irq: u32) -> Self::MapInterruptResponseFut {
1981 fn _decode(
1982 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1983 ) -> Result<DeviceMapInterruptResult, fidl::Error> {
1984 let _response = fidl::client::decode_transaction_body::<
1985 fidl::encoding::ResultType<DeviceMapInterruptResponse, i32>,
1986 fidl::encoding::DefaultFuchsiaResourceDialect,
1987 0x25eeff9d34a1fa13,
1988 >(_buf?)?;
1989 Ok(_response.map(|x| x.interrupt))
1990 }
1991 self.client.send_query_and_decode::<DeviceMapInterruptRequest, DeviceMapInterruptResult>(
1992 (which_irq,),
1993 0x25eeff9d34a1fa13,
1994 fidl::encoding::DynamicFlags::empty(),
1995 _decode,
1996 )
1997 }
1998
1999 type GetInterruptModesResponseFut = fidl::client::QueryResponseFut<
2000 InterruptModes,
2001 fidl::encoding::DefaultFuchsiaResourceDialect,
2002 >;
2003 fn r#get_interrupt_modes(&self) -> Self::GetInterruptModesResponseFut {
2004 fn _decode(
2005 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2006 ) -> Result<InterruptModes, fidl::Error> {
2007 let _response = fidl::client::decode_transaction_body::<
2008 DeviceGetInterruptModesResponse,
2009 fidl::encoding::DefaultFuchsiaResourceDialect,
2010 0x93f4cd8f79e9f4a,
2011 >(_buf?)?;
2012 Ok(_response.modes)
2013 }
2014 self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, InterruptModes>(
2015 (),
2016 0x93f4cd8f79e9f4a,
2017 fidl::encoding::DynamicFlags::empty(),
2018 _decode,
2019 )
2020 }
2021
2022 type SetInterruptModeResponseFut = fidl::client::QueryResponseFut<
2023 DeviceSetInterruptModeResult,
2024 fidl::encoding::DefaultFuchsiaResourceDialect,
2025 >;
2026 fn r#set_interrupt_mode(
2027 &self,
2028 mut mode: InterruptMode,
2029 mut requested_irq_count: u32,
2030 ) -> Self::SetInterruptModeResponseFut {
2031 fn _decode(
2032 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2033 ) -> Result<DeviceSetInterruptModeResult, fidl::Error> {
2034 let _response = fidl::client::decode_transaction_body::<
2035 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
2036 fidl::encoding::DefaultFuchsiaResourceDialect,
2037 0x85bebad3eb24866,
2038 >(_buf?)?;
2039 Ok(_response.map(|x| x))
2040 }
2041 self.client
2042 .send_query_and_decode::<DeviceSetInterruptModeRequest, DeviceSetInterruptModeResult>(
2043 (mode, requested_irq_count),
2044 0x85bebad3eb24866,
2045 fidl::encoding::DynamicFlags::empty(),
2046 _decode,
2047 )
2048 }
2049
2050 type ReadConfig8ResponseFut = fidl::client::QueryResponseFut<
2051 DeviceReadConfig8Result,
2052 fidl::encoding::DefaultFuchsiaResourceDialect,
2053 >;
2054 fn r#read_config8(&self, mut offset: u16) -> Self::ReadConfig8ResponseFut {
2055 fn _decode(
2056 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2057 ) -> Result<DeviceReadConfig8Result, fidl::Error> {
2058 let _response = fidl::client::decode_transaction_body::<
2059 fidl::encoding::ResultType<DeviceReadConfig8Response, i32>,
2060 fidl::encoding::DefaultFuchsiaResourceDialect,
2061 0x28f9eb9e6dadda1c,
2062 >(_buf?)?;
2063 Ok(_response.map(|x| x.value))
2064 }
2065 self.client.send_query_and_decode::<DeviceReadConfig8Request, DeviceReadConfig8Result>(
2066 (offset,),
2067 0x28f9eb9e6dadda1c,
2068 fidl::encoding::DynamicFlags::empty(),
2069 _decode,
2070 )
2071 }
2072
2073 type ReadConfig16ResponseFut = fidl::client::QueryResponseFut<
2074 DeviceReadConfig16Result,
2075 fidl::encoding::DefaultFuchsiaResourceDialect,
2076 >;
2077 fn r#read_config16(&self, mut offset: u16) -> Self::ReadConfig16ResponseFut {
2078 fn _decode(
2079 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2080 ) -> Result<DeviceReadConfig16Result, fidl::Error> {
2081 let _response = fidl::client::decode_transaction_body::<
2082 fidl::encoding::ResultType<DeviceReadConfig16Response, i32>,
2083 fidl::encoding::DefaultFuchsiaResourceDialect,
2084 0x3bcda6171a3270bb,
2085 >(_buf?)?;
2086 Ok(_response.map(|x| x.value))
2087 }
2088 self.client.send_query_and_decode::<DeviceReadConfig16Request, DeviceReadConfig16Result>(
2089 (offset,),
2090 0x3bcda6171a3270bb,
2091 fidl::encoding::DynamicFlags::empty(),
2092 _decode,
2093 )
2094 }
2095
2096 type ReadConfig32ResponseFut = fidl::client::QueryResponseFut<
2097 DeviceReadConfig32Result,
2098 fidl::encoding::DefaultFuchsiaResourceDialect,
2099 >;
2100 fn r#read_config32(&self, mut offset: u16) -> Self::ReadConfig32ResponseFut {
2101 fn _decode(
2102 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2103 ) -> Result<DeviceReadConfig32Result, fidl::Error> {
2104 let _response = fidl::client::decode_transaction_body::<
2105 fidl::encoding::ResultType<DeviceReadConfig32Response, i32>,
2106 fidl::encoding::DefaultFuchsiaResourceDialect,
2107 0x55357535402f7507,
2108 >(_buf?)?;
2109 Ok(_response.map(|x| x.value))
2110 }
2111 self.client.send_query_and_decode::<DeviceReadConfig32Request, DeviceReadConfig32Result>(
2112 (offset,),
2113 0x55357535402f7507,
2114 fidl::encoding::DynamicFlags::empty(),
2115 _decode,
2116 )
2117 }
2118
2119 type WriteConfig8ResponseFut = fidl::client::QueryResponseFut<
2120 DeviceWriteConfig8Result,
2121 fidl::encoding::DefaultFuchsiaResourceDialect,
2122 >;
2123 fn r#write_config8(&self, mut offset: u16, mut value: u8) -> Self::WriteConfig8ResponseFut {
2124 fn _decode(
2125 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2126 ) -> Result<DeviceWriteConfig8Result, fidl::Error> {
2127 let _response = fidl::client::decode_transaction_body::<
2128 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
2129 fidl::encoding::DefaultFuchsiaResourceDialect,
2130 0x49a0719e1433cff,
2131 >(_buf?)?;
2132 Ok(_response.map(|x| x))
2133 }
2134 self.client.send_query_and_decode::<DeviceWriteConfig8Request, DeviceWriteConfig8Result>(
2135 (offset, value),
2136 0x49a0719e1433cff,
2137 fidl::encoding::DynamicFlags::empty(),
2138 _decode,
2139 )
2140 }
2141
2142 type WriteConfig16ResponseFut = fidl::client::QueryResponseFut<
2143 DeviceWriteConfig16Result,
2144 fidl::encoding::DefaultFuchsiaResourceDialect,
2145 >;
2146 fn r#write_config16(&self, mut offset: u16, mut value: u16) -> Self::WriteConfig16ResponseFut {
2147 fn _decode(
2148 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2149 ) -> Result<DeviceWriteConfig16Result, fidl::Error> {
2150 let _response = fidl::client::decode_transaction_body::<
2151 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
2152 fidl::encoding::DefaultFuchsiaResourceDialect,
2153 0x3e30bf13f1c07eff,
2154 >(_buf?)?;
2155 Ok(_response.map(|x| x))
2156 }
2157 self.client.send_query_and_decode::<DeviceWriteConfig16Request, DeviceWriteConfig16Result>(
2158 (offset, value),
2159 0x3e30bf13f1c07eff,
2160 fidl::encoding::DynamicFlags::empty(),
2161 _decode,
2162 )
2163 }
2164
2165 type WriteConfig32ResponseFut = fidl::client::QueryResponseFut<
2166 DeviceWriteConfig32Result,
2167 fidl::encoding::DefaultFuchsiaResourceDialect,
2168 >;
2169 fn r#write_config32(&self, mut offset: u16, mut value: u32) -> Self::WriteConfig32ResponseFut {
2170 fn _decode(
2171 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2172 ) -> Result<DeviceWriteConfig32Result, fidl::Error> {
2173 let _response = fidl::client::decode_transaction_body::<
2174 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
2175 fidl::encoding::DefaultFuchsiaResourceDialect,
2176 0x161584e5199b388,
2177 >(_buf?)?;
2178 Ok(_response.map(|x| x))
2179 }
2180 self.client.send_query_and_decode::<DeviceWriteConfig32Request, DeviceWriteConfig32Result>(
2181 (offset, value),
2182 0x161584e5199b388,
2183 fidl::encoding::DynamicFlags::empty(),
2184 _decode,
2185 )
2186 }
2187
2188 type GetCapabilitiesResponseFut =
2189 fidl::client::QueryResponseFut<Vec<u8>, fidl::encoding::DefaultFuchsiaResourceDialect>;
2190 fn r#get_capabilities(&self, mut id: CapabilityId) -> Self::GetCapabilitiesResponseFut {
2191 fn _decode(
2192 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2193 ) -> Result<Vec<u8>, fidl::Error> {
2194 let _response = fidl::client::decode_transaction_body::<
2195 DeviceGetCapabilitiesResponse,
2196 fidl::encoding::DefaultFuchsiaResourceDialect,
2197 0x3a050fde46f3ba0f,
2198 >(_buf?)?;
2199 Ok(_response.offsets)
2200 }
2201 self.client.send_query_and_decode::<DeviceGetCapabilitiesRequest, Vec<u8>>(
2202 (id,),
2203 0x3a050fde46f3ba0f,
2204 fidl::encoding::DynamicFlags::empty(),
2205 _decode,
2206 )
2207 }
2208
2209 type GetExtendedCapabilitiesResponseFut =
2210 fidl::client::QueryResponseFut<Vec<u16>, fidl::encoding::DefaultFuchsiaResourceDialect>;
2211 fn r#get_extended_capabilities(
2212 &self,
2213 mut id: ExtendedCapabilityId,
2214 ) -> Self::GetExtendedCapabilitiesResponseFut {
2215 fn _decode(
2216 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2217 ) -> Result<Vec<u16>, fidl::Error> {
2218 let _response = fidl::client::decode_transaction_body::<
2219 DeviceGetExtendedCapabilitiesResponse,
2220 fidl::encoding::DefaultFuchsiaResourceDialect,
2221 0xb8573efcaae0c39,
2222 >(_buf?)?;
2223 Ok(_response.offsets)
2224 }
2225 self.client.send_query_and_decode::<DeviceGetExtendedCapabilitiesRequest, Vec<u16>>(
2226 (id,),
2227 0xb8573efcaae0c39,
2228 fidl::encoding::DynamicFlags::empty(),
2229 _decode,
2230 )
2231 }
2232
2233 type GetBtiResponseFut = fidl::client::QueryResponseFut<
2234 DeviceGetBtiResult,
2235 fidl::encoding::DefaultFuchsiaResourceDialect,
2236 >;
2237 fn r#get_bti(&self, mut index: u32) -> Self::GetBtiResponseFut {
2238 fn _decode(
2239 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
2240 ) -> Result<DeviceGetBtiResult, fidl::Error> {
2241 let _response = fidl::client::decode_transaction_body::<
2242 fidl::encoding::ResultType<DeviceGetBtiResponse, i32>,
2243 fidl::encoding::DefaultFuchsiaResourceDialect,
2244 0x5e4fe9efb12d9ee3,
2245 >(_buf?)?;
2246 Ok(_response.map(|x| x.bti))
2247 }
2248 self.client.send_query_and_decode::<DeviceGetBtiRequest, DeviceGetBtiResult>(
2249 (index,),
2250 0x5e4fe9efb12d9ee3,
2251 fidl::encoding::DynamicFlags::empty(),
2252 _decode,
2253 )
2254 }
2255}
2256
2257pub struct DeviceEventStream {
2258 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
2259}
2260
2261impl std::marker::Unpin for DeviceEventStream {}
2262
2263impl futures::stream::FusedStream for DeviceEventStream {
2264 fn is_terminated(&self) -> bool {
2265 self.event_receiver.is_terminated()
2266 }
2267}
2268
2269impl futures::Stream for DeviceEventStream {
2270 type Item = Result<DeviceEvent, fidl::Error>;
2271
2272 fn poll_next(
2273 mut self: std::pin::Pin<&mut Self>,
2274 cx: &mut std::task::Context<'_>,
2275 ) -> std::task::Poll<Option<Self::Item>> {
2276 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
2277 &mut self.event_receiver,
2278 cx
2279 )?) {
2280 Some(buf) => std::task::Poll::Ready(Some(DeviceEvent::decode(buf))),
2281 None => std::task::Poll::Ready(None),
2282 }
2283 }
2284}
2285
2286#[derive(Debug)]
2287pub enum DeviceEvent {}
2288
2289impl DeviceEvent {
2290 fn decode(
2292 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
2293 ) -> Result<DeviceEvent, fidl::Error> {
2294 let (bytes, _handles) = buf.split_mut();
2295 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2296 debug_assert_eq!(tx_header.tx_id, 0);
2297 match tx_header.ordinal {
2298 _ => Err(fidl::Error::UnknownOrdinal {
2299 ordinal: tx_header.ordinal,
2300 protocol_name: <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2301 }),
2302 }
2303 }
2304}
2305
2306pub struct DeviceRequestStream {
2308 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2309 is_terminated: bool,
2310}
2311
2312impl std::marker::Unpin for DeviceRequestStream {}
2313
2314impl futures::stream::FusedStream for DeviceRequestStream {
2315 fn is_terminated(&self) -> bool {
2316 self.is_terminated
2317 }
2318}
2319
2320impl fidl::endpoints::RequestStream for DeviceRequestStream {
2321 type Protocol = DeviceMarker;
2322 type ControlHandle = DeviceControlHandle;
2323
2324 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
2325 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
2326 }
2327
2328 fn control_handle(&self) -> Self::ControlHandle {
2329 DeviceControlHandle { inner: self.inner.clone() }
2330 }
2331
2332 fn into_inner(
2333 self,
2334 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
2335 {
2336 (self.inner, self.is_terminated)
2337 }
2338
2339 fn from_inner(
2340 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2341 is_terminated: bool,
2342 ) -> Self {
2343 Self { inner, is_terminated }
2344 }
2345}
2346
2347impl futures::Stream for DeviceRequestStream {
2348 type Item = Result<DeviceRequest, fidl::Error>;
2349
2350 fn poll_next(
2351 mut self: std::pin::Pin<&mut Self>,
2352 cx: &mut std::task::Context<'_>,
2353 ) -> std::task::Poll<Option<Self::Item>> {
2354 let this = &mut *self;
2355 if this.inner.check_shutdown(cx) {
2356 this.is_terminated = true;
2357 return std::task::Poll::Ready(None);
2358 }
2359 if this.is_terminated {
2360 panic!("polled DeviceRequestStream after completion");
2361 }
2362 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
2363 |bytes, handles| {
2364 match this.inner.channel().read_etc(cx, bytes, handles) {
2365 std::task::Poll::Ready(Ok(())) => {}
2366 std::task::Poll::Pending => return std::task::Poll::Pending,
2367 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
2368 this.is_terminated = true;
2369 return std::task::Poll::Ready(None);
2370 }
2371 std::task::Poll::Ready(Err(e)) => {
2372 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
2373 e.into(),
2374 ))));
2375 }
2376 }
2377
2378 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
2380
2381 std::task::Poll::Ready(Some(match header.ordinal {
2382 0x5599d144d4329916 => {
2383 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2384 let mut req = fidl::new_empty!(
2385 fidl::encoding::EmptyPayload,
2386 fidl::encoding::DefaultFuchsiaResourceDialect
2387 );
2388 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2389 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2390 Ok(DeviceRequest::GetDeviceInfo {
2391 responder: DeviceGetDeviceInfoResponder {
2392 control_handle: std::mem::ManuallyDrop::new(control_handle),
2393 tx_id: header.tx_id,
2394 },
2395 })
2396 }
2397 0x6b2683f6fbbff679 => {
2398 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2399 let mut req = fidl::new_empty!(
2400 DeviceGetBarRequest,
2401 fidl::encoding::DefaultFuchsiaResourceDialect
2402 );
2403 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceGetBarRequest>(&header, _body_bytes, handles, &mut req)?;
2404 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2405 Ok(DeviceRequest::GetBar {
2406 bar_id: req.bar_id,
2407
2408 responder: DeviceGetBarResponder {
2409 control_handle: std::mem::ManuallyDrop::new(control_handle),
2410 tx_id: header.tx_id,
2411 },
2412 })
2413 }
2414 0x3421e9e030211003 => {
2415 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2416 let mut req = fidl::new_empty!(
2417 DeviceSetBusMasteringRequest,
2418 fidl::encoding::DefaultFuchsiaResourceDialect
2419 );
2420 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceSetBusMasteringRequest>(&header, _body_bytes, handles, &mut req)?;
2421 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2422 Ok(DeviceRequest::SetBusMastering {
2423 enabled: req.enabled,
2424
2425 responder: DeviceSetBusMasteringResponder {
2426 control_handle: std::mem::ManuallyDrop::new(control_handle),
2427 tx_id: header.tx_id,
2428 },
2429 })
2430 }
2431 0x3c5b7579bb6f8b9f => {
2432 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2433 let mut req = fidl::new_empty!(
2434 fidl::encoding::EmptyPayload,
2435 fidl::encoding::DefaultFuchsiaResourceDialect
2436 );
2437 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2438 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2439 Ok(DeviceRequest::ResetDevice {
2440 responder: DeviceResetDeviceResponder {
2441 control_handle: std::mem::ManuallyDrop::new(control_handle),
2442 tx_id: header.tx_id,
2443 },
2444 })
2445 }
2446 0x70742f64692d5a6b => {
2447 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2448 let mut req = fidl::new_empty!(
2449 fidl::encoding::EmptyPayload,
2450 fidl::encoding::DefaultFuchsiaResourceDialect
2451 );
2452 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2453 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2454 Ok(DeviceRequest::AckInterrupt {
2455 responder: DeviceAckInterruptResponder {
2456 control_handle: std::mem::ManuallyDrop::new(control_handle),
2457 tx_id: header.tx_id,
2458 },
2459 })
2460 }
2461 0x25eeff9d34a1fa13 => {
2462 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2463 let mut req = fidl::new_empty!(
2464 DeviceMapInterruptRequest,
2465 fidl::encoding::DefaultFuchsiaResourceDialect
2466 );
2467 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceMapInterruptRequest>(&header, _body_bytes, handles, &mut req)?;
2468 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2469 Ok(DeviceRequest::MapInterrupt {
2470 which_irq: req.which_irq,
2471
2472 responder: DeviceMapInterruptResponder {
2473 control_handle: std::mem::ManuallyDrop::new(control_handle),
2474 tx_id: header.tx_id,
2475 },
2476 })
2477 }
2478 0x93f4cd8f79e9f4a => {
2479 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2480 let mut req = fidl::new_empty!(
2481 fidl::encoding::EmptyPayload,
2482 fidl::encoding::DefaultFuchsiaResourceDialect
2483 );
2484 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2485 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2486 Ok(DeviceRequest::GetInterruptModes {
2487 responder: DeviceGetInterruptModesResponder {
2488 control_handle: std::mem::ManuallyDrop::new(control_handle),
2489 tx_id: header.tx_id,
2490 },
2491 })
2492 }
2493 0x85bebad3eb24866 => {
2494 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2495 let mut req = fidl::new_empty!(
2496 DeviceSetInterruptModeRequest,
2497 fidl::encoding::DefaultFuchsiaResourceDialect
2498 );
2499 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceSetInterruptModeRequest>(&header, _body_bytes, handles, &mut req)?;
2500 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2501 Ok(DeviceRequest::SetInterruptMode {
2502 mode: req.mode,
2503 requested_irq_count: req.requested_irq_count,
2504
2505 responder: DeviceSetInterruptModeResponder {
2506 control_handle: std::mem::ManuallyDrop::new(control_handle),
2507 tx_id: header.tx_id,
2508 },
2509 })
2510 }
2511 0x28f9eb9e6dadda1c => {
2512 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2513 let mut req = fidl::new_empty!(
2514 DeviceReadConfig8Request,
2515 fidl::encoding::DefaultFuchsiaResourceDialect
2516 );
2517 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceReadConfig8Request>(&header, _body_bytes, handles, &mut req)?;
2518 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2519 Ok(DeviceRequest::ReadConfig8 {
2520 offset: req.offset,
2521
2522 responder: DeviceReadConfig8Responder {
2523 control_handle: std::mem::ManuallyDrop::new(control_handle),
2524 tx_id: header.tx_id,
2525 },
2526 })
2527 }
2528 0x3bcda6171a3270bb => {
2529 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2530 let mut req = fidl::new_empty!(
2531 DeviceReadConfig16Request,
2532 fidl::encoding::DefaultFuchsiaResourceDialect
2533 );
2534 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceReadConfig16Request>(&header, _body_bytes, handles, &mut req)?;
2535 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2536 Ok(DeviceRequest::ReadConfig16 {
2537 offset: req.offset,
2538
2539 responder: DeviceReadConfig16Responder {
2540 control_handle: std::mem::ManuallyDrop::new(control_handle),
2541 tx_id: header.tx_id,
2542 },
2543 })
2544 }
2545 0x55357535402f7507 => {
2546 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2547 let mut req = fidl::new_empty!(
2548 DeviceReadConfig32Request,
2549 fidl::encoding::DefaultFuchsiaResourceDialect
2550 );
2551 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceReadConfig32Request>(&header, _body_bytes, handles, &mut req)?;
2552 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2553 Ok(DeviceRequest::ReadConfig32 {
2554 offset: req.offset,
2555
2556 responder: DeviceReadConfig32Responder {
2557 control_handle: std::mem::ManuallyDrop::new(control_handle),
2558 tx_id: header.tx_id,
2559 },
2560 })
2561 }
2562 0x49a0719e1433cff => {
2563 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2564 let mut req = fidl::new_empty!(
2565 DeviceWriteConfig8Request,
2566 fidl::encoding::DefaultFuchsiaResourceDialect
2567 );
2568 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceWriteConfig8Request>(&header, _body_bytes, handles, &mut req)?;
2569 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2570 Ok(DeviceRequest::WriteConfig8 {
2571 offset: req.offset,
2572 value: req.value,
2573
2574 responder: DeviceWriteConfig8Responder {
2575 control_handle: std::mem::ManuallyDrop::new(control_handle),
2576 tx_id: header.tx_id,
2577 },
2578 })
2579 }
2580 0x3e30bf13f1c07eff => {
2581 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2582 let mut req = fidl::new_empty!(
2583 DeviceWriteConfig16Request,
2584 fidl::encoding::DefaultFuchsiaResourceDialect
2585 );
2586 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceWriteConfig16Request>(&header, _body_bytes, handles, &mut req)?;
2587 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2588 Ok(DeviceRequest::WriteConfig16 {
2589 offset: req.offset,
2590 value: req.value,
2591
2592 responder: DeviceWriteConfig16Responder {
2593 control_handle: std::mem::ManuallyDrop::new(control_handle),
2594 tx_id: header.tx_id,
2595 },
2596 })
2597 }
2598 0x161584e5199b388 => {
2599 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2600 let mut req = fidl::new_empty!(
2601 DeviceWriteConfig32Request,
2602 fidl::encoding::DefaultFuchsiaResourceDialect
2603 );
2604 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceWriteConfig32Request>(&header, _body_bytes, handles, &mut req)?;
2605 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2606 Ok(DeviceRequest::WriteConfig32 {
2607 offset: req.offset,
2608 value: req.value,
2609
2610 responder: DeviceWriteConfig32Responder {
2611 control_handle: std::mem::ManuallyDrop::new(control_handle),
2612 tx_id: header.tx_id,
2613 },
2614 })
2615 }
2616 0x3a050fde46f3ba0f => {
2617 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2618 let mut req = fidl::new_empty!(
2619 DeviceGetCapabilitiesRequest,
2620 fidl::encoding::DefaultFuchsiaResourceDialect
2621 );
2622 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceGetCapabilitiesRequest>(&header, _body_bytes, handles, &mut req)?;
2623 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2624 Ok(DeviceRequest::GetCapabilities {
2625 id: req.id,
2626
2627 responder: DeviceGetCapabilitiesResponder {
2628 control_handle: std::mem::ManuallyDrop::new(control_handle),
2629 tx_id: header.tx_id,
2630 },
2631 })
2632 }
2633 0xb8573efcaae0c39 => {
2634 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2635 let mut req = fidl::new_empty!(
2636 DeviceGetExtendedCapabilitiesRequest,
2637 fidl::encoding::DefaultFuchsiaResourceDialect
2638 );
2639 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceGetExtendedCapabilitiesRequest>(&header, _body_bytes, handles, &mut req)?;
2640 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2641 Ok(DeviceRequest::GetExtendedCapabilities {
2642 id: req.id,
2643
2644 responder: DeviceGetExtendedCapabilitiesResponder {
2645 control_handle: std::mem::ManuallyDrop::new(control_handle),
2646 tx_id: header.tx_id,
2647 },
2648 })
2649 }
2650 0x5e4fe9efb12d9ee3 => {
2651 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2652 let mut req = fidl::new_empty!(
2653 DeviceGetBtiRequest,
2654 fidl::encoding::DefaultFuchsiaResourceDialect
2655 );
2656 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceGetBtiRequest>(&header, _body_bytes, handles, &mut req)?;
2657 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
2658 Ok(DeviceRequest::GetBti {
2659 index: req.index,
2660
2661 responder: DeviceGetBtiResponder {
2662 control_handle: std::mem::ManuallyDrop::new(control_handle),
2663 tx_id: header.tx_id,
2664 },
2665 })
2666 }
2667 _ => Err(fidl::Error::UnknownOrdinal {
2668 ordinal: header.ordinal,
2669 protocol_name:
2670 <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2671 }),
2672 }))
2673 },
2674 )
2675 }
2676}
2677
2678#[derive(Debug)]
2679pub enum DeviceRequest {
2680 GetDeviceInfo { responder: DeviceGetDeviceInfoResponder },
2682 GetBar { bar_id: u32, responder: DeviceGetBarResponder },
2696 SetBusMastering { enabled: bool, responder: DeviceSetBusMasteringResponder },
2704 ResetDevice { responder: DeviceResetDeviceResponder },
2715 AckInterrupt { responder: DeviceAckInterruptResponder },
2722 MapInterrupt { which_irq: u32, responder: DeviceMapInterruptResponder },
2741 GetInterruptModes { responder: DeviceGetInterruptModesResponder },
2743 SetInterruptMode {
2757 mode: InterruptMode,
2758 requested_irq_count: u32,
2759 responder: DeviceSetInterruptModeResponder,
2760 },
2761 ReadConfig8 { offset: u16, responder: DeviceReadConfig8Responder },
2771 ReadConfig16 { offset: u16, responder: DeviceReadConfig16Responder },
2781 ReadConfig32 { offset: u16, responder: DeviceReadConfig32Responder },
2791 WriteConfig8 { offset: u16, value: u8, responder: DeviceWriteConfig8Responder },
2804 WriteConfig16 { offset: u16, value: u16, responder: DeviceWriteConfig16Responder },
2817 WriteConfig32 { offset: u16, value: u32, responder: DeviceWriteConfig32Responder },
2830 GetCapabilities { id: CapabilityId, responder: DeviceGetCapabilitiesResponder },
2837 GetExtendedCapabilities {
2844 id: ExtendedCapabilityId,
2845 responder: DeviceGetExtendedCapabilitiesResponder,
2846 },
2847 GetBti { index: u32, responder: DeviceGetBtiResponder },
2855}
2856
2857impl DeviceRequest {
2858 #[allow(irrefutable_let_patterns)]
2859 pub fn into_get_device_info(self) -> Option<(DeviceGetDeviceInfoResponder)> {
2860 if let DeviceRequest::GetDeviceInfo { responder } = self { Some((responder)) } else { None }
2861 }
2862
2863 #[allow(irrefutable_let_patterns)]
2864 pub fn into_get_bar(self) -> Option<(u32, DeviceGetBarResponder)> {
2865 if let DeviceRequest::GetBar { bar_id, responder } = self {
2866 Some((bar_id, responder))
2867 } else {
2868 None
2869 }
2870 }
2871
2872 #[allow(irrefutable_let_patterns)]
2873 pub fn into_set_bus_mastering(self) -> Option<(bool, DeviceSetBusMasteringResponder)> {
2874 if let DeviceRequest::SetBusMastering { enabled, responder } = self {
2875 Some((enabled, responder))
2876 } else {
2877 None
2878 }
2879 }
2880
2881 #[allow(irrefutable_let_patterns)]
2882 pub fn into_reset_device(self) -> Option<(DeviceResetDeviceResponder)> {
2883 if let DeviceRequest::ResetDevice { responder } = self { Some((responder)) } else { None }
2884 }
2885
2886 #[allow(irrefutable_let_patterns)]
2887 pub fn into_ack_interrupt(self) -> Option<(DeviceAckInterruptResponder)> {
2888 if let DeviceRequest::AckInterrupt { responder } = self { Some((responder)) } else { None }
2889 }
2890
2891 #[allow(irrefutable_let_patterns)]
2892 pub fn into_map_interrupt(self) -> Option<(u32, DeviceMapInterruptResponder)> {
2893 if let DeviceRequest::MapInterrupt { which_irq, responder } = self {
2894 Some((which_irq, responder))
2895 } else {
2896 None
2897 }
2898 }
2899
2900 #[allow(irrefutable_let_patterns)]
2901 pub fn into_get_interrupt_modes(self) -> Option<(DeviceGetInterruptModesResponder)> {
2902 if let DeviceRequest::GetInterruptModes { responder } = self {
2903 Some((responder))
2904 } else {
2905 None
2906 }
2907 }
2908
2909 #[allow(irrefutable_let_patterns)]
2910 pub fn into_set_interrupt_mode(
2911 self,
2912 ) -> Option<(InterruptMode, u32, DeviceSetInterruptModeResponder)> {
2913 if let DeviceRequest::SetInterruptMode { mode, requested_irq_count, responder } = self {
2914 Some((mode, requested_irq_count, responder))
2915 } else {
2916 None
2917 }
2918 }
2919
2920 #[allow(irrefutable_let_patterns)]
2921 pub fn into_read_config8(self) -> Option<(u16, DeviceReadConfig8Responder)> {
2922 if let DeviceRequest::ReadConfig8 { offset, responder } = self {
2923 Some((offset, responder))
2924 } else {
2925 None
2926 }
2927 }
2928
2929 #[allow(irrefutable_let_patterns)]
2930 pub fn into_read_config16(self) -> Option<(u16, DeviceReadConfig16Responder)> {
2931 if let DeviceRequest::ReadConfig16 { offset, responder } = self {
2932 Some((offset, responder))
2933 } else {
2934 None
2935 }
2936 }
2937
2938 #[allow(irrefutable_let_patterns)]
2939 pub fn into_read_config32(self) -> Option<(u16, DeviceReadConfig32Responder)> {
2940 if let DeviceRequest::ReadConfig32 { offset, responder } = self {
2941 Some((offset, responder))
2942 } else {
2943 None
2944 }
2945 }
2946
2947 #[allow(irrefutable_let_patterns)]
2948 pub fn into_write_config8(self) -> Option<(u16, u8, DeviceWriteConfig8Responder)> {
2949 if let DeviceRequest::WriteConfig8 { offset, value, responder } = self {
2950 Some((offset, value, responder))
2951 } else {
2952 None
2953 }
2954 }
2955
2956 #[allow(irrefutable_let_patterns)]
2957 pub fn into_write_config16(self) -> Option<(u16, u16, DeviceWriteConfig16Responder)> {
2958 if let DeviceRequest::WriteConfig16 { offset, value, responder } = self {
2959 Some((offset, value, responder))
2960 } else {
2961 None
2962 }
2963 }
2964
2965 #[allow(irrefutable_let_patterns)]
2966 pub fn into_write_config32(self) -> Option<(u16, u32, DeviceWriteConfig32Responder)> {
2967 if let DeviceRequest::WriteConfig32 { offset, value, responder } = self {
2968 Some((offset, value, responder))
2969 } else {
2970 None
2971 }
2972 }
2973
2974 #[allow(irrefutable_let_patterns)]
2975 pub fn into_get_capabilities(self) -> Option<(CapabilityId, DeviceGetCapabilitiesResponder)> {
2976 if let DeviceRequest::GetCapabilities { id, responder } = self {
2977 Some((id, responder))
2978 } else {
2979 None
2980 }
2981 }
2982
2983 #[allow(irrefutable_let_patterns)]
2984 pub fn into_get_extended_capabilities(
2985 self,
2986 ) -> Option<(ExtendedCapabilityId, DeviceGetExtendedCapabilitiesResponder)> {
2987 if let DeviceRequest::GetExtendedCapabilities { id, responder } = self {
2988 Some((id, responder))
2989 } else {
2990 None
2991 }
2992 }
2993
2994 #[allow(irrefutable_let_patterns)]
2995 pub fn into_get_bti(self) -> Option<(u32, DeviceGetBtiResponder)> {
2996 if let DeviceRequest::GetBti { index, responder } = self {
2997 Some((index, responder))
2998 } else {
2999 None
3000 }
3001 }
3002
3003 pub fn method_name(&self) -> &'static str {
3005 match *self {
3006 DeviceRequest::GetDeviceInfo { .. } => "get_device_info",
3007 DeviceRequest::GetBar { .. } => "get_bar",
3008 DeviceRequest::SetBusMastering { .. } => "set_bus_mastering",
3009 DeviceRequest::ResetDevice { .. } => "reset_device",
3010 DeviceRequest::AckInterrupt { .. } => "ack_interrupt",
3011 DeviceRequest::MapInterrupt { .. } => "map_interrupt",
3012 DeviceRequest::GetInterruptModes { .. } => "get_interrupt_modes",
3013 DeviceRequest::SetInterruptMode { .. } => "set_interrupt_mode",
3014 DeviceRequest::ReadConfig8 { .. } => "read_config8",
3015 DeviceRequest::ReadConfig16 { .. } => "read_config16",
3016 DeviceRequest::ReadConfig32 { .. } => "read_config32",
3017 DeviceRequest::WriteConfig8 { .. } => "write_config8",
3018 DeviceRequest::WriteConfig16 { .. } => "write_config16",
3019 DeviceRequest::WriteConfig32 { .. } => "write_config32",
3020 DeviceRequest::GetCapabilities { .. } => "get_capabilities",
3021 DeviceRequest::GetExtendedCapabilities { .. } => "get_extended_capabilities",
3022 DeviceRequest::GetBti { .. } => "get_bti",
3023 }
3024 }
3025}
3026
3027#[derive(Debug, Clone)]
3028pub struct DeviceControlHandle {
3029 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
3030}
3031
3032impl fidl::endpoints::ControlHandle for DeviceControlHandle {
3033 fn shutdown(&self) {
3034 self.inner.shutdown()
3035 }
3036
3037 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
3038 self.inner.shutdown_with_epitaph(status)
3039 }
3040
3041 fn is_closed(&self) -> bool {
3042 self.inner.channel().is_closed()
3043 }
3044 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
3045 self.inner.channel().on_closed()
3046 }
3047
3048 #[cfg(target_os = "fuchsia")]
3049 fn signal_peer(
3050 &self,
3051 clear_mask: zx::Signals,
3052 set_mask: zx::Signals,
3053 ) -> Result<(), zx_status::Status> {
3054 use fidl::Peered;
3055 self.inner.channel().signal_peer(clear_mask, set_mask)
3056 }
3057}
3058
3059impl DeviceControlHandle {}
3060
3061#[must_use = "FIDL methods require a response to be sent"]
3062#[derive(Debug)]
3063pub struct DeviceGetDeviceInfoResponder {
3064 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3065 tx_id: u32,
3066}
3067
3068impl std::ops::Drop for DeviceGetDeviceInfoResponder {
3072 fn drop(&mut self) {
3073 self.control_handle.shutdown();
3074 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3076 }
3077}
3078
3079impl fidl::endpoints::Responder for DeviceGetDeviceInfoResponder {
3080 type ControlHandle = DeviceControlHandle;
3081
3082 fn control_handle(&self) -> &DeviceControlHandle {
3083 &self.control_handle
3084 }
3085
3086 fn drop_without_shutdown(mut self) {
3087 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3089 std::mem::forget(self);
3091 }
3092}
3093
3094impl DeviceGetDeviceInfoResponder {
3095 pub fn send(self, mut info: &DeviceInfo) -> Result<(), fidl::Error> {
3099 let _result = self.send_raw(info);
3100 if _result.is_err() {
3101 self.control_handle.shutdown();
3102 }
3103 self.drop_without_shutdown();
3104 _result
3105 }
3106
3107 pub fn send_no_shutdown_on_err(self, mut info: &DeviceInfo) -> Result<(), fidl::Error> {
3109 let _result = self.send_raw(info);
3110 self.drop_without_shutdown();
3111 _result
3112 }
3113
3114 fn send_raw(&self, mut info: &DeviceInfo) -> Result<(), fidl::Error> {
3115 self.control_handle.inner.send::<DeviceGetDeviceInfoResponse>(
3116 (info,),
3117 self.tx_id,
3118 0x5599d144d4329916,
3119 fidl::encoding::DynamicFlags::empty(),
3120 )
3121 }
3122}
3123
3124#[must_use = "FIDL methods require a response to be sent"]
3125#[derive(Debug)]
3126pub struct DeviceGetBarResponder {
3127 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3128 tx_id: u32,
3129}
3130
3131impl std::ops::Drop for DeviceGetBarResponder {
3135 fn drop(&mut self) {
3136 self.control_handle.shutdown();
3137 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3139 }
3140}
3141
3142impl fidl::endpoints::Responder for DeviceGetBarResponder {
3143 type ControlHandle = DeviceControlHandle;
3144
3145 fn control_handle(&self) -> &DeviceControlHandle {
3146 &self.control_handle
3147 }
3148
3149 fn drop_without_shutdown(mut self) {
3150 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3152 std::mem::forget(self);
3154 }
3155}
3156
3157impl DeviceGetBarResponder {
3158 pub fn send(self, mut result: Result<Bar, i32>) -> Result<(), fidl::Error> {
3162 let _result = self.send_raw(result);
3163 if _result.is_err() {
3164 self.control_handle.shutdown();
3165 }
3166 self.drop_without_shutdown();
3167 _result
3168 }
3169
3170 pub fn send_no_shutdown_on_err(self, mut result: Result<Bar, i32>) -> Result<(), fidl::Error> {
3172 let _result = self.send_raw(result);
3173 self.drop_without_shutdown();
3174 _result
3175 }
3176
3177 fn send_raw(&self, mut result: Result<Bar, i32>) -> Result<(), fidl::Error> {
3178 self.control_handle.inner.send::<fidl::encoding::ResultType<DeviceGetBarResponse, i32>>(
3179 result.as_mut().map_err(|e| *e).map(|result| (result,)),
3180 self.tx_id,
3181 0x6b2683f6fbbff679,
3182 fidl::encoding::DynamicFlags::empty(),
3183 )
3184 }
3185}
3186
3187#[must_use = "FIDL methods require a response to be sent"]
3188#[derive(Debug)]
3189pub struct DeviceSetBusMasteringResponder {
3190 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3191 tx_id: u32,
3192}
3193
3194impl std::ops::Drop for DeviceSetBusMasteringResponder {
3198 fn drop(&mut self) {
3199 self.control_handle.shutdown();
3200 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3202 }
3203}
3204
3205impl fidl::endpoints::Responder for DeviceSetBusMasteringResponder {
3206 type ControlHandle = DeviceControlHandle;
3207
3208 fn control_handle(&self) -> &DeviceControlHandle {
3209 &self.control_handle
3210 }
3211
3212 fn drop_without_shutdown(mut self) {
3213 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3215 std::mem::forget(self);
3217 }
3218}
3219
3220impl DeviceSetBusMasteringResponder {
3221 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3225 let _result = self.send_raw(result);
3226 if _result.is_err() {
3227 self.control_handle.shutdown();
3228 }
3229 self.drop_without_shutdown();
3230 _result
3231 }
3232
3233 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3235 let _result = self.send_raw(result);
3236 self.drop_without_shutdown();
3237 _result
3238 }
3239
3240 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3241 self.control_handle
3242 .inner
3243 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3244 result,
3245 self.tx_id,
3246 0x3421e9e030211003,
3247 fidl::encoding::DynamicFlags::empty(),
3248 )
3249 }
3250}
3251
3252#[must_use = "FIDL methods require a response to be sent"]
3253#[derive(Debug)]
3254pub struct DeviceResetDeviceResponder {
3255 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3256 tx_id: u32,
3257}
3258
3259impl std::ops::Drop for DeviceResetDeviceResponder {
3263 fn drop(&mut self) {
3264 self.control_handle.shutdown();
3265 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3267 }
3268}
3269
3270impl fidl::endpoints::Responder for DeviceResetDeviceResponder {
3271 type ControlHandle = DeviceControlHandle;
3272
3273 fn control_handle(&self) -> &DeviceControlHandle {
3274 &self.control_handle
3275 }
3276
3277 fn drop_without_shutdown(mut self) {
3278 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3280 std::mem::forget(self);
3282 }
3283}
3284
3285impl DeviceResetDeviceResponder {
3286 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3290 let _result = self.send_raw(result);
3291 if _result.is_err() {
3292 self.control_handle.shutdown();
3293 }
3294 self.drop_without_shutdown();
3295 _result
3296 }
3297
3298 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3300 let _result = self.send_raw(result);
3301 self.drop_without_shutdown();
3302 _result
3303 }
3304
3305 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3306 self.control_handle
3307 .inner
3308 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3309 result,
3310 self.tx_id,
3311 0x3c5b7579bb6f8b9f,
3312 fidl::encoding::DynamicFlags::empty(),
3313 )
3314 }
3315}
3316
3317#[must_use = "FIDL methods require a response to be sent"]
3318#[derive(Debug)]
3319pub struct DeviceAckInterruptResponder {
3320 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3321 tx_id: u32,
3322}
3323
3324impl std::ops::Drop for DeviceAckInterruptResponder {
3328 fn drop(&mut self) {
3329 self.control_handle.shutdown();
3330 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3332 }
3333}
3334
3335impl fidl::endpoints::Responder for DeviceAckInterruptResponder {
3336 type ControlHandle = DeviceControlHandle;
3337
3338 fn control_handle(&self) -> &DeviceControlHandle {
3339 &self.control_handle
3340 }
3341
3342 fn drop_without_shutdown(mut self) {
3343 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3345 std::mem::forget(self);
3347 }
3348}
3349
3350impl DeviceAckInterruptResponder {
3351 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3355 let _result = self.send_raw(result);
3356 if _result.is_err() {
3357 self.control_handle.shutdown();
3358 }
3359 self.drop_without_shutdown();
3360 _result
3361 }
3362
3363 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3365 let _result = self.send_raw(result);
3366 self.drop_without_shutdown();
3367 _result
3368 }
3369
3370 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3371 self.control_handle
3372 .inner
3373 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3374 result,
3375 self.tx_id,
3376 0x70742f64692d5a6b,
3377 fidl::encoding::DynamicFlags::empty(),
3378 )
3379 }
3380}
3381
3382#[must_use = "FIDL methods require a response to be sent"]
3383#[derive(Debug)]
3384pub struct DeviceMapInterruptResponder {
3385 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3386 tx_id: u32,
3387}
3388
3389impl std::ops::Drop for DeviceMapInterruptResponder {
3393 fn drop(&mut self) {
3394 self.control_handle.shutdown();
3395 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3397 }
3398}
3399
3400impl fidl::endpoints::Responder for DeviceMapInterruptResponder {
3401 type ControlHandle = DeviceControlHandle;
3402
3403 fn control_handle(&self) -> &DeviceControlHandle {
3404 &self.control_handle
3405 }
3406
3407 fn drop_without_shutdown(mut self) {
3408 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3410 std::mem::forget(self);
3412 }
3413}
3414
3415impl DeviceMapInterruptResponder {
3416 pub fn send(self, mut result: Result<fidl::Interrupt, i32>) -> Result<(), fidl::Error> {
3420 let _result = self.send_raw(result);
3421 if _result.is_err() {
3422 self.control_handle.shutdown();
3423 }
3424 self.drop_without_shutdown();
3425 _result
3426 }
3427
3428 pub fn send_no_shutdown_on_err(
3430 self,
3431 mut result: Result<fidl::Interrupt, i32>,
3432 ) -> Result<(), fidl::Error> {
3433 let _result = self.send_raw(result);
3434 self.drop_without_shutdown();
3435 _result
3436 }
3437
3438 fn send_raw(&self, mut result: Result<fidl::Interrupt, i32>) -> Result<(), fidl::Error> {
3439 self.control_handle
3440 .inner
3441 .send::<fidl::encoding::ResultType<DeviceMapInterruptResponse, i32>>(
3442 result.map(|interrupt| (interrupt,)),
3443 self.tx_id,
3444 0x25eeff9d34a1fa13,
3445 fidl::encoding::DynamicFlags::empty(),
3446 )
3447 }
3448}
3449
3450#[must_use = "FIDL methods require a response to be sent"]
3451#[derive(Debug)]
3452pub struct DeviceGetInterruptModesResponder {
3453 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3454 tx_id: u32,
3455}
3456
3457impl std::ops::Drop for DeviceGetInterruptModesResponder {
3461 fn drop(&mut self) {
3462 self.control_handle.shutdown();
3463 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3465 }
3466}
3467
3468impl fidl::endpoints::Responder for DeviceGetInterruptModesResponder {
3469 type ControlHandle = DeviceControlHandle;
3470
3471 fn control_handle(&self) -> &DeviceControlHandle {
3472 &self.control_handle
3473 }
3474
3475 fn drop_without_shutdown(mut self) {
3476 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3478 std::mem::forget(self);
3480 }
3481}
3482
3483impl DeviceGetInterruptModesResponder {
3484 pub fn send(self, mut modes: &InterruptModes) -> Result<(), fidl::Error> {
3488 let _result = self.send_raw(modes);
3489 if _result.is_err() {
3490 self.control_handle.shutdown();
3491 }
3492 self.drop_without_shutdown();
3493 _result
3494 }
3495
3496 pub fn send_no_shutdown_on_err(self, mut modes: &InterruptModes) -> Result<(), fidl::Error> {
3498 let _result = self.send_raw(modes);
3499 self.drop_without_shutdown();
3500 _result
3501 }
3502
3503 fn send_raw(&self, mut modes: &InterruptModes) -> Result<(), fidl::Error> {
3504 self.control_handle.inner.send::<DeviceGetInterruptModesResponse>(
3505 (modes,),
3506 self.tx_id,
3507 0x93f4cd8f79e9f4a,
3508 fidl::encoding::DynamicFlags::empty(),
3509 )
3510 }
3511}
3512
3513#[must_use = "FIDL methods require a response to be sent"]
3514#[derive(Debug)]
3515pub struct DeviceSetInterruptModeResponder {
3516 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3517 tx_id: u32,
3518}
3519
3520impl std::ops::Drop for DeviceSetInterruptModeResponder {
3524 fn drop(&mut self) {
3525 self.control_handle.shutdown();
3526 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3528 }
3529}
3530
3531impl fidl::endpoints::Responder for DeviceSetInterruptModeResponder {
3532 type ControlHandle = DeviceControlHandle;
3533
3534 fn control_handle(&self) -> &DeviceControlHandle {
3535 &self.control_handle
3536 }
3537
3538 fn drop_without_shutdown(mut self) {
3539 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3541 std::mem::forget(self);
3543 }
3544}
3545
3546impl DeviceSetInterruptModeResponder {
3547 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3551 let _result = self.send_raw(result);
3552 if _result.is_err() {
3553 self.control_handle.shutdown();
3554 }
3555 self.drop_without_shutdown();
3556 _result
3557 }
3558
3559 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3561 let _result = self.send_raw(result);
3562 self.drop_without_shutdown();
3563 _result
3564 }
3565
3566 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3567 self.control_handle
3568 .inner
3569 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3570 result,
3571 self.tx_id,
3572 0x85bebad3eb24866,
3573 fidl::encoding::DynamicFlags::empty(),
3574 )
3575 }
3576}
3577
3578#[must_use = "FIDL methods require a response to be sent"]
3579#[derive(Debug)]
3580pub struct DeviceReadConfig8Responder {
3581 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3582 tx_id: u32,
3583}
3584
3585impl std::ops::Drop for DeviceReadConfig8Responder {
3589 fn drop(&mut self) {
3590 self.control_handle.shutdown();
3591 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3593 }
3594}
3595
3596impl fidl::endpoints::Responder for DeviceReadConfig8Responder {
3597 type ControlHandle = DeviceControlHandle;
3598
3599 fn control_handle(&self) -> &DeviceControlHandle {
3600 &self.control_handle
3601 }
3602
3603 fn drop_without_shutdown(mut self) {
3604 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3606 std::mem::forget(self);
3608 }
3609}
3610
3611impl DeviceReadConfig8Responder {
3612 pub fn send(self, mut result: Result<u8, i32>) -> Result<(), fidl::Error> {
3616 let _result = self.send_raw(result);
3617 if _result.is_err() {
3618 self.control_handle.shutdown();
3619 }
3620 self.drop_without_shutdown();
3621 _result
3622 }
3623
3624 pub fn send_no_shutdown_on_err(self, mut result: Result<u8, i32>) -> Result<(), fidl::Error> {
3626 let _result = self.send_raw(result);
3627 self.drop_without_shutdown();
3628 _result
3629 }
3630
3631 fn send_raw(&self, mut result: Result<u8, i32>) -> Result<(), fidl::Error> {
3632 self.control_handle
3633 .inner
3634 .send::<fidl::encoding::ResultType<DeviceReadConfig8Response, i32>>(
3635 result.map(|value| (value,)),
3636 self.tx_id,
3637 0x28f9eb9e6dadda1c,
3638 fidl::encoding::DynamicFlags::empty(),
3639 )
3640 }
3641}
3642
3643#[must_use = "FIDL methods require a response to be sent"]
3644#[derive(Debug)]
3645pub struct DeviceReadConfig16Responder {
3646 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3647 tx_id: u32,
3648}
3649
3650impl std::ops::Drop for DeviceReadConfig16Responder {
3654 fn drop(&mut self) {
3655 self.control_handle.shutdown();
3656 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3658 }
3659}
3660
3661impl fidl::endpoints::Responder for DeviceReadConfig16Responder {
3662 type ControlHandle = DeviceControlHandle;
3663
3664 fn control_handle(&self) -> &DeviceControlHandle {
3665 &self.control_handle
3666 }
3667
3668 fn drop_without_shutdown(mut self) {
3669 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3671 std::mem::forget(self);
3673 }
3674}
3675
3676impl DeviceReadConfig16Responder {
3677 pub fn send(self, mut result: Result<u16, i32>) -> Result<(), fidl::Error> {
3681 let _result = self.send_raw(result);
3682 if _result.is_err() {
3683 self.control_handle.shutdown();
3684 }
3685 self.drop_without_shutdown();
3686 _result
3687 }
3688
3689 pub fn send_no_shutdown_on_err(self, mut result: Result<u16, i32>) -> Result<(), fidl::Error> {
3691 let _result = self.send_raw(result);
3692 self.drop_without_shutdown();
3693 _result
3694 }
3695
3696 fn send_raw(&self, mut result: Result<u16, i32>) -> Result<(), fidl::Error> {
3697 self.control_handle
3698 .inner
3699 .send::<fidl::encoding::ResultType<DeviceReadConfig16Response, i32>>(
3700 result.map(|value| (value,)),
3701 self.tx_id,
3702 0x3bcda6171a3270bb,
3703 fidl::encoding::DynamicFlags::empty(),
3704 )
3705 }
3706}
3707
3708#[must_use = "FIDL methods require a response to be sent"]
3709#[derive(Debug)]
3710pub struct DeviceReadConfig32Responder {
3711 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3712 tx_id: u32,
3713}
3714
3715impl std::ops::Drop for DeviceReadConfig32Responder {
3719 fn drop(&mut self) {
3720 self.control_handle.shutdown();
3721 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3723 }
3724}
3725
3726impl fidl::endpoints::Responder for DeviceReadConfig32Responder {
3727 type ControlHandle = DeviceControlHandle;
3728
3729 fn control_handle(&self) -> &DeviceControlHandle {
3730 &self.control_handle
3731 }
3732
3733 fn drop_without_shutdown(mut self) {
3734 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3736 std::mem::forget(self);
3738 }
3739}
3740
3741impl DeviceReadConfig32Responder {
3742 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
3746 let _result = self.send_raw(result);
3747 if _result.is_err() {
3748 self.control_handle.shutdown();
3749 }
3750 self.drop_without_shutdown();
3751 _result
3752 }
3753
3754 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
3756 let _result = self.send_raw(result);
3757 self.drop_without_shutdown();
3758 _result
3759 }
3760
3761 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
3762 self.control_handle
3763 .inner
3764 .send::<fidl::encoding::ResultType<DeviceReadConfig32Response, i32>>(
3765 result.map(|value| (value,)),
3766 self.tx_id,
3767 0x55357535402f7507,
3768 fidl::encoding::DynamicFlags::empty(),
3769 )
3770 }
3771}
3772
3773#[must_use = "FIDL methods require a response to be sent"]
3774#[derive(Debug)]
3775pub struct DeviceWriteConfig8Responder {
3776 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3777 tx_id: u32,
3778}
3779
3780impl std::ops::Drop for DeviceWriteConfig8Responder {
3784 fn drop(&mut self) {
3785 self.control_handle.shutdown();
3786 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3788 }
3789}
3790
3791impl fidl::endpoints::Responder for DeviceWriteConfig8Responder {
3792 type ControlHandle = DeviceControlHandle;
3793
3794 fn control_handle(&self) -> &DeviceControlHandle {
3795 &self.control_handle
3796 }
3797
3798 fn drop_without_shutdown(mut self) {
3799 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3801 std::mem::forget(self);
3803 }
3804}
3805
3806impl DeviceWriteConfig8Responder {
3807 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3811 let _result = self.send_raw(result);
3812 if _result.is_err() {
3813 self.control_handle.shutdown();
3814 }
3815 self.drop_without_shutdown();
3816 _result
3817 }
3818
3819 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3821 let _result = self.send_raw(result);
3822 self.drop_without_shutdown();
3823 _result
3824 }
3825
3826 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3827 self.control_handle
3828 .inner
3829 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3830 result,
3831 self.tx_id,
3832 0x49a0719e1433cff,
3833 fidl::encoding::DynamicFlags::empty(),
3834 )
3835 }
3836}
3837
3838#[must_use = "FIDL methods require a response to be sent"]
3839#[derive(Debug)]
3840pub struct DeviceWriteConfig16Responder {
3841 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3842 tx_id: u32,
3843}
3844
3845impl std::ops::Drop for DeviceWriteConfig16Responder {
3849 fn drop(&mut self) {
3850 self.control_handle.shutdown();
3851 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3853 }
3854}
3855
3856impl fidl::endpoints::Responder for DeviceWriteConfig16Responder {
3857 type ControlHandle = DeviceControlHandle;
3858
3859 fn control_handle(&self) -> &DeviceControlHandle {
3860 &self.control_handle
3861 }
3862
3863 fn drop_without_shutdown(mut self) {
3864 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3866 std::mem::forget(self);
3868 }
3869}
3870
3871impl DeviceWriteConfig16Responder {
3872 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3876 let _result = self.send_raw(result);
3877 if _result.is_err() {
3878 self.control_handle.shutdown();
3879 }
3880 self.drop_without_shutdown();
3881 _result
3882 }
3883
3884 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3886 let _result = self.send_raw(result);
3887 self.drop_without_shutdown();
3888 _result
3889 }
3890
3891 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3892 self.control_handle
3893 .inner
3894 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3895 result,
3896 self.tx_id,
3897 0x3e30bf13f1c07eff,
3898 fidl::encoding::DynamicFlags::empty(),
3899 )
3900 }
3901}
3902
3903#[must_use = "FIDL methods require a response to be sent"]
3904#[derive(Debug)]
3905pub struct DeviceWriteConfig32Responder {
3906 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3907 tx_id: u32,
3908}
3909
3910impl std::ops::Drop for DeviceWriteConfig32Responder {
3914 fn drop(&mut self) {
3915 self.control_handle.shutdown();
3916 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3918 }
3919}
3920
3921impl fidl::endpoints::Responder for DeviceWriteConfig32Responder {
3922 type ControlHandle = DeviceControlHandle;
3923
3924 fn control_handle(&self) -> &DeviceControlHandle {
3925 &self.control_handle
3926 }
3927
3928 fn drop_without_shutdown(mut self) {
3929 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3931 std::mem::forget(self);
3933 }
3934}
3935
3936impl DeviceWriteConfig32Responder {
3937 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3941 let _result = self.send_raw(result);
3942 if _result.is_err() {
3943 self.control_handle.shutdown();
3944 }
3945 self.drop_without_shutdown();
3946 _result
3947 }
3948
3949 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3951 let _result = self.send_raw(result);
3952 self.drop_without_shutdown();
3953 _result
3954 }
3955
3956 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
3957 self.control_handle
3958 .inner
3959 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
3960 result,
3961 self.tx_id,
3962 0x161584e5199b388,
3963 fidl::encoding::DynamicFlags::empty(),
3964 )
3965 }
3966}
3967
3968#[must_use = "FIDL methods require a response to be sent"]
3969#[derive(Debug)]
3970pub struct DeviceGetCapabilitiesResponder {
3971 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
3972 tx_id: u32,
3973}
3974
3975impl std::ops::Drop for DeviceGetCapabilitiesResponder {
3979 fn drop(&mut self) {
3980 self.control_handle.shutdown();
3981 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3983 }
3984}
3985
3986impl fidl::endpoints::Responder for DeviceGetCapabilitiesResponder {
3987 type ControlHandle = DeviceControlHandle;
3988
3989 fn control_handle(&self) -> &DeviceControlHandle {
3990 &self.control_handle
3991 }
3992
3993 fn drop_without_shutdown(mut self) {
3994 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
3996 std::mem::forget(self);
3998 }
3999}
4000
4001impl DeviceGetCapabilitiesResponder {
4002 pub fn send(self, mut offsets: &[u8]) -> Result<(), fidl::Error> {
4006 let _result = self.send_raw(offsets);
4007 if _result.is_err() {
4008 self.control_handle.shutdown();
4009 }
4010 self.drop_without_shutdown();
4011 _result
4012 }
4013
4014 pub fn send_no_shutdown_on_err(self, mut offsets: &[u8]) -> Result<(), fidl::Error> {
4016 let _result = self.send_raw(offsets);
4017 self.drop_without_shutdown();
4018 _result
4019 }
4020
4021 fn send_raw(&self, mut offsets: &[u8]) -> Result<(), fidl::Error> {
4022 self.control_handle.inner.send::<DeviceGetCapabilitiesResponse>(
4023 (offsets,),
4024 self.tx_id,
4025 0x3a050fde46f3ba0f,
4026 fidl::encoding::DynamicFlags::empty(),
4027 )
4028 }
4029}
4030
4031#[must_use = "FIDL methods require a response to be sent"]
4032#[derive(Debug)]
4033pub struct DeviceGetExtendedCapabilitiesResponder {
4034 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
4035 tx_id: u32,
4036}
4037
4038impl std::ops::Drop for DeviceGetExtendedCapabilitiesResponder {
4042 fn drop(&mut self) {
4043 self.control_handle.shutdown();
4044 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4046 }
4047}
4048
4049impl fidl::endpoints::Responder for DeviceGetExtendedCapabilitiesResponder {
4050 type ControlHandle = DeviceControlHandle;
4051
4052 fn control_handle(&self) -> &DeviceControlHandle {
4053 &self.control_handle
4054 }
4055
4056 fn drop_without_shutdown(mut self) {
4057 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4059 std::mem::forget(self);
4061 }
4062}
4063
4064impl DeviceGetExtendedCapabilitiesResponder {
4065 pub fn send(self, mut offsets: &[u16]) -> Result<(), fidl::Error> {
4069 let _result = self.send_raw(offsets);
4070 if _result.is_err() {
4071 self.control_handle.shutdown();
4072 }
4073 self.drop_without_shutdown();
4074 _result
4075 }
4076
4077 pub fn send_no_shutdown_on_err(self, mut offsets: &[u16]) -> Result<(), fidl::Error> {
4079 let _result = self.send_raw(offsets);
4080 self.drop_without_shutdown();
4081 _result
4082 }
4083
4084 fn send_raw(&self, mut offsets: &[u16]) -> Result<(), fidl::Error> {
4085 self.control_handle.inner.send::<DeviceGetExtendedCapabilitiesResponse>(
4086 (offsets,),
4087 self.tx_id,
4088 0xb8573efcaae0c39,
4089 fidl::encoding::DynamicFlags::empty(),
4090 )
4091 }
4092}
4093
4094#[must_use = "FIDL methods require a response to be sent"]
4095#[derive(Debug)]
4096pub struct DeviceGetBtiResponder {
4097 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
4098 tx_id: u32,
4099}
4100
4101impl std::ops::Drop for DeviceGetBtiResponder {
4105 fn drop(&mut self) {
4106 self.control_handle.shutdown();
4107 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4109 }
4110}
4111
4112impl fidl::endpoints::Responder for DeviceGetBtiResponder {
4113 type ControlHandle = DeviceControlHandle;
4114
4115 fn control_handle(&self) -> &DeviceControlHandle {
4116 &self.control_handle
4117 }
4118
4119 fn drop_without_shutdown(mut self) {
4120 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
4122 std::mem::forget(self);
4124 }
4125}
4126
4127impl DeviceGetBtiResponder {
4128 pub fn send(self, mut result: Result<fidl::Bti, i32>) -> Result<(), fidl::Error> {
4132 let _result = self.send_raw(result);
4133 if _result.is_err() {
4134 self.control_handle.shutdown();
4135 }
4136 self.drop_without_shutdown();
4137 _result
4138 }
4139
4140 pub fn send_no_shutdown_on_err(
4142 self,
4143 mut result: Result<fidl::Bti, i32>,
4144 ) -> Result<(), fidl::Error> {
4145 let _result = self.send_raw(result);
4146 self.drop_without_shutdown();
4147 _result
4148 }
4149
4150 fn send_raw(&self, mut result: Result<fidl::Bti, i32>) -> Result<(), fidl::Error> {
4151 self.control_handle.inner.send::<fidl::encoding::ResultType<DeviceGetBtiResponse, i32>>(
4152 result.map(|bti| (bti,)),
4153 self.tx_id,
4154 0x5e4fe9efb12d9ee3,
4155 fidl::encoding::DynamicFlags::empty(),
4156 )
4157 }
4158}
4159
4160#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4161pub struct BusServiceMarker;
4162
4163#[cfg(target_os = "fuchsia")]
4164impl fidl::endpoints::ServiceMarker for BusServiceMarker {
4165 type Proxy = BusServiceProxy;
4166 type Request = BusServiceRequest;
4167 const SERVICE_NAME: &'static str = "fuchsia.hardware.pci.BusService";
4168}
4169
4170#[cfg(target_os = "fuchsia")]
4173pub enum BusServiceRequest {
4174 Bus(BusRequestStream),
4175}
4176
4177#[cfg(target_os = "fuchsia")]
4178impl fidl::endpoints::ServiceRequest for BusServiceRequest {
4179 type Service = BusServiceMarker;
4180
4181 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
4182 match name {
4183 "bus" => Self::Bus(<BusRequestStream as fidl::endpoints::RequestStream>::from_channel(
4184 _channel,
4185 )),
4186 _ => panic!("no such member protocol name for service BusService"),
4187 }
4188 }
4189
4190 fn member_names() -> &'static [&'static str] {
4191 &["bus"]
4192 }
4193}
4194#[cfg(target_os = "fuchsia")]
4195pub struct BusServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
4196
4197#[cfg(target_os = "fuchsia")]
4198impl fidl::endpoints::ServiceProxy for BusServiceProxy {
4199 type Service = BusServiceMarker;
4200
4201 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
4202 Self(opener)
4203 }
4204}
4205
4206#[cfg(target_os = "fuchsia")]
4207impl BusServiceProxy {
4208 pub fn connect_to_bus(&self) -> Result<BusProxy, fidl::Error> {
4209 let (proxy, server_end) = fidl::endpoints::create_proxy::<BusMarker>();
4210 self.connect_channel_to_bus(server_end)?;
4211 Ok(proxy)
4212 }
4213
4214 pub fn connect_to_bus_sync(&self) -> Result<BusSynchronousProxy, fidl::Error> {
4217 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<BusMarker>();
4218 self.connect_channel_to_bus(server_end)?;
4219 Ok(proxy)
4220 }
4221
4222 pub fn connect_channel_to_bus(
4225 &self,
4226 server_end: fidl::endpoints::ServerEnd<BusMarker>,
4227 ) -> Result<(), fidl::Error> {
4228 self.0.open_member("bus", server_end.into_channel())
4229 }
4230
4231 pub fn instance_name(&self) -> &str {
4232 self.0.instance_name()
4233 }
4234}
4235
4236#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
4237pub struct ServiceMarker;
4238
4239#[cfg(target_os = "fuchsia")]
4240impl fidl::endpoints::ServiceMarker for ServiceMarker {
4241 type Proxy = ServiceProxy;
4242 type Request = ServiceRequest;
4243 const SERVICE_NAME: &'static str = "fuchsia.hardware.pci.Service";
4244}
4245
4246#[cfg(target_os = "fuchsia")]
4249pub enum ServiceRequest {
4250 Device(DeviceRequestStream),
4251}
4252
4253#[cfg(target_os = "fuchsia")]
4254impl fidl::endpoints::ServiceRequest for ServiceRequest {
4255 type Service = ServiceMarker;
4256
4257 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
4258 match name {
4259 "device" => Self::Device(
4260 <DeviceRequestStream as fidl::endpoints::RequestStream>::from_channel(_channel),
4261 ),
4262 _ => panic!("no such member protocol name for service Service"),
4263 }
4264 }
4265
4266 fn member_names() -> &'static [&'static str] {
4267 &["device"]
4268 }
4269}
4270#[cfg(target_os = "fuchsia")]
4271pub struct ServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
4272
4273#[cfg(target_os = "fuchsia")]
4274impl fidl::endpoints::ServiceProxy for ServiceProxy {
4275 type Service = ServiceMarker;
4276
4277 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
4278 Self(opener)
4279 }
4280}
4281
4282#[cfg(target_os = "fuchsia")]
4283impl ServiceProxy {
4284 pub fn connect_to_device(&self) -> Result<DeviceProxy, fidl::Error> {
4285 let (proxy, server_end) = fidl::endpoints::create_proxy::<DeviceMarker>();
4286 self.connect_channel_to_device(server_end)?;
4287 Ok(proxy)
4288 }
4289
4290 pub fn connect_to_device_sync(&self) -> Result<DeviceSynchronousProxy, fidl::Error> {
4293 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<DeviceMarker>();
4294 self.connect_channel_to_device(server_end)?;
4295 Ok(proxy)
4296 }
4297
4298 pub fn connect_channel_to_device(
4301 &self,
4302 server_end: fidl::endpoints::ServerEnd<DeviceMarker>,
4303 ) -> Result<(), fidl::Error> {
4304 self.0.open_member("device", server_end.into_channel())
4305 }
4306
4307 pub fn instance_name(&self) -> &str {
4308 self.0.instance_name()
4309 }
4310}
4311
4312mod internal {
4313 use super::*;
4314
4315 impl fidl::encoding::ResourceTypeMarker for Bar {
4316 type Borrowed<'a> = &'a mut Self;
4317 fn take_or_borrow<'a>(
4318 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4319 ) -> Self::Borrowed<'a> {
4320 value
4321 }
4322 }
4323
4324 unsafe impl fidl::encoding::TypeMarker for Bar {
4325 type Owned = Self;
4326
4327 #[inline(always)]
4328 fn inline_align(_context: fidl::encoding::Context) -> usize {
4329 8
4330 }
4331
4332 #[inline(always)]
4333 fn inline_size(_context: fidl::encoding::Context) -> usize {
4334 32
4335 }
4336 }
4337
4338 unsafe impl fidl::encoding::Encode<Bar, fidl::encoding::DefaultFuchsiaResourceDialect>
4339 for &mut Bar
4340 {
4341 #[inline]
4342 unsafe fn encode(
4343 self,
4344 encoder: &mut fidl::encoding::Encoder<
4345 '_,
4346 fidl::encoding::DefaultFuchsiaResourceDialect,
4347 >,
4348 offset: usize,
4349 _depth: fidl::encoding::Depth,
4350 ) -> fidl::Result<()> {
4351 encoder.debug_check_bounds::<Bar>(offset);
4352 fidl::encoding::Encode::<Bar, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4354 (
4355 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.bar_id),
4356 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.size),
4357 <BarResult as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4358 &mut self.result,
4359 ),
4360 ),
4361 encoder,
4362 offset,
4363 _depth,
4364 )
4365 }
4366 }
4367 unsafe impl<
4368 T0: fidl::encoding::Encode<u32, fidl::encoding::DefaultFuchsiaResourceDialect>,
4369 T1: fidl::encoding::Encode<u64, fidl::encoding::DefaultFuchsiaResourceDialect>,
4370 T2: fidl::encoding::Encode<BarResult, fidl::encoding::DefaultFuchsiaResourceDialect>,
4371 > fidl::encoding::Encode<Bar, fidl::encoding::DefaultFuchsiaResourceDialect> for (T0, T1, T2)
4372 {
4373 #[inline]
4374 unsafe fn encode(
4375 self,
4376 encoder: &mut fidl::encoding::Encoder<
4377 '_,
4378 fidl::encoding::DefaultFuchsiaResourceDialect,
4379 >,
4380 offset: usize,
4381 depth: fidl::encoding::Depth,
4382 ) -> fidl::Result<()> {
4383 encoder.debug_check_bounds::<Bar>(offset);
4384 unsafe {
4387 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
4388 (ptr as *mut u64).write_unaligned(0);
4389 }
4390 self.0.encode(encoder, offset + 0, depth)?;
4392 self.1.encode(encoder, offset + 8, depth)?;
4393 self.2.encode(encoder, offset + 16, depth)?;
4394 Ok(())
4395 }
4396 }
4397
4398 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Bar {
4399 #[inline(always)]
4400 fn new_empty() -> Self {
4401 Self {
4402 bar_id: fidl::new_empty!(u32, fidl::encoding::DefaultFuchsiaResourceDialect),
4403 size: fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect),
4404 result: fidl::new_empty!(BarResult, fidl::encoding::DefaultFuchsiaResourceDialect),
4405 }
4406 }
4407
4408 #[inline]
4409 unsafe fn decode(
4410 &mut self,
4411 decoder: &mut fidl::encoding::Decoder<
4412 '_,
4413 fidl::encoding::DefaultFuchsiaResourceDialect,
4414 >,
4415 offset: usize,
4416 _depth: fidl::encoding::Depth,
4417 ) -> fidl::Result<()> {
4418 decoder.debug_check_bounds::<Self>(offset);
4419 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
4421 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4422 let mask = 0xffffffff00000000u64;
4423 let maskedval = padval & mask;
4424 if maskedval != 0 {
4425 return Err(fidl::Error::NonZeroPadding {
4426 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
4427 });
4428 }
4429 fidl::decode!(
4430 u32,
4431 fidl::encoding::DefaultFuchsiaResourceDialect,
4432 &mut self.bar_id,
4433 decoder,
4434 offset + 0,
4435 _depth
4436 )?;
4437 fidl::decode!(
4438 u64,
4439 fidl::encoding::DefaultFuchsiaResourceDialect,
4440 &mut self.size,
4441 decoder,
4442 offset + 8,
4443 _depth
4444 )?;
4445 fidl::decode!(
4446 BarResult,
4447 fidl::encoding::DefaultFuchsiaResourceDialect,
4448 &mut self.result,
4449 decoder,
4450 offset + 16,
4451 _depth
4452 )?;
4453 Ok(())
4454 }
4455 }
4456
4457 impl fidl::encoding::ResourceTypeMarker for DeviceGetBarResponse {
4458 type Borrowed<'a> = &'a mut Self;
4459 fn take_or_borrow<'a>(
4460 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4461 ) -> Self::Borrowed<'a> {
4462 value
4463 }
4464 }
4465
4466 unsafe impl fidl::encoding::TypeMarker for DeviceGetBarResponse {
4467 type Owned = Self;
4468
4469 #[inline(always)]
4470 fn inline_align(_context: fidl::encoding::Context) -> usize {
4471 8
4472 }
4473
4474 #[inline(always)]
4475 fn inline_size(_context: fidl::encoding::Context) -> usize {
4476 32
4477 }
4478 }
4479
4480 unsafe impl
4481 fidl::encoding::Encode<DeviceGetBarResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
4482 for &mut DeviceGetBarResponse
4483 {
4484 #[inline]
4485 unsafe fn encode(
4486 self,
4487 encoder: &mut fidl::encoding::Encoder<
4488 '_,
4489 fidl::encoding::DefaultFuchsiaResourceDialect,
4490 >,
4491 offset: usize,
4492 _depth: fidl::encoding::Depth,
4493 ) -> fidl::Result<()> {
4494 encoder.debug_check_bounds::<DeviceGetBarResponse>(offset);
4495 fidl::encoding::Encode::<
4497 DeviceGetBarResponse,
4498 fidl::encoding::DefaultFuchsiaResourceDialect,
4499 >::encode(
4500 (<Bar as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.result),),
4501 encoder,
4502 offset,
4503 _depth,
4504 )
4505 }
4506 }
4507 unsafe impl<T0: fidl::encoding::Encode<Bar, fidl::encoding::DefaultFuchsiaResourceDialect>>
4508 fidl::encoding::Encode<DeviceGetBarResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
4509 for (T0,)
4510 {
4511 #[inline]
4512 unsafe fn encode(
4513 self,
4514 encoder: &mut fidl::encoding::Encoder<
4515 '_,
4516 fidl::encoding::DefaultFuchsiaResourceDialect,
4517 >,
4518 offset: usize,
4519 depth: fidl::encoding::Depth,
4520 ) -> fidl::Result<()> {
4521 encoder.debug_check_bounds::<DeviceGetBarResponse>(offset);
4522 self.0.encode(encoder, offset + 0, depth)?;
4526 Ok(())
4527 }
4528 }
4529
4530 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4531 for DeviceGetBarResponse
4532 {
4533 #[inline(always)]
4534 fn new_empty() -> Self {
4535 Self { result: fidl::new_empty!(Bar, fidl::encoding::DefaultFuchsiaResourceDialect) }
4536 }
4537
4538 #[inline]
4539 unsafe fn decode(
4540 &mut self,
4541 decoder: &mut fidl::encoding::Decoder<
4542 '_,
4543 fidl::encoding::DefaultFuchsiaResourceDialect,
4544 >,
4545 offset: usize,
4546 _depth: fidl::encoding::Depth,
4547 ) -> fidl::Result<()> {
4548 decoder.debug_check_bounds::<Self>(offset);
4549 fidl::decode!(
4551 Bar,
4552 fidl::encoding::DefaultFuchsiaResourceDialect,
4553 &mut self.result,
4554 decoder,
4555 offset + 0,
4556 _depth
4557 )?;
4558 Ok(())
4559 }
4560 }
4561
4562 impl fidl::encoding::ResourceTypeMarker for DeviceGetBtiResponse {
4563 type Borrowed<'a> = &'a mut Self;
4564 fn take_or_borrow<'a>(
4565 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4566 ) -> Self::Borrowed<'a> {
4567 value
4568 }
4569 }
4570
4571 unsafe impl fidl::encoding::TypeMarker for DeviceGetBtiResponse {
4572 type Owned = Self;
4573
4574 #[inline(always)]
4575 fn inline_align(_context: fidl::encoding::Context) -> usize {
4576 4
4577 }
4578
4579 #[inline(always)]
4580 fn inline_size(_context: fidl::encoding::Context) -> usize {
4581 4
4582 }
4583 }
4584
4585 unsafe impl
4586 fidl::encoding::Encode<DeviceGetBtiResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
4587 for &mut DeviceGetBtiResponse
4588 {
4589 #[inline]
4590 unsafe fn encode(
4591 self,
4592 encoder: &mut fidl::encoding::Encoder<
4593 '_,
4594 fidl::encoding::DefaultFuchsiaResourceDialect,
4595 >,
4596 offset: usize,
4597 _depth: fidl::encoding::Depth,
4598 ) -> fidl::Result<()> {
4599 encoder.debug_check_bounds::<DeviceGetBtiResponse>(offset);
4600 fidl::encoding::Encode::<
4602 DeviceGetBtiResponse,
4603 fidl::encoding::DefaultFuchsiaResourceDialect,
4604 >::encode(
4605 (<fidl::encoding::HandleType<
4606 fidl::Bti,
4607 { fidl::ObjectType::BTI.into_raw() },
4608 2147483648,
4609 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4610 &mut self.bti
4611 ),),
4612 encoder,
4613 offset,
4614 _depth,
4615 )
4616 }
4617 }
4618 unsafe impl<
4619 T0: fidl::encoding::Encode<
4620 fidl::encoding::HandleType<
4621 fidl::Bti,
4622 { fidl::ObjectType::BTI.into_raw() },
4623 2147483648,
4624 >,
4625 fidl::encoding::DefaultFuchsiaResourceDialect,
4626 >,
4627 >
4628 fidl::encoding::Encode<DeviceGetBtiResponse, fidl::encoding::DefaultFuchsiaResourceDialect>
4629 for (T0,)
4630 {
4631 #[inline]
4632 unsafe fn encode(
4633 self,
4634 encoder: &mut fidl::encoding::Encoder<
4635 '_,
4636 fidl::encoding::DefaultFuchsiaResourceDialect,
4637 >,
4638 offset: usize,
4639 depth: fidl::encoding::Depth,
4640 ) -> fidl::Result<()> {
4641 encoder.debug_check_bounds::<DeviceGetBtiResponse>(offset);
4642 self.0.encode(encoder, offset + 0, depth)?;
4646 Ok(())
4647 }
4648 }
4649
4650 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4651 for DeviceGetBtiResponse
4652 {
4653 #[inline(always)]
4654 fn new_empty() -> Self {
4655 Self {
4656 bti: fidl::new_empty!(fidl::encoding::HandleType<fidl::Bti, { fidl::ObjectType::BTI.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4657 }
4658 }
4659
4660 #[inline]
4661 unsafe fn decode(
4662 &mut self,
4663 decoder: &mut fidl::encoding::Decoder<
4664 '_,
4665 fidl::encoding::DefaultFuchsiaResourceDialect,
4666 >,
4667 offset: usize,
4668 _depth: fidl::encoding::Depth,
4669 ) -> fidl::Result<()> {
4670 decoder.debug_check_bounds::<Self>(offset);
4671 fidl::decode!(fidl::encoding::HandleType<fidl::Bti, { fidl::ObjectType::BTI.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.bti, decoder, offset + 0, _depth)?;
4673 Ok(())
4674 }
4675 }
4676
4677 impl fidl::encoding::ResourceTypeMarker for DeviceMapInterruptResponse {
4678 type Borrowed<'a> = &'a mut Self;
4679 fn take_or_borrow<'a>(
4680 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4681 ) -> Self::Borrowed<'a> {
4682 value
4683 }
4684 }
4685
4686 unsafe impl fidl::encoding::TypeMarker for DeviceMapInterruptResponse {
4687 type Owned = Self;
4688
4689 #[inline(always)]
4690 fn inline_align(_context: fidl::encoding::Context) -> usize {
4691 4
4692 }
4693
4694 #[inline(always)]
4695 fn inline_size(_context: fidl::encoding::Context) -> usize {
4696 4
4697 }
4698 }
4699
4700 unsafe impl
4701 fidl::encoding::Encode<
4702 DeviceMapInterruptResponse,
4703 fidl::encoding::DefaultFuchsiaResourceDialect,
4704 > for &mut DeviceMapInterruptResponse
4705 {
4706 #[inline]
4707 unsafe fn encode(
4708 self,
4709 encoder: &mut fidl::encoding::Encoder<
4710 '_,
4711 fidl::encoding::DefaultFuchsiaResourceDialect,
4712 >,
4713 offset: usize,
4714 _depth: fidl::encoding::Depth,
4715 ) -> fidl::Result<()> {
4716 encoder.debug_check_bounds::<DeviceMapInterruptResponse>(offset);
4717 fidl::encoding::Encode::<
4719 DeviceMapInterruptResponse,
4720 fidl::encoding::DefaultFuchsiaResourceDialect,
4721 >::encode(
4722 (<fidl::encoding::HandleType<
4723 fidl::Interrupt,
4724 { fidl::ObjectType::INTERRUPT.into_raw() },
4725 2147483648,
4726 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4727 &mut self.interrupt
4728 ),),
4729 encoder,
4730 offset,
4731 _depth,
4732 )
4733 }
4734 }
4735 unsafe impl<
4736 T0: fidl::encoding::Encode<
4737 fidl::encoding::HandleType<
4738 fidl::Interrupt,
4739 { fidl::ObjectType::INTERRUPT.into_raw() },
4740 2147483648,
4741 >,
4742 fidl::encoding::DefaultFuchsiaResourceDialect,
4743 >,
4744 >
4745 fidl::encoding::Encode<
4746 DeviceMapInterruptResponse,
4747 fidl::encoding::DefaultFuchsiaResourceDialect,
4748 > for (T0,)
4749 {
4750 #[inline]
4751 unsafe fn encode(
4752 self,
4753 encoder: &mut fidl::encoding::Encoder<
4754 '_,
4755 fidl::encoding::DefaultFuchsiaResourceDialect,
4756 >,
4757 offset: usize,
4758 depth: fidl::encoding::Depth,
4759 ) -> fidl::Result<()> {
4760 encoder.debug_check_bounds::<DeviceMapInterruptResponse>(offset);
4761 self.0.encode(encoder, offset + 0, depth)?;
4765 Ok(())
4766 }
4767 }
4768
4769 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
4770 for DeviceMapInterruptResponse
4771 {
4772 #[inline(always)]
4773 fn new_empty() -> Self {
4774 Self {
4775 interrupt: fidl::new_empty!(fidl::encoding::HandleType<fidl::Interrupt, { fidl::ObjectType::INTERRUPT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4776 }
4777 }
4778
4779 #[inline]
4780 unsafe fn decode(
4781 &mut self,
4782 decoder: &mut fidl::encoding::Decoder<
4783 '_,
4784 fidl::encoding::DefaultFuchsiaResourceDialect,
4785 >,
4786 offset: usize,
4787 _depth: fidl::encoding::Depth,
4788 ) -> fidl::Result<()> {
4789 decoder.debug_check_bounds::<Self>(offset);
4790 fidl::decode!(fidl::encoding::HandleType<fidl::Interrupt, { fidl::ObjectType::INTERRUPT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.interrupt, decoder, offset + 0, _depth)?;
4792 Ok(())
4793 }
4794 }
4795
4796 impl fidl::encoding::ResourceTypeMarker for IoBar {
4797 type Borrowed<'a> = &'a mut Self;
4798 fn take_or_borrow<'a>(
4799 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4800 ) -> Self::Borrowed<'a> {
4801 value
4802 }
4803 }
4804
4805 unsafe impl fidl::encoding::TypeMarker for IoBar {
4806 type Owned = Self;
4807
4808 #[inline(always)]
4809 fn inline_align(_context: fidl::encoding::Context) -> usize {
4810 8
4811 }
4812
4813 #[inline(always)]
4814 fn inline_size(_context: fidl::encoding::Context) -> usize {
4815 16
4816 }
4817 }
4818
4819 unsafe impl fidl::encoding::Encode<IoBar, fidl::encoding::DefaultFuchsiaResourceDialect>
4820 for &mut IoBar
4821 {
4822 #[inline]
4823 unsafe fn encode(
4824 self,
4825 encoder: &mut fidl::encoding::Encoder<
4826 '_,
4827 fidl::encoding::DefaultFuchsiaResourceDialect,
4828 >,
4829 offset: usize,
4830 _depth: fidl::encoding::Depth,
4831 ) -> fidl::Result<()> {
4832 encoder.debug_check_bounds::<IoBar>(offset);
4833 fidl::encoding::Encode::<IoBar, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
4835 (
4836 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.address),
4837 <fidl::encoding::HandleType<
4838 fidl::Resource,
4839 { fidl::ObjectType::RESOURCE.into_raw() },
4840 2147483648,
4841 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4842 &mut self.resource
4843 ),
4844 ),
4845 encoder,
4846 offset,
4847 _depth,
4848 )
4849 }
4850 }
4851 unsafe impl<
4852 T0: fidl::encoding::Encode<u64, fidl::encoding::DefaultFuchsiaResourceDialect>,
4853 T1: fidl::encoding::Encode<
4854 fidl::encoding::HandleType<
4855 fidl::Resource,
4856 { fidl::ObjectType::RESOURCE.into_raw() },
4857 2147483648,
4858 >,
4859 fidl::encoding::DefaultFuchsiaResourceDialect,
4860 >,
4861 > fidl::encoding::Encode<IoBar, fidl::encoding::DefaultFuchsiaResourceDialect> for (T0, T1)
4862 {
4863 #[inline]
4864 unsafe fn encode(
4865 self,
4866 encoder: &mut fidl::encoding::Encoder<
4867 '_,
4868 fidl::encoding::DefaultFuchsiaResourceDialect,
4869 >,
4870 offset: usize,
4871 depth: fidl::encoding::Depth,
4872 ) -> fidl::Result<()> {
4873 encoder.debug_check_bounds::<IoBar>(offset);
4874 unsafe {
4877 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
4878 (ptr as *mut u64).write_unaligned(0);
4879 }
4880 self.0.encode(encoder, offset + 0, depth)?;
4882 self.1.encode(encoder, offset + 8, depth)?;
4883 Ok(())
4884 }
4885 }
4886
4887 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for IoBar {
4888 #[inline(always)]
4889 fn new_empty() -> Self {
4890 Self {
4891 address: fidl::new_empty!(u64, fidl::encoding::DefaultFuchsiaResourceDialect),
4892 resource: fidl::new_empty!(fidl::encoding::HandleType<fidl::Resource, { fidl::ObjectType::RESOURCE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
4893 }
4894 }
4895
4896 #[inline]
4897 unsafe fn decode(
4898 &mut self,
4899 decoder: &mut fidl::encoding::Decoder<
4900 '_,
4901 fidl::encoding::DefaultFuchsiaResourceDialect,
4902 >,
4903 offset: usize,
4904 _depth: fidl::encoding::Depth,
4905 ) -> fidl::Result<()> {
4906 decoder.debug_check_bounds::<Self>(offset);
4907 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
4909 let padval = unsafe { (ptr as *const u64).read_unaligned() };
4910 let mask = 0xffffffff00000000u64;
4911 let maskedval = padval & mask;
4912 if maskedval != 0 {
4913 return Err(fidl::Error::NonZeroPadding {
4914 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
4915 });
4916 }
4917 fidl::decode!(
4918 u64,
4919 fidl::encoding::DefaultFuchsiaResourceDialect,
4920 &mut self.address,
4921 decoder,
4922 offset + 0,
4923 _depth
4924 )?;
4925 fidl::decode!(fidl::encoding::HandleType<fidl::Resource, { fidl::ObjectType::RESOURCE.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.resource, decoder, offset + 8, _depth)?;
4926 Ok(())
4927 }
4928 }
4929
4930 impl fidl::encoding::ResourceTypeMarker for BarResult {
4931 type Borrowed<'a> = &'a mut Self;
4932 fn take_or_borrow<'a>(
4933 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
4934 ) -> Self::Borrowed<'a> {
4935 value
4936 }
4937 }
4938
4939 unsafe impl fidl::encoding::TypeMarker for BarResult {
4940 type Owned = Self;
4941
4942 #[inline(always)]
4943 fn inline_align(_context: fidl::encoding::Context) -> usize {
4944 8
4945 }
4946
4947 #[inline(always)]
4948 fn inline_size(_context: fidl::encoding::Context) -> usize {
4949 16
4950 }
4951 }
4952
4953 unsafe impl fidl::encoding::Encode<BarResult, fidl::encoding::DefaultFuchsiaResourceDialect>
4954 for &mut BarResult
4955 {
4956 #[inline]
4957 unsafe fn encode(
4958 self,
4959 encoder: &mut fidl::encoding::Encoder<
4960 '_,
4961 fidl::encoding::DefaultFuchsiaResourceDialect,
4962 >,
4963 offset: usize,
4964 _depth: fidl::encoding::Depth,
4965 ) -> fidl::Result<()> {
4966 encoder.debug_check_bounds::<BarResult>(offset);
4967 encoder.write_num::<u64>(self.ordinal(), offset);
4968 match self {
4969 BarResult::Io(ref mut val) => fidl::encoding::encode_in_envelope::<
4970 IoBar,
4971 fidl::encoding::DefaultFuchsiaResourceDialect,
4972 >(
4973 <IoBar as fidl::encoding::ResourceTypeMarker>::take_or_borrow(val),
4974 encoder,
4975 offset + 8,
4976 _depth,
4977 ),
4978 BarResult::Vmo(ref mut val) => fidl::encoding::encode_in_envelope::<
4979 fidl::encoding::HandleType<
4980 fidl::Vmo,
4981 { fidl::ObjectType::VMO.into_raw() },
4982 2147483648,
4983 >,
4984 fidl::encoding::DefaultFuchsiaResourceDialect,
4985 >(
4986 <fidl::encoding::HandleType<
4987 fidl::Vmo,
4988 { fidl::ObjectType::VMO.into_raw() },
4989 2147483648,
4990 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
4991 val
4992 ),
4993 encoder,
4994 offset + 8,
4995 _depth,
4996 ),
4997 BarResult::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
4998 }
4999 }
5000 }
5001
5002 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for BarResult {
5003 #[inline(always)]
5004 fn new_empty() -> Self {
5005 Self::__SourceBreaking { unknown_ordinal: 0 }
5006 }
5007
5008 #[inline]
5009 unsafe fn decode(
5010 &mut self,
5011 decoder: &mut fidl::encoding::Decoder<
5012 '_,
5013 fidl::encoding::DefaultFuchsiaResourceDialect,
5014 >,
5015 offset: usize,
5016 mut depth: fidl::encoding::Depth,
5017 ) -> fidl::Result<()> {
5018 decoder.debug_check_bounds::<Self>(offset);
5019 #[allow(unused_variables)]
5020 let next_out_of_line = decoder.next_out_of_line();
5021 let handles_before = decoder.remaining_handles();
5022 let (ordinal, inlined, num_bytes, num_handles) =
5023 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
5024
5025 let member_inline_size = match ordinal {
5026 1 => <IoBar as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5027 2 => <fidl::encoding::HandleType<
5028 fidl::Vmo,
5029 { fidl::ObjectType::VMO.into_raw() },
5030 2147483648,
5031 > as fidl::encoding::TypeMarker>::inline_size(decoder.context),
5032 0 => return Err(fidl::Error::UnknownUnionTag),
5033 _ => num_bytes as usize,
5034 };
5035
5036 if inlined != (member_inline_size <= 4) {
5037 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5038 }
5039 let _inner_offset;
5040 if inlined {
5041 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
5042 _inner_offset = offset + 8;
5043 } else {
5044 depth.increment()?;
5045 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5046 }
5047 match ordinal {
5048 1 => {
5049 #[allow(irrefutable_let_patterns)]
5050 if let BarResult::Io(_) = self {
5051 } else {
5053 *self = BarResult::Io(fidl::new_empty!(
5055 IoBar,
5056 fidl::encoding::DefaultFuchsiaResourceDialect
5057 ));
5058 }
5059 #[allow(irrefutable_let_patterns)]
5060 if let BarResult::Io(ref mut val) = self {
5061 fidl::decode!(
5062 IoBar,
5063 fidl::encoding::DefaultFuchsiaResourceDialect,
5064 val,
5065 decoder,
5066 _inner_offset,
5067 depth
5068 )?;
5069 } else {
5070 unreachable!()
5071 }
5072 }
5073 2 => {
5074 #[allow(irrefutable_let_patterns)]
5075 if let BarResult::Vmo(_) = self {
5076 } else {
5078 *self = BarResult::Vmo(
5080 fidl::new_empty!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
5081 );
5082 }
5083 #[allow(irrefutable_let_patterns)]
5084 if let BarResult::Vmo(ref mut val) = self {
5085 fidl::decode!(fidl::encoding::HandleType<fidl::Vmo, { fidl::ObjectType::VMO.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, val, decoder, _inner_offset, depth)?;
5086 } else {
5087 unreachable!()
5088 }
5089 }
5090 #[allow(deprecated)]
5091 ordinal => {
5092 for _ in 0..num_handles {
5093 decoder.drop_next_handle()?;
5094 }
5095 *self = BarResult::__SourceBreaking { unknown_ordinal: ordinal };
5096 }
5097 }
5098 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
5099 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5100 }
5101 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5102 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5103 }
5104 Ok(())
5105 }
5106 }
5107}