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_power__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
15pub struct PowerTokenProviderGetTokenResponse {
16 pub handle: fidl::Event,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
20 for PowerTokenProviderGetTokenResponse
21{
22}
23
24#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
25pub struct DeviceMarker;
26
27impl fidl::endpoints::ProtocolMarker for DeviceMarker {
28 type Proxy = DeviceProxy;
29 type RequestStream = DeviceRequestStream;
30 #[cfg(target_os = "fuchsia")]
31 type SynchronousProxy = DeviceSynchronousProxy;
32
33 const DEBUG_NAME: &'static str = "fuchsia.hardware.power.Device";
34}
35impl fidl::endpoints::DiscoverableProtocolMarker for DeviceMarker {}
36pub type DeviceRegisterPowerDomainResult = Result<(), i32>;
37pub type DeviceUnregisterPowerDomainResult = Result<(), i32>;
38pub type DeviceGetSupportedVoltageRangeResult = Result<(u32, u32), i32>;
39pub type DeviceRequestVoltageResult = Result<u32, i32>;
40pub type DeviceGetCurrentVoltageResult = Result<u32, i32>;
41pub type DeviceGetPowerDomainStatusResult = Result<PowerDomainStatus, i32>;
42pub type DeviceWritePmicCtrlRegResult = Result<(), i32>;
43pub type DeviceReadPmicCtrlRegResult = Result<u32, i32>;
44
45pub trait DeviceProxyInterface: Send + Sync {
46 type RegisterPowerDomainResponseFut: std::future::Future<Output = Result<DeviceRegisterPowerDomainResult, fidl::Error>>
47 + Send;
48 fn r#register_power_domain(
49 &self,
50 min_needed_voltage: u32,
51 max_supported_voltage: u32,
52 ) -> Self::RegisterPowerDomainResponseFut;
53 type UnregisterPowerDomainResponseFut: std::future::Future<Output = Result<DeviceUnregisterPowerDomainResult, fidl::Error>>
54 + Send;
55 fn r#unregister_power_domain(&self) -> Self::UnregisterPowerDomainResponseFut;
56 type GetSupportedVoltageRangeResponseFut: std::future::Future<Output = Result<DeviceGetSupportedVoltageRangeResult, fidl::Error>>
57 + Send;
58 fn r#get_supported_voltage_range(&self) -> Self::GetSupportedVoltageRangeResponseFut;
59 type RequestVoltageResponseFut: std::future::Future<Output = Result<DeviceRequestVoltageResult, fidl::Error>>
60 + Send;
61 fn r#request_voltage(&self, voltage: u32) -> Self::RequestVoltageResponseFut;
62 type GetCurrentVoltageResponseFut: std::future::Future<Output = Result<DeviceGetCurrentVoltageResult, fidl::Error>>
63 + Send;
64 fn r#get_current_voltage(&self, index: u32) -> Self::GetCurrentVoltageResponseFut;
65 type GetPowerDomainStatusResponseFut: std::future::Future<Output = Result<DeviceGetPowerDomainStatusResult, fidl::Error>>
66 + Send;
67 fn r#get_power_domain_status(&self) -> Self::GetPowerDomainStatusResponseFut;
68 type WritePmicCtrlRegResponseFut: std::future::Future<Output = Result<DeviceWritePmicCtrlRegResult, fidl::Error>>
69 + Send;
70 fn r#write_pmic_ctrl_reg(&self, reg_addr: u32, value: u32)
71 -> Self::WritePmicCtrlRegResponseFut;
72 type ReadPmicCtrlRegResponseFut: std::future::Future<Output = Result<DeviceReadPmicCtrlRegResult, fidl::Error>>
73 + Send;
74 fn r#read_pmic_ctrl_reg(&self, reg_addr: u32) -> Self::ReadPmicCtrlRegResponseFut;
75}
76#[derive(Debug)]
77#[cfg(target_os = "fuchsia")]
78pub struct DeviceSynchronousProxy {
79 client: fidl::client::sync::Client,
80}
81
82#[cfg(target_os = "fuchsia")]
83impl fidl::endpoints::SynchronousProxy for DeviceSynchronousProxy {
84 type Proxy = DeviceProxy;
85 type Protocol = DeviceMarker;
86
87 fn from_channel(inner: fidl::Channel) -> Self {
88 Self::new(inner)
89 }
90
91 fn into_channel(self) -> fidl::Channel {
92 self.client.into_channel()
93 }
94
95 fn as_channel(&self) -> &fidl::Channel {
96 self.client.as_channel()
97 }
98}
99
100#[cfg(target_os = "fuchsia")]
101impl DeviceSynchronousProxy {
102 pub fn new(channel: fidl::Channel) -> Self {
103 let protocol_name = <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
104 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
105 }
106
107 pub fn into_channel(self) -> fidl::Channel {
108 self.client.into_channel()
109 }
110
111 pub fn wait_for_event(
114 &self,
115 deadline: zx::MonotonicInstant,
116 ) -> Result<DeviceEvent, fidl::Error> {
117 DeviceEvent::decode(self.client.wait_for_event(deadline)?)
118 }
119
120 pub fn r#register_power_domain(
126 &self,
127 mut min_needed_voltage: u32,
128 mut max_supported_voltage: u32,
129 ___deadline: zx::MonotonicInstant,
130 ) -> Result<DeviceRegisterPowerDomainResult, fidl::Error> {
131 let _response = self.client.send_query::<
132 DeviceRegisterPowerDomainRequest,
133 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
134 >(
135 (min_needed_voltage, max_supported_voltage,),
136 0x3dde3e7cb91210dc,
137 fidl::encoding::DynamicFlags::empty(),
138 ___deadline,
139 )?;
140 Ok(_response.map(|x| x))
141 }
142
143 pub fn r#unregister_power_domain(
146 &self,
147 ___deadline: zx::MonotonicInstant,
148 ) -> Result<DeviceUnregisterPowerDomainResult, fidl::Error> {
149 let _response = self.client.send_query::<
150 fidl::encoding::EmptyPayload,
151 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
152 >(
153 (),
154 0x6b1b26f908fd8c69,
155 fidl::encoding::DynamicFlags::empty(),
156 ___deadline,
157 )?;
158 Ok(_response.map(|x| x))
159 }
160
161 pub fn r#get_supported_voltage_range(
163 &self,
164 ___deadline: zx::MonotonicInstant,
165 ) -> Result<DeviceGetSupportedVoltageRangeResult, fidl::Error> {
166 let _response = self.client.send_query::<
167 fidl::encoding::EmptyPayload,
168 fidl::encoding::ResultType<DeviceGetSupportedVoltageRangeResponse, i32>,
169 >(
170 (),
171 0x6d75897fea248df0,
172 fidl::encoding::DynamicFlags::empty(),
173 ___deadline,
174 )?;
175 Ok(_response.map(|x| (x.min, x.max)))
176 }
177
178 pub fn r#request_voltage(
182 &self,
183 mut voltage: u32,
184 ___deadline: zx::MonotonicInstant,
185 ) -> Result<DeviceRequestVoltageResult, fidl::Error> {
186 let _response = self.client.send_query::<
187 DeviceRequestVoltageRequest,
188 fidl::encoding::ResultType<DeviceRequestVoltageResponse, i32>,
189 >(
190 (voltage,),
191 0x23ca354dfe067e9b,
192 fidl::encoding::DynamicFlags::empty(),
193 ___deadline,
194 )?;
195 Ok(_response.map(|x| x.actual_voltage))
196 }
197
198 pub fn r#get_current_voltage(
200 &self,
201 mut index: u32,
202 ___deadline: zx::MonotonicInstant,
203 ) -> Result<DeviceGetCurrentVoltageResult, fidl::Error> {
204 let _response = self.client.send_query::<
205 DeviceGetCurrentVoltageRequest,
206 fidl::encoding::ResultType<DeviceGetCurrentVoltageResponse, i32>,
207 >(
208 (index,),
209 0x6a9f80a0412da961,
210 fidl::encoding::DynamicFlags::empty(),
211 ___deadline,
212 )?;
213 Ok(_response.map(|x| x.current_voltage))
214 }
215
216 pub fn r#get_power_domain_status(
218 &self,
219 ___deadline: zx::MonotonicInstant,
220 ) -> Result<DeviceGetPowerDomainStatusResult, fidl::Error> {
221 let _response = self.client.send_query::<
222 fidl::encoding::EmptyPayload,
223 fidl::encoding::ResultType<DeviceGetPowerDomainStatusResponse, i32>,
224 >(
225 (),
226 0x39fe7f1e3e3c74ba,
227 fidl::encoding::DynamicFlags::empty(),
228 ___deadline,
229 )?;
230 Ok(_response.map(|x| x.status))
231 }
232
233 pub fn r#write_pmic_ctrl_reg(
235 &self,
236 mut reg_addr: u32,
237 mut value: u32,
238 ___deadline: zx::MonotonicInstant,
239 ) -> Result<DeviceWritePmicCtrlRegResult, fidl::Error> {
240 let _response = self.client.send_query::<
241 DeviceWritePmicCtrlRegRequest,
242 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
243 >(
244 (reg_addr, value,),
245 0x340a3483d4740299,
246 fidl::encoding::DynamicFlags::empty(),
247 ___deadline,
248 )?;
249 Ok(_response.map(|x| x))
250 }
251
252 pub fn r#read_pmic_ctrl_reg(
254 &self,
255 mut reg_addr: u32,
256 ___deadline: zx::MonotonicInstant,
257 ) -> Result<DeviceReadPmicCtrlRegResult, fidl::Error> {
258 let _response = self.client.send_query::<
259 DeviceReadPmicCtrlRegRequest,
260 fidl::encoding::ResultType<DeviceReadPmicCtrlRegResponse, i32>,
261 >(
262 (reg_addr,),
263 0x72eebf304bb82f13,
264 fidl::encoding::DynamicFlags::empty(),
265 ___deadline,
266 )?;
267 Ok(_response.map(|x| x.value))
268 }
269}
270
271#[cfg(target_os = "fuchsia")]
272impl From<DeviceSynchronousProxy> for zx::Handle {
273 fn from(value: DeviceSynchronousProxy) -> Self {
274 value.into_channel().into()
275 }
276}
277
278#[cfg(target_os = "fuchsia")]
279impl From<fidl::Channel> for DeviceSynchronousProxy {
280 fn from(value: fidl::Channel) -> Self {
281 Self::new(value)
282 }
283}
284
285#[cfg(target_os = "fuchsia")]
286impl fidl::endpoints::FromClient for DeviceSynchronousProxy {
287 type Protocol = DeviceMarker;
288
289 fn from_client(value: fidl::endpoints::ClientEnd<DeviceMarker>) -> Self {
290 Self::new(value.into_channel())
291 }
292}
293
294#[derive(Debug, Clone)]
295pub struct DeviceProxy {
296 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
297}
298
299impl fidl::endpoints::Proxy for DeviceProxy {
300 type Protocol = DeviceMarker;
301
302 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
303 Self::new(inner)
304 }
305
306 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
307 self.client.into_channel().map_err(|client| Self { client })
308 }
309
310 fn as_channel(&self) -> &::fidl::AsyncChannel {
311 self.client.as_channel()
312 }
313}
314
315impl DeviceProxy {
316 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
318 let protocol_name = <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
319 Self { client: fidl::client::Client::new(channel, protocol_name) }
320 }
321
322 pub fn take_event_stream(&self) -> DeviceEventStream {
328 DeviceEventStream { event_receiver: self.client.take_event_receiver() }
329 }
330
331 pub fn r#register_power_domain(
337 &self,
338 mut min_needed_voltage: u32,
339 mut max_supported_voltage: u32,
340 ) -> fidl::client::QueryResponseFut<
341 DeviceRegisterPowerDomainResult,
342 fidl::encoding::DefaultFuchsiaResourceDialect,
343 > {
344 DeviceProxyInterface::r#register_power_domain(
345 self,
346 min_needed_voltage,
347 max_supported_voltage,
348 )
349 }
350
351 pub fn r#unregister_power_domain(
354 &self,
355 ) -> fidl::client::QueryResponseFut<
356 DeviceUnregisterPowerDomainResult,
357 fidl::encoding::DefaultFuchsiaResourceDialect,
358 > {
359 DeviceProxyInterface::r#unregister_power_domain(self)
360 }
361
362 pub fn r#get_supported_voltage_range(
364 &self,
365 ) -> fidl::client::QueryResponseFut<
366 DeviceGetSupportedVoltageRangeResult,
367 fidl::encoding::DefaultFuchsiaResourceDialect,
368 > {
369 DeviceProxyInterface::r#get_supported_voltage_range(self)
370 }
371
372 pub fn r#request_voltage(
376 &self,
377 mut voltage: u32,
378 ) -> fidl::client::QueryResponseFut<
379 DeviceRequestVoltageResult,
380 fidl::encoding::DefaultFuchsiaResourceDialect,
381 > {
382 DeviceProxyInterface::r#request_voltage(self, voltage)
383 }
384
385 pub fn r#get_current_voltage(
387 &self,
388 mut index: u32,
389 ) -> fidl::client::QueryResponseFut<
390 DeviceGetCurrentVoltageResult,
391 fidl::encoding::DefaultFuchsiaResourceDialect,
392 > {
393 DeviceProxyInterface::r#get_current_voltage(self, index)
394 }
395
396 pub fn r#get_power_domain_status(
398 &self,
399 ) -> fidl::client::QueryResponseFut<
400 DeviceGetPowerDomainStatusResult,
401 fidl::encoding::DefaultFuchsiaResourceDialect,
402 > {
403 DeviceProxyInterface::r#get_power_domain_status(self)
404 }
405
406 pub fn r#write_pmic_ctrl_reg(
408 &self,
409 mut reg_addr: u32,
410 mut value: u32,
411 ) -> fidl::client::QueryResponseFut<
412 DeviceWritePmicCtrlRegResult,
413 fidl::encoding::DefaultFuchsiaResourceDialect,
414 > {
415 DeviceProxyInterface::r#write_pmic_ctrl_reg(self, reg_addr, value)
416 }
417
418 pub fn r#read_pmic_ctrl_reg(
420 &self,
421 mut reg_addr: u32,
422 ) -> fidl::client::QueryResponseFut<
423 DeviceReadPmicCtrlRegResult,
424 fidl::encoding::DefaultFuchsiaResourceDialect,
425 > {
426 DeviceProxyInterface::r#read_pmic_ctrl_reg(self, reg_addr)
427 }
428}
429
430impl DeviceProxyInterface for DeviceProxy {
431 type RegisterPowerDomainResponseFut = fidl::client::QueryResponseFut<
432 DeviceRegisterPowerDomainResult,
433 fidl::encoding::DefaultFuchsiaResourceDialect,
434 >;
435 fn r#register_power_domain(
436 &self,
437 mut min_needed_voltage: u32,
438 mut max_supported_voltage: u32,
439 ) -> Self::RegisterPowerDomainResponseFut {
440 fn _decode(
441 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
442 ) -> Result<DeviceRegisterPowerDomainResult, fidl::Error> {
443 let _response = fidl::client::decode_transaction_body::<
444 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
445 fidl::encoding::DefaultFuchsiaResourceDialect,
446 0x3dde3e7cb91210dc,
447 >(_buf?)?;
448 Ok(_response.map(|x| x))
449 }
450 self.client.send_query_and_decode::<
451 DeviceRegisterPowerDomainRequest,
452 DeviceRegisterPowerDomainResult,
453 >(
454 (min_needed_voltage, max_supported_voltage,),
455 0x3dde3e7cb91210dc,
456 fidl::encoding::DynamicFlags::empty(),
457 _decode,
458 )
459 }
460
461 type UnregisterPowerDomainResponseFut = fidl::client::QueryResponseFut<
462 DeviceUnregisterPowerDomainResult,
463 fidl::encoding::DefaultFuchsiaResourceDialect,
464 >;
465 fn r#unregister_power_domain(&self) -> Self::UnregisterPowerDomainResponseFut {
466 fn _decode(
467 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
468 ) -> Result<DeviceUnregisterPowerDomainResult, fidl::Error> {
469 let _response = fidl::client::decode_transaction_body::<
470 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
471 fidl::encoding::DefaultFuchsiaResourceDialect,
472 0x6b1b26f908fd8c69,
473 >(_buf?)?;
474 Ok(_response.map(|x| x))
475 }
476 self.client.send_query_and_decode::<
477 fidl::encoding::EmptyPayload,
478 DeviceUnregisterPowerDomainResult,
479 >(
480 (),
481 0x6b1b26f908fd8c69,
482 fidl::encoding::DynamicFlags::empty(),
483 _decode,
484 )
485 }
486
487 type GetSupportedVoltageRangeResponseFut = fidl::client::QueryResponseFut<
488 DeviceGetSupportedVoltageRangeResult,
489 fidl::encoding::DefaultFuchsiaResourceDialect,
490 >;
491 fn r#get_supported_voltage_range(&self) -> Self::GetSupportedVoltageRangeResponseFut {
492 fn _decode(
493 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
494 ) -> Result<DeviceGetSupportedVoltageRangeResult, fidl::Error> {
495 let _response = fidl::client::decode_transaction_body::<
496 fidl::encoding::ResultType<DeviceGetSupportedVoltageRangeResponse, i32>,
497 fidl::encoding::DefaultFuchsiaResourceDialect,
498 0x6d75897fea248df0,
499 >(_buf?)?;
500 Ok(_response.map(|x| (x.min, x.max)))
501 }
502 self.client.send_query_and_decode::<
503 fidl::encoding::EmptyPayload,
504 DeviceGetSupportedVoltageRangeResult,
505 >(
506 (),
507 0x6d75897fea248df0,
508 fidl::encoding::DynamicFlags::empty(),
509 _decode,
510 )
511 }
512
513 type RequestVoltageResponseFut = fidl::client::QueryResponseFut<
514 DeviceRequestVoltageResult,
515 fidl::encoding::DefaultFuchsiaResourceDialect,
516 >;
517 fn r#request_voltage(&self, mut voltage: u32) -> Self::RequestVoltageResponseFut {
518 fn _decode(
519 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
520 ) -> Result<DeviceRequestVoltageResult, fidl::Error> {
521 let _response = fidl::client::decode_transaction_body::<
522 fidl::encoding::ResultType<DeviceRequestVoltageResponse, i32>,
523 fidl::encoding::DefaultFuchsiaResourceDialect,
524 0x23ca354dfe067e9b,
525 >(_buf?)?;
526 Ok(_response.map(|x| x.actual_voltage))
527 }
528 self.client
529 .send_query_and_decode::<DeviceRequestVoltageRequest, DeviceRequestVoltageResult>(
530 (voltage,),
531 0x23ca354dfe067e9b,
532 fidl::encoding::DynamicFlags::empty(),
533 _decode,
534 )
535 }
536
537 type GetCurrentVoltageResponseFut = fidl::client::QueryResponseFut<
538 DeviceGetCurrentVoltageResult,
539 fidl::encoding::DefaultFuchsiaResourceDialect,
540 >;
541 fn r#get_current_voltage(&self, mut index: u32) -> Self::GetCurrentVoltageResponseFut {
542 fn _decode(
543 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
544 ) -> Result<DeviceGetCurrentVoltageResult, fidl::Error> {
545 let _response = fidl::client::decode_transaction_body::<
546 fidl::encoding::ResultType<DeviceGetCurrentVoltageResponse, i32>,
547 fidl::encoding::DefaultFuchsiaResourceDialect,
548 0x6a9f80a0412da961,
549 >(_buf?)?;
550 Ok(_response.map(|x| x.current_voltage))
551 }
552 self.client
553 .send_query_and_decode::<DeviceGetCurrentVoltageRequest, DeviceGetCurrentVoltageResult>(
554 (index,),
555 0x6a9f80a0412da961,
556 fidl::encoding::DynamicFlags::empty(),
557 _decode,
558 )
559 }
560
561 type GetPowerDomainStatusResponseFut = fidl::client::QueryResponseFut<
562 DeviceGetPowerDomainStatusResult,
563 fidl::encoding::DefaultFuchsiaResourceDialect,
564 >;
565 fn r#get_power_domain_status(&self) -> Self::GetPowerDomainStatusResponseFut {
566 fn _decode(
567 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
568 ) -> Result<DeviceGetPowerDomainStatusResult, fidl::Error> {
569 let _response = fidl::client::decode_transaction_body::<
570 fidl::encoding::ResultType<DeviceGetPowerDomainStatusResponse, i32>,
571 fidl::encoding::DefaultFuchsiaResourceDialect,
572 0x39fe7f1e3e3c74ba,
573 >(_buf?)?;
574 Ok(_response.map(|x| x.status))
575 }
576 self.client.send_query_and_decode::<
577 fidl::encoding::EmptyPayload,
578 DeviceGetPowerDomainStatusResult,
579 >(
580 (),
581 0x39fe7f1e3e3c74ba,
582 fidl::encoding::DynamicFlags::empty(),
583 _decode,
584 )
585 }
586
587 type WritePmicCtrlRegResponseFut = fidl::client::QueryResponseFut<
588 DeviceWritePmicCtrlRegResult,
589 fidl::encoding::DefaultFuchsiaResourceDialect,
590 >;
591 fn r#write_pmic_ctrl_reg(
592 &self,
593 mut reg_addr: u32,
594 mut value: u32,
595 ) -> Self::WritePmicCtrlRegResponseFut {
596 fn _decode(
597 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
598 ) -> Result<DeviceWritePmicCtrlRegResult, fidl::Error> {
599 let _response = fidl::client::decode_transaction_body::<
600 fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>,
601 fidl::encoding::DefaultFuchsiaResourceDialect,
602 0x340a3483d4740299,
603 >(_buf?)?;
604 Ok(_response.map(|x| x))
605 }
606 self.client
607 .send_query_and_decode::<DeviceWritePmicCtrlRegRequest, DeviceWritePmicCtrlRegResult>(
608 (reg_addr, value),
609 0x340a3483d4740299,
610 fidl::encoding::DynamicFlags::empty(),
611 _decode,
612 )
613 }
614
615 type ReadPmicCtrlRegResponseFut = fidl::client::QueryResponseFut<
616 DeviceReadPmicCtrlRegResult,
617 fidl::encoding::DefaultFuchsiaResourceDialect,
618 >;
619 fn r#read_pmic_ctrl_reg(&self, mut reg_addr: u32) -> Self::ReadPmicCtrlRegResponseFut {
620 fn _decode(
621 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
622 ) -> Result<DeviceReadPmicCtrlRegResult, fidl::Error> {
623 let _response = fidl::client::decode_transaction_body::<
624 fidl::encoding::ResultType<DeviceReadPmicCtrlRegResponse, i32>,
625 fidl::encoding::DefaultFuchsiaResourceDialect,
626 0x72eebf304bb82f13,
627 >(_buf?)?;
628 Ok(_response.map(|x| x.value))
629 }
630 self.client
631 .send_query_and_decode::<DeviceReadPmicCtrlRegRequest, DeviceReadPmicCtrlRegResult>(
632 (reg_addr,),
633 0x72eebf304bb82f13,
634 fidl::encoding::DynamicFlags::empty(),
635 _decode,
636 )
637 }
638}
639
640pub struct DeviceEventStream {
641 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
642}
643
644impl std::marker::Unpin for DeviceEventStream {}
645
646impl futures::stream::FusedStream for DeviceEventStream {
647 fn is_terminated(&self) -> bool {
648 self.event_receiver.is_terminated()
649 }
650}
651
652impl futures::Stream for DeviceEventStream {
653 type Item = Result<DeviceEvent, fidl::Error>;
654
655 fn poll_next(
656 mut self: std::pin::Pin<&mut Self>,
657 cx: &mut std::task::Context<'_>,
658 ) -> std::task::Poll<Option<Self::Item>> {
659 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
660 &mut self.event_receiver,
661 cx
662 )?) {
663 Some(buf) => std::task::Poll::Ready(Some(DeviceEvent::decode(buf))),
664 None => std::task::Poll::Ready(None),
665 }
666 }
667}
668
669#[derive(Debug)]
670pub enum DeviceEvent {}
671
672impl DeviceEvent {
673 fn decode(
675 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
676 ) -> Result<DeviceEvent, fidl::Error> {
677 let (bytes, _handles) = buf.split_mut();
678 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
679 debug_assert_eq!(tx_header.tx_id, 0);
680 match tx_header.ordinal {
681 _ => Err(fidl::Error::UnknownOrdinal {
682 ordinal: tx_header.ordinal,
683 protocol_name: <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
684 }),
685 }
686 }
687}
688
689pub struct DeviceRequestStream {
691 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
692 is_terminated: bool,
693}
694
695impl std::marker::Unpin for DeviceRequestStream {}
696
697impl futures::stream::FusedStream for DeviceRequestStream {
698 fn is_terminated(&self) -> bool {
699 self.is_terminated
700 }
701}
702
703impl fidl::endpoints::RequestStream for DeviceRequestStream {
704 type Protocol = DeviceMarker;
705 type ControlHandle = DeviceControlHandle;
706
707 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
708 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
709 }
710
711 fn control_handle(&self) -> Self::ControlHandle {
712 DeviceControlHandle { inner: self.inner.clone() }
713 }
714
715 fn into_inner(
716 self,
717 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
718 {
719 (self.inner, self.is_terminated)
720 }
721
722 fn from_inner(
723 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
724 is_terminated: bool,
725 ) -> Self {
726 Self { inner, is_terminated }
727 }
728}
729
730impl futures::Stream for DeviceRequestStream {
731 type Item = Result<DeviceRequest, fidl::Error>;
732
733 fn poll_next(
734 mut self: std::pin::Pin<&mut Self>,
735 cx: &mut std::task::Context<'_>,
736 ) -> std::task::Poll<Option<Self::Item>> {
737 let this = &mut *self;
738 if this.inner.check_shutdown(cx) {
739 this.is_terminated = true;
740 return std::task::Poll::Ready(None);
741 }
742 if this.is_terminated {
743 panic!("polled DeviceRequestStream after completion");
744 }
745 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
746 |bytes, handles| {
747 match this.inner.channel().read_etc(cx, bytes, handles) {
748 std::task::Poll::Ready(Ok(())) => {}
749 std::task::Poll::Pending => return std::task::Poll::Pending,
750 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
751 this.is_terminated = true;
752 return std::task::Poll::Ready(None);
753 }
754 std::task::Poll::Ready(Err(e)) => {
755 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
756 e.into(),
757 ))));
758 }
759 }
760
761 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
763
764 std::task::Poll::Ready(Some(match header.ordinal {
765 0x3dde3e7cb91210dc => {
766 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
767 let mut req = fidl::new_empty!(
768 DeviceRegisterPowerDomainRequest,
769 fidl::encoding::DefaultFuchsiaResourceDialect
770 );
771 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceRegisterPowerDomainRequest>(&header, _body_bytes, handles, &mut req)?;
772 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
773 Ok(DeviceRequest::RegisterPowerDomain {
774 min_needed_voltage: req.min_needed_voltage,
775 max_supported_voltage: req.max_supported_voltage,
776
777 responder: DeviceRegisterPowerDomainResponder {
778 control_handle: std::mem::ManuallyDrop::new(control_handle),
779 tx_id: header.tx_id,
780 },
781 })
782 }
783 0x6b1b26f908fd8c69 => {
784 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
785 let mut req = fidl::new_empty!(
786 fidl::encoding::EmptyPayload,
787 fidl::encoding::DefaultFuchsiaResourceDialect
788 );
789 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
790 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
791 Ok(DeviceRequest::UnregisterPowerDomain {
792 responder: DeviceUnregisterPowerDomainResponder {
793 control_handle: std::mem::ManuallyDrop::new(control_handle),
794 tx_id: header.tx_id,
795 },
796 })
797 }
798 0x6d75897fea248df0 => {
799 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
800 let mut req = fidl::new_empty!(
801 fidl::encoding::EmptyPayload,
802 fidl::encoding::DefaultFuchsiaResourceDialect
803 );
804 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
805 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
806 Ok(DeviceRequest::GetSupportedVoltageRange {
807 responder: DeviceGetSupportedVoltageRangeResponder {
808 control_handle: std::mem::ManuallyDrop::new(control_handle),
809 tx_id: header.tx_id,
810 },
811 })
812 }
813 0x23ca354dfe067e9b => {
814 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
815 let mut req = fidl::new_empty!(
816 DeviceRequestVoltageRequest,
817 fidl::encoding::DefaultFuchsiaResourceDialect
818 );
819 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceRequestVoltageRequest>(&header, _body_bytes, handles, &mut req)?;
820 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
821 Ok(DeviceRequest::RequestVoltage {
822 voltage: req.voltage,
823
824 responder: DeviceRequestVoltageResponder {
825 control_handle: std::mem::ManuallyDrop::new(control_handle),
826 tx_id: header.tx_id,
827 },
828 })
829 }
830 0x6a9f80a0412da961 => {
831 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
832 let mut req = fidl::new_empty!(
833 DeviceGetCurrentVoltageRequest,
834 fidl::encoding::DefaultFuchsiaResourceDialect
835 );
836 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceGetCurrentVoltageRequest>(&header, _body_bytes, handles, &mut req)?;
837 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
838 Ok(DeviceRequest::GetCurrentVoltage {
839 index: req.index,
840
841 responder: DeviceGetCurrentVoltageResponder {
842 control_handle: std::mem::ManuallyDrop::new(control_handle),
843 tx_id: header.tx_id,
844 },
845 })
846 }
847 0x39fe7f1e3e3c74ba => {
848 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
849 let mut req = fidl::new_empty!(
850 fidl::encoding::EmptyPayload,
851 fidl::encoding::DefaultFuchsiaResourceDialect
852 );
853 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
854 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
855 Ok(DeviceRequest::GetPowerDomainStatus {
856 responder: DeviceGetPowerDomainStatusResponder {
857 control_handle: std::mem::ManuallyDrop::new(control_handle),
858 tx_id: header.tx_id,
859 },
860 })
861 }
862 0x340a3483d4740299 => {
863 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
864 let mut req = fidl::new_empty!(
865 DeviceWritePmicCtrlRegRequest,
866 fidl::encoding::DefaultFuchsiaResourceDialect
867 );
868 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceWritePmicCtrlRegRequest>(&header, _body_bytes, handles, &mut req)?;
869 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
870 Ok(DeviceRequest::WritePmicCtrlReg {
871 reg_addr: req.reg_addr,
872 value: req.value,
873
874 responder: DeviceWritePmicCtrlRegResponder {
875 control_handle: std::mem::ManuallyDrop::new(control_handle),
876 tx_id: header.tx_id,
877 },
878 })
879 }
880 0x72eebf304bb82f13 => {
881 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
882 let mut req = fidl::new_empty!(
883 DeviceReadPmicCtrlRegRequest,
884 fidl::encoding::DefaultFuchsiaResourceDialect
885 );
886 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DeviceReadPmicCtrlRegRequest>(&header, _body_bytes, handles, &mut req)?;
887 let control_handle = DeviceControlHandle { inner: this.inner.clone() };
888 Ok(DeviceRequest::ReadPmicCtrlReg {
889 reg_addr: req.reg_addr,
890
891 responder: DeviceReadPmicCtrlRegResponder {
892 control_handle: std::mem::ManuallyDrop::new(control_handle),
893 tx_id: header.tx_id,
894 },
895 })
896 }
897 _ => Err(fidl::Error::UnknownOrdinal {
898 ordinal: header.ordinal,
899 protocol_name:
900 <DeviceMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
901 }),
902 }))
903 },
904 )
905 }
906}
907
908#[derive(Debug)]
909pub enum DeviceRequest {
910 RegisterPowerDomain {
916 min_needed_voltage: u32,
917 max_supported_voltage: u32,
918 responder: DeviceRegisterPowerDomainResponder,
919 },
920 UnregisterPowerDomain { responder: DeviceUnregisterPowerDomainResponder },
923 GetSupportedVoltageRange { responder: DeviceGetSupportedVoltageRangeResponder },
925 RequestVoltage { voltage: u32, responder: DeviceRequestVoltageResponder },
929 GetCurrentVoltage { index: u32, responder: DeviceGetCurrentVoltageResponder },
931 GetPowerDomainStatus { responder: DeviceGetPowerDomainStatusResponder },
933 WritePmicCtrlReg { reg_addr: u32, value: u32, responder: DeviceWritePmicCtrlRegResponder },
935 ReadPmicCtrlReg { reg_addr: u32, responder: DeviceReadPmicCtrlRegResponder },
937}
938
939impl DeviceRequest {
940 #[allow(irrefutable_let_patterns)]
941 pub fn into_register_power_domain(
942 self,
943 ) -> Option<(u32, u32, DeviceRegisterPowerDomainResponder)> {
944 if let DeviceRequest::RegisterPowerDomain {
945 min_needed_voltage,
946 max_supported_voltage,
947 responder,
948 } = self
949 {
950 Some((min_needed_voltage, max_supported_voltage, responder))
951 } else {
952 None
953 }
954 }
955
956 #[allow(irrefutable_let_patterns)]
957 pub fn into_unregister_power_domain(self) -> Option<(DeviceUnregisterPowerDomainResponder)> {
958 if let DeviceRequest::UnregisterPowerDomain { responder } = self {
959 Some((responder))
960 } else {
961 None
962 }
963 }
964
965 #[allow(irrefutable_let_patterns)]
966 pub fn into_get_supported_voltage_range(
967 self,
968 ) -> Option<(DeviceGetSupportedVoltageRangeResponder)> {
969 if let DeviceRequest::GetSupportedVoltageRange { responder } = self {
970 Some((responder))
971 } else {
972 None
973 }
974 }
975
976 #[allow(irrefutable_let_patterns)]
977 pub fn into_request_voltage(self) -> Option<(u32, DeviceRequestVoltageResponder)> {
978 if let DeviceRequest::RequestVoltage { voltage, responder } = self {
979 Some((voltage, responder))
980 } else {
981 None
982 }
983 }
984
985 #[allow(irrefutable_let_patterns)]
986 pub fn into_get_current_voltage(self) -> Option<(u32, DeviceGetCurrentVoltageResponder)> {
987 if let DeviceRequest::GetCurrentVoltage { index, responder } = self {
988 Some((index, responder))
989 } else {
990 None
991 }
992 }
993
994 #[allow(irrefutable_let_patterns)]
995 pub fn into_get_power_domain_status(self) -> Option<(DeviceGetPowerDomainStatusResponder)> {
996 if let DeviceRequest::GetPowerDomainStatus { responder } = self {
997 Some((responder))
998 } else {
999 None
1000 }
1001 }
1002
1003 #[allow(irrefutable_let_patterns)]
1004 pub fn into_write_pmic_ctrl_reg(self) -> Option<(u32, u32, DeviceWritePmicCtrlRegResponder)> {
1005 if let DeviceRequest::WritePmicCtrlReg { reg_addr, value, responder } = self {
1006 Some((reg_addr, value, responder))
1007 } else {
1008 None
1009 }
1010 }
1011
1012 #[allow(irrefutable_let_patterns)]
1013 pub fn into_read_pmic_ctrl_reg(self) -> Option<(u32, DeviceReadPmicCtrlRegResponder)> {
1014 if let DeviceRequest::ReadPmicCtrlReg { reg_addr, responder } = self {
1015 Some((reg_addr, responder))
1016 } else {
1017 None
1018 }
1019 }
1020
1021 pub fn method_name(&self) -> &'static str {
1023 match *self {
1024 DeviceRequest::RegisterPowerDomain { .. } => "register_power_domain",
1025 DeviceRequest::UnregisterPowerDomain { .. } => "unregister_power_domain",
1026 DeviceRequest::GetSupportedVoltageRange { .. } => "get_supported_voltage_range",
1027 DeviceRequest::RequestVoltage { .. } => "request_voltage",
1028 DeviceRequest::GetCurrentVoltage { .. } => "get_current_voltage",
1029 DeviceRequest::GetPowerDomainStatus { .. } => "get_power_domain_status",
1030 DeviceRequest::WritePmicCtrlReg { .. } => "write_pmic_ctrl_reg",
1031 DeviceRequest::ReadPmicCtrlReg { .. } => "read_pmic_ctrl_reg",
1032 }
1033 }
1034}
1035
1036#[derive(Debug, Clone)]
1037pub struct DeviceControlHandle {
1038 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1039}
1040
1041impl fidl::endpoints::ControlHandle for DeviceControlHandle {
1042 fn shutdown(&self) {
1043 self.inner.shutdown()
1044 }
1045 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1046 self.inner.shutdown_with_epitaph(status)
1047 }
1048
1049 fn is_closed(&self) -> bool {
1050 self.inner.channel().is_closed()
1051 }
1052 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1053 self.inner.channel().on_closed()
1054 }
1055
1056 #[cfg(target_os = "fuchsia")]
1057 fn signal_peer(
1058 &self,
1059 clear_mask: zx::Signals,
1060 set_mask: zx::Signals,
1061 ) -> Result<(), zx_status::Status> {
1062 use fidl::Peered;
1063 self.inner.channel().signal_peer(clear_mask, set_mask)
1064 }
1065}
1066
1067impl DeviceControlHandle {}
1068
1069#[must_use = "FIDL methods require a response to be sent"]
1070#[derive(Debug)]
1071pub struct DeviceRegisterPowerDomainResponder {
1072 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1073 tx_id: u32,
1074}
1075
1076impl std::ops::Drop for DeviceRegisterPowerDomainResponder {
1080 fn drop(&mut self) {
1081 self.control_handle.shutdown();
1082 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1084 }
1085}
1086
1087impl fidl::endpoints::Responder for DeviceRegisterPowerDomainResponder {
1088 type ControlHandle = DeviceControlHandle;
1089
1090 fn control_handle(&self) -> &DeviceControlHandle {
1091 &self.control_handle
1092 }
1093
1094 fn drop_without_shutdown(mut self) {
1095 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1097 std::mem::forget(self);
1099 }
1100}
1101
1102impl DeviceRegisterPowerDomainResponder {
1103 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1107 let _result = self.send_raw(result);
1108 if _result.is_err() {
1109 self.control_handle.shutdown();
1110 }
1111 self.drop_without_shutdown();
1112 _result
1113 }
1114
1115 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1117 let _result = self.send_raw(result);
1118 self.drop_without_shutdown();
1119 _result
1120 }
1121
1122 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1123 self.control_handle
1124 .inner
1125 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
1126 result,
1127 self.tx_id,
1128 0x3dde3e7cb91210dc,
1129 fidl::encoding::DynamicFlags::empty(),
1130 )
1131 }
1132}
1133
1134#[must_use = "FIDL methods require a response to be sent"]
1135#[derive(Debug)]
1136pub struct DeviceUnregisterPowerDomainResponder {
1137 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1138 tx_id: u32,
1139}
1140
1141impl std::ops::Drop for DeviceUnregisterPowerDomainResponder {
1145 fn drop(&mut self) {
1146 self.control_handle.shutdown();
1147 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1149 }
1150}
1151
1152impl fidl::endpoints::Responder for DeviceUnregisterPowerDomainResponder {
1153 type ControlHandle = DeviceControlHandle;
1154
1155 fn control_handle(&self) -> &DeviceControlHandle {
1156 &self.control_handle
1157 }
1158
1159 fn drop_without_shutdown(mut self) {
1160 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1162 std::mem::forget(self);
1164 }
1165}
1166
1167impl DeviceUnregisterPowerDomainResponder {
1168 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1172 let _result = self.send_raw(result);
1173 if _result.is_err() {
1174 self.control_handle.shutdown();
1175 }
1176 self.drop_without_shutdown();
1177 _result
1178 }
1179
1180 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1182 let _result = self.send_raw(result);
1183 self.drop_without_shutdown();
1184 _result
1185 }
1186
1187 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1188 self.control_handle
1189 .inner
1190 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
1191 result,
1192 self.tx_id,
1193 0x6b1b26f908fd8c69,
1194 fidl::encoding::DynamicFlags::empty(),
1195 )
1196 }
1197}
1198
1199#[must_use = "FIDL methods require a response to be sent"]
1200#[derive(Debug)]
1201pub struct DeviceGetSupportedVoltageRangeResponder {
1202 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1203 tx_id: u32,
1204}
1205
1206impl std::ops::Drop for DeviceGetSupportedVoltageRangeResponder {
1210 fn drop(&mut self) {
1211 self.control_handle.shutdown();
1212 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1214 }
1215}
1216
1217impl fidl::endpoints::Responder for DeviceGetSupportedVoltageRangeResponder {
1218 type ControlHandle = DeviceControlHandle;
1219
1220 fn control_handle(&self) -> &DeviceControlHandle {
1221 &self.control_handle
1222 }
1223
1224 fn drop_without_shutdown(mut self) {
1225 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1227 std::mem::forget(self);
1229 }
1230}
1231
1232impl DeviceGetSupportedVoltageRangeResponder {
1233 pub fn send(self, mut result: Result<(u32, u32), i32>) -> Result<(), fidl::Error> {
1237 let _result = self.send_raw(result);
1238 if _result.is_err() {
1239 self.control_handle.shutdown();
1240 }
1241 self.drop_without_shutdown();
1242 _result
1243 }
1244
1245 pub fn send_no_shutdown_on_err(
1247 self,
1248 mut result: Result<(u32, u32), i32>,
1249 ) -> Result<(), fidl::Error> {
1250 let _result = self.send_raw(result);
1251 self.drop_without_shutdown();
1252 _result
1253 }
1254
1255 fn send_raw(&self, mut result: Result<(u32, u32), i32>) -> Result<(), fidl::Error> {
1256 self.control_handle.inner.send::<fidl::encoding::ResultType<
1257 DeviceGetSupportedVoltageRangeResponse,
1258 i32,
1259 >>(
1260 result,
1261 self.tx_id,
1262 0x6d75897fea248df0,
1263 fidl::encoding::DynamicFlags::empty(),
1264 )
1265 }
1266}
1267
1268#[must_use = "FIDL methods require a response to be sent"]
1269#[derive(Debug)]
1270pub struct DeviceRequestVoltageResponder {
1271 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1272 tx_id: u32,
1273}
1274
1275impl std::ops::Drop for DeviceRequestVoltageResponder {
1279 fn drop(&mut self) {
1280 self.control_handle.shutdown();
1281 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1283 }
1284}
1285
1286impl fidl::endpoints::Responder for DeviceRequestVoltageResponder {
1287 type ControlHandle = DeviceControlHandle;
1288
1289 fn control_handle(&self) -> &DeviceControlHandle {
1290 &self.control_handle
1291 }
1292
1293 fn drop_without_shutdown(mut self) {
1294 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1296 std::mem::forget(self);
1298 }
1299}
1300
1301impl DeviceRequestVoltageResponder {
1302 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1306 let _result = self.send_raw(result);
1307 if _result.is_err() {
1308 self.control_handle.shutdown();
1309 }
1310 self.drop_without_shutdown();
1311 _result
1312 }
1313
1314 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1316 let _result = self.send_raw(result);
1317 self.drop_without_shutdown();
1318 _result
1319 }
1320
1321 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1322 self.control_handle
1323 .inner
1324 .send::<fidl::encoding::ResultType<DeviceRequestVoltageResponse, i32>>(
1325 result.map(|actual_voltage| (actual_voltage,)),
1326 self.tx_id,
1327 0x23ca354dfe067e9b,
1328 fidl::encoding::DynamicFlags::empty(),
1329 )
1330 }
1331}
1332
1333#[must_use = "FIDL methods require a response to be sent"]
1334#[derive(Debug)]
1335pub struct DeviceGetCurrentVoltageResponder {
1336 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1337 tx_id: u32,
1338}
1339
1340impl std::ops::Drop for DeviceGetCurrentVoltageResponder {
1344 fn drop(&mut self) {
1345 self.control_handle.shutdown();
1346 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1348 }
1349}
1350
1351impl fidl::endpoints::Responder for DeviceGetCurrentVoltageResponder {
1352 type ControlHandle = DeviceControlHandle;
1353
1354 fn control_handle(&self) -> &DeviceControlHandle {
1355 &self.control_handle
1356 }
1357
1358 fn drop_without_shutdown(mut self) {
1359 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1361 std::mem::forget(self);
1363 }
1364}
1365
1366impl DeviceGetCurrentVoltageResponder {
1367 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1371 let _result = self.send_raw(result);
1372 if _result.is_err() {
1373 self.control_handle.shutdown();
1374 }
1375 self.drop_without_shutdown();
1376 _result
1377 }
1378
1379 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1381 let _result = self.send_raw(result);
1382 self.drop_without_shutdown();
1383 _result
1384 }
1385
1386 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1387 self.control_handle
1388 .inner
1389 .send::<fidl::encoding::ResultType<DeviceGetCurrentVoltageResponse, i32>>(
1390 result.map(|current_voltage| (current_voltage,)),
1391 self.tx_id,
1392 0x6a9f80a0412da961,
1393 fidl::encoding::DynamicFlags::empty(),
1394 )
1395 }
1396}
1397
1398#[must_use = "FIDL methods require a response to be sent"]
1399#[derive(Debug)]
1400pub struct DeviceGetPowerDomainStatusResponder {
1401 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1402 tx_id: u32,
1403}
1404
1405impl std::ops::Drop for DeviceGetPowerDomainStatusResponder {
1409 fn drop(&mut self) {
1410 self.control_handle.shutdown();
1411 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1413 }
1414}
1415
1416impl fidl::endpoints::Responder for DeviceGetPowerDomainStatusResponder {
1417 type ControlHandle = DeviceControlHandle;
1418
1419 fn control_handle(&self) -> &DeviceControlHandle {
1420 &self.control_handle
1421 }
1422
1423 fn drop_without_shutdown(mut self) {
1424 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1426 std::mem::forget(self);
1428 }
1429}
1430
1431impl DeviceGetPowerDomainStatusResponder {
1432 pub fn send(self, mut result: Result<PowerDomainStatus, i32>) -> Result<(), fidl::Error> {
1436 let _result = self.send_raw(result);
1437 if _result.is_err() {
1438 self.control_handle.shutdown();
1439 }
1440 self.drop_without_shutdown();
1441 _result
1442 }
1443
1444 pub fn send_no_shutdown_on_err(
1446 self,
1447 mut result: Result<PowerDomainStatus, i32>,
1448 ) -> Result<(), fidl::Error> {
1449 let _result = self.send_raw(result);
1450 self.drop_without_shutdown();
1451 _result
1452 }
1453
1454 fn send_raw(&self, mut result: Result<PowerDomainStatus, i32>) -> Result<(), fidl::Error> {
1455 self.control_handle
1456 .inner
1457 .send::<fidl::encoding::ResultType<DeviceGetPowerDomainStatusResponse, i32>>(
1458 result.map(|status| (status,)),
1459 self.tx_id,
1460 0x39fe7f1e3e3c74ba,
1461 fidl::encoding::DynamicFlags::empty(),
1462 )
1463 }
1464}
1465
1466#[must_use = "FIDL methods require a response to be sent"]
1467#[derive(Debug)]
1468pub struct DeviceWritePmicCtrlRegResponder {
1469 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1470 tx_id: u32,
1471}
1472
1473impl std::ops::Drop for DeviceWritePmicCtrlRegResponder {
1477 fn drop(&mut self) {
1478 self.control_handle.shutdown();
1479 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1481 }
1482}
1483
1484impl fidl::endpoints::Responder for DeviceWritePmicCtrlRegResponder {
1485 type ControlHandle = DeviceControlHandle;
1486
1487 fn control_handle(&self) -> &DeviceControlHandle {
1488 &self.control_handle
1489 }
1490
1491 fn drop_without_shutdown(mut self) {
1492 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1494 std::mem::forget(self);
1496 }
1497}
1498
1499impl DeviceWritePmicCtrlRegResponder {
1500 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1504 let _result = self.send_raw(result);
1505 if _result.is_err() {
1506 self.control_handle.shutdown();
1507 }
1508 self.drop_without_shutdown();
1509 _result
1510 }
1511
1512 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1514 let _result = self.send_raw(result);
1515 self.drop_without_shutdown();
1516 _result
1517 }
1518
1519 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1520 self.control_handle
1521 .inner
1522 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
1523 result,
1524 self.tx_id,
1525 0x340a3483d4740299,
1526 fidl::encoding::DynamicFlags::empty(),
1527 )
1528 }
1529}
1530
1531#[must_use = "FIDL methods require a response to be sent"]
1532#[derive(Debug)]
1533pub struct DeviceReadPmicCtrlRegResponder {
1534 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1535 tx_id: u32,
1536}
1537
1538impl std::ops::Drop for DeviceReadPmicCtrlRegResponder {
1542 fn drop(&mut self) {
1543 self.control_handle.shutdown();
1544 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1546 }
1547}
1548
1549impl fidl::endpoints::Responder for DeviceReadPmicCtrlRegResponder {
1550 type ControlHandle = DeviceControlHandle;
1551
1552 fn control_handle(&self) -> &DeviceControlHandle {
1553 &self.control_handle
1554 }
1555
1556 fn drop_without_shutdown(mut self) {
1557 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1559 std::mem::forget(self);
1561 }
1562}
1563
1564impl DeviceReadPmicCtrlRegResponder {
1565 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1569 let _result = self.send_raw(result);
1570 if _result.is_err() {
1571 self.control_handle.shutdown();
1572 }
1573 self.drop_without_shutdown();
1574 _result
1575 }
1576
1577 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1579 let _result = self.send_raw(result);
1580 self.drop_without_shutdown();
1581 _result
1582 }
1583
1584 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1585 self.control_handle
1586 .inner
1587 .send::<fidl::encoding::ResultType<DeviceReadPmicCtrlRegResponse, i32>>(
1588 result.map(|value| (value,)),
1589 self.tx_id,
1590 0x72eebf304bb82f13,
1591 fidl::encoding::DynamicFlags::empty(),
1592 )
1593 }
1594}
1595
1596#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1597pub struct PowerTokenProviderMarker;
1598
1599impl fidl::endpoints::ProtocolMarker for PowerTokenProviderMarker {
1600 type Proxy = PowerTokenProviderProxy;
1601 type RequestStream = PowerTokenProviderRequestStream;
1602 #[cfg(target_os = "fuchsia")]
1603 type SynchronousProxy = PowerTokenProviderSynchronousProxy;
1604
1605 const DEBUG_NAME: &'static str = "fuchsia.hardware.power.PowerTokenProvider";
1606}
1607impl fidl::endpoints::DiscoverableProtocolMarker for PowerTokenProviderMarker {}
1608pub type PowerTokenProviderGetTokenResult = Result<fidl::Event, i32>;
1609
1610pub trait PowerTokenProviderProxyInterface: Send + Sync {
1611 type GetTokenResponseFut: std::future::Future<Output = Result<PowerTokenProviderGetTokenResult, fidl::Error>>
1612 + Send;
1613 fn r#get_token(&self) -> Self::GetTokenResponseFut;
1614}
1615#[derive(Debug)]
1616#[cfg(target_os = "fuchsia")]
1617pub struct PowerTokenProviderSynchronousProxy {
1618 client: fidl::client::sync::Client,
1619}
1620
1621#[cfg(target_os = "fuchsia")]
1622impl fidl::endpoints::SynchronousProxy for PowerTokenProviderSynchronousProxy {
1623 type Proxy = PowerTokenProviderProxy;
1624 type Protocol = PowerTokenProviderMarker;
1625
1626 fn from_channel(inner: fidl::Channel) -> Self {
1627 Self::new(inner)
1628 }
1629
1630 fn into_channel(self) -> fidl::Channel {
1631 self.client.into_channel()
1632 }
1633
1634 fn as_channel(&self) -> &fidl::Channel {
1635 self.client.as_channel()
1636 }
1637}
1638
1639#[cfg(target_os = "fuchsia")]
1640impl PowerTokenProviderSynchronousProxy {
1641 pub fn new(channel: fidl::Channel) -> Self {
1642 let protocol_name =
1643 <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1644 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1645 }
1646
1647 pub fn into_channel(self) -> fidl::Channel {
1648 self.client.into_channel()
1649 }
1650
1651 pub fn wait_for_event(
1654 &self,
1655 deadline: zx::MonotonicInstant,
1656 ) -> Result<PowerTokenProviderEvent, fidl::Error> {
1657 PowerTokenProviderEvent::decode(self.client.wait_for_event(deadline)?)
1658 }
1659
1660 pub fn r#get_token(
1664 &self,
1665 ___deadline: zx::MonotonicInstant,
1666 ) -> Result<PowerTokenProviderGetTokenResult, fidl::Error> {
1667 let _response = self.client.send_query::<
1668 fidl::encoding::EmptyPayload,
1669 fidl::encoding::FlexibleResultType<PowerTokenProviderGetTokenResponse, i32>,
1670 >(
1671 (),
1672 0x289cd59b7d9f90ca,
1673 fidl::encoding::DynamicFlags::FLEXIBLE,
1674 ___deadline,
1675 )?
1676 .into_result::<PowerTokenProviderMarker>("get_token")?;
1677 Ok(_response.map(|x| x.handle))
1678 }
1679}
1680
1681#[cfg(target_os = "fuchsia")]
1682impl From<PowerTokenProviderSynchronousProxy> for zx::Handle {
1683 fn from(value: PowerTokenProviderSynchronousProxy) -> Self {
1684 value.into_channel().into()
1685 }
1686}
1687
1688#[cfg(target_os = "fuchsia")]
1689impl From<fidl::Channel> for PowerTokenProviderSynchronousProxy {
1690 fn from(value: fidl::Channel) -> Self {
1691 Self::new(value)
1692 }
1693}
1694
1695#[cfg(target_os = "fuchsia")]
1696impl fidl::endpoints::FromClient for PowerTokenProviderSynchronousProxy {
1697 type Protocol = PowerTokenProviderMarker;
1698
1699 fn from_client(value: fidl::endpoints::ClientEnd<PowerTokenProviderMarker>) -> Self {
1700 Self::new(value.into_channel())
1701 }
1702}
1703
1704#[derive(Debug, Clone)]
1705pub struct PowerTokenProviderProxy {
1706 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1707}
1708
1709impl fidl::endpoints::Proxy for PowerTokenProviderProxy {
1710 type Protocol = PowerTokenProviderMarker;
1711
1712 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1713 Self::new(inner)
1714 }
1715
1716 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1717 self.client.into_channel().map_err(|client| Self { client })
1718 }
1719
1720 fn as_channel(&self) -> &::fidl::AsyncChannel {
1721 self.client.as_channel()
1722 }
1723}
1724
1725impl PowerTokenProviderProxy {
1726 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1728 let protocol_name =
1729 <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1730 Self { client: fidl::client::Client::new(channel, protocol_name) }
1731 }
1732
1733 pub fn take_event_stream(&self) -> PowerTokenProviderEventStream {
1739 PowerTokenProviderEventStream { event_receiver: self.client.take_event_receiver() }
1740 }
1741
1742 pub fn r#get_token(
1746 &self,
1747 ) -> fidl::client::QueryResponseFut<
1748 PowerTokenProviderGetTokenResult,
1749 fidl::encoding::DefaultFuchsiaResourceDialect,
1750 > {
1751 PowerTokenProviderProxyInterface::r#get_token(self)
1752 }
1753}
1754
1755impl PowerTokenProviderProxyInterface for PowerTokenProviderProxy {
1756 type GetTokenResponseFut = fidl::client::QueryResponseFut<
1757 PowerTokenProviderGetTokenResult,
1758 fidl::encoding::DefaultFuchsiaResourceDialect,
1759 >;
1760 fn r#get_token(&self) -> Self::GetTokenResponseFut {
1761 fn _decode(
1762 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1763 ) -> Result<PowerTokenProviderGetTokenResult, fidl::Error> {
1764 let _response = fidl::client::decode_transaction_body::<
1765 fidl::encoding::FlexibleResultType<PowerTokenProviderGetTokenResponse, i32>,
1766 fidl::encoding::DefaultFuchsiaResourceDialect,
1767 0x289cd59b7d9f90ca,
1768 >(_buf?)?
1769 .into_result::<PowerTokenProviderMarker>("get_token")?;
1770 Ok(_response.map(|x| x.handle))
1771 }
1772 self.client.send_query_and_decode::<
1773 fidl::encoding::EmptyPayload,
1774 PowerTokenProviderGetTokenResult,
1775 >(
1776 (),
1777 0x289cd59b7d9f90ca,
1778 fidl::encoding::DynamicFlags::FLEXIBLE,
1779 _decode,
1780 )
1781 }
1782}
1783
1784pub struct PowerTokenProviderEventStream {
1785 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1786}
1787
1788impl std::marker::Unpin for PowerTokenProviderEventStream {}
1789
1790impl futures::stream::FusedStream for PowerTokenProviderEventStream {
1791 fn is_terminated(&self) -> bool {
1792 self.event_receiver.is_terminated()
1793 }
1794}
1795
1796impl futures::Stream for PowerTokenProviderEventStream {
1797 type Item = Result<PowerTokenProviderEvent, fidl::Error>;
1798
1799 fn poll_next(
1800 mut self: std::pin::Pin<&mut Self>,
1801 cx: &mut std::task::Context<'_>,
1802 ) -> std::task::Poll<Option<Self::Item>> {
1803 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1804 &mut self.event_receiver,
1805 cx
1806 )?) {
1807 Some(buf) => std::task::Poll::Ready(Some(PowerTokenProviderEvent::decode(buf))),
1808 None => std::task::Poll::Ready(None),
1809 }
1810 }
1811}
1812
1813#[derive(Debug)]
1814pub enum PowerTokenProviderEvent {
1815 #[non_exhaustive]
1816 _UnknownEvent {
1817 ordinal: u64,
1819 },
1820}
1821
1822impl PowerTokenProviderEvent {
1823 fn decode(
1825 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1826 ) -> Result<PowerTokenProviderEvent, fidl::Error> {
1827 let (bytes, _handles) = buf.split_mut();
1828 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1829 debug_assert_eq!(tx_header.tx_id, 0);
1830 match tx_header.ordinal {
1831 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1832 Ok(PowerTokenProviderEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1833 }
1834 _ => Err(fidl::Error::UnknownOrdinal {
1835 ordinal: tx_header.ordinal,
1836 protocol_name:
1837 <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1838 }),
1839 }
1840 }
1841}
1842
1843pub struct PowerTokenProviderRequestStream {
1845 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1846 is_terminated: bool,
1847}
1848
1849impl std::marker::Unpin for PowerTokenProviderRequestStream {}
1850
1851impl futures::stream::FusedStream for PowerTokenProviderRequestStream {
1852 fn is_terminated(&self) -> bool {
1853 self.is_terminated
1854 }
1855}
1856
1857impl fidl::endpoints::RequestStream for PowerTokenProviderRequestStream {
1858 type Protocol = PowerTokenProviderMarker;
1859 type ControlHandle = PowerTokenProviderControlHandle;
1860
1861 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1862 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1863 }
1864
1865 fn control_handle(&self) -> Self::ControlHandle {
1866 PowerTokenProviderControlHandle { inner: self.inner.clone() }
1867 }
1868
1869 fn into_inner(
1870 self,
1871 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1872 {
1873 (self.inner, self.is_terminated)
1874 }
1875
1876 fn from_inner(
1877 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1878 is_terminated: bool,
1879 ) -> Self {
1880 Self { inner, is_terminated }
1881 }
1882}
1883
1884impl futures::Stream for PowerTokenProviderRequestStream {
1885 type Item = Result<PowerTokenProviderRequest, fidl::Error>;
1886
1887 fn poll_next(
1888 mut self: std::pin::Pin<&mut Self>,
1889 cx: &mut std::task::Context<'_>,
1890 ) -> std::task::Poll<Option<Self::Item>> {
1891 let this = &mut *self;
1892 if this.inner.check_shutdown(cx) {
1893 this.is_terminated = true;
1894 return std::task::Poll::Ready(None);
1895 }
1896 if this.is_terminated {
1897 panic!("polled PowerTokenProviderRequestStream after completion");
1898 }
1899 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1900 |bytes, handles| {
1901 match this.inner.channel().read_etc(cx, bytes, handles) {
1902 std::task::Poll::Ready(Ok(())) => {}
1903 std::task::Poll::Pending => return std::task::Poll::Pending,
1904 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1905 this.is_terminated = true;
1906 return std::task::Poll::Ready(None);
1907 }
1908 std::task::Poll::Ready(Err(e)) => {
1909 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1910 e.into(),
1911 ))));
1912 }
1913 }
1914
1915 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1917
1918 std::task::Poll::Ready(Some(match header.ordinal {
1919 0x289cd59b7d9f90ca => {
1920 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1921 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1922 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1923 let control_handle = PowerTokenProviderControlHandle {
1924 inner: this.inner.clone(),
1925 };
1926 Ok(PowerTokenProviderRequest::GetToken {
1927 responder: PowerTokenProviderGetTokenResponder {
1928 control_handle: std::mem::ManuallyDrop::new(control_handle),
1929 tx_id: header.tx_id,
1930 },
1931 })
1932 }
1933 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1934 Ok(PowerTokenProviderRequest::_UnknownMethod {
1935 ordinal: header.ordinal,
1936 control_handle: PowerTokenProviderControlHandle { inner: this.inner.clone() },
1937 method_type: fidl::MethodType::OneWay,
1938 })
1939 }
1940 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1941 this.inner.send_framework_err(
1942 fidl::encoding::FrameworkErr::UnknownMethod,
1943 header.tx_id,
1944 header.ordinal,
1945 header.dynamic_flags(),
1946 (bytes, handles),
1947 )?;
1948 Ok(PowerTokenProviderRequest::_UnknownMethod {
1949 ordinal: header.ordinal,
1950 control_handle: PowerTokenProviderControlHandle { inner: this.inner.clone() },
1951 method_type: fidl::MethodType::TwoWay,
1952 })
1953 }
1954 _ => Err(fidl::Error::UnknownOrdinal {
1955 ordinal: header.ordinal,
1956 protocol_name: <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1957 }),
1958 }))
1959 },
1960 )
1961 }
1962}
1963
1964#[derive(Debug)]
1965pub enum PowerTokenProviderRequest {
1966 GetToken { responder: PowerTokenProviderGetTokenResponder },
1970 #[non_exhaustive]
1972 _UnknownMethod {
1973 ordinal: u64,
1975 control_handle: PowerTokenProviderControlHandle,
1976 method_type: fidl::MethodType,
1977 },
1978}
1979
1980impl PowerTokenProviderRequest {
1981 #[allow(irrefutable_let_patterns)]
1982 pub fn into_get_token(self) -> Option<(PowerTokenProviderGetTokenResponder)> {
1983 if let PowerTokenProviderRequest::GetToken { responder } = self {
1984 Some((responder))
1985 } else {
1986 None
1987 }
1988 }
1989
1990 pub fn method_name(&self) -> &'static str {
1992 match *self {
1993 PowerTokenProviderRequest::GetToken { .. } => "get_token",
1994 PowerTokenProviderRequest::_UnknownMethod {
1995 method_type: fidl::MethodType::OneWay,
1996 ..
1997 } => "unknown one-way method",
1998 PowerTokenProviderRequest::_UnknownMethod {
1999 method_type: fidl::MethodType::TwoWay,
2000 ..
2001 } => "unknown two-way method",
2002 }
2003 }
2004}
2005
2006#[derive(Debug, Clone)]
2007pub struct PowerTokenProviderControlHandle {
2008 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2009}
2010
2011impl fidl::endpoints::ControlHandle for PowerTokenProviderControlHandle {
2012 fn shutdown(&self) {
2013 self.inner.shutdown()
2014 }
2015 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2016 self.inner.shutdown_with_epitaph(status)
2017 }
2018
2019 fn is_closed(&self) -> bool {
2020 self.inner.channel().is_closed()
2021 }
2022 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2023 self.inner.channel().on_closed()
2024 }
2025
2026 #[cfg(target_os = "fuchsia")]
2027 fn signal_peer(
2028 &self,
2029 clear_mask: zx::Signals,
2030 set_mask: zx::Signals,
2031 ) -> Result<(), zx_status::Status> {
2032 use fidl::Peered;
2033 self.inner.channel().signal_peer(clear_mask, set_mask)
2034 }
2035}
2036
2037impl PowerTokenProviderControlHandle {}
2038
2039#[must_use = "FIDL methods require a response to be sent"]
2040#[derive(Debug)]
2041pub struct PowerTokenProviderGetTokenResponder {
2042 control_handle: std::mem::ManuallyDrop<PowerTokenProviderControlHandle>,
2043 tx_id: u32,
2044}
2045
2046impl std::ops::Drop for PowerTokenProviderGetTokenResponder {
2050 fn drop(&mut self) {
2051 self.control_handle.shutdown();
2052 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2054 }
2055}
2056
2057impl fidl::endpoints::Responder for PowerTokenProviderGetTokenResponder {
2058 type ControlHandle = PowerTokenProviderControlHandle;
2059
2060 fn control_handle(&self) -> &PowerTokenProviderControlHandle {
2061 &self.control_handle
2062 }
2063
2064 fn drop_without_shutdown(mut self) {
2065 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2067 std::mem::forget(self);
2069 }
2070}
2071
2072impl PowerTokenProviderGetTokenResponder {
2073 pub fn send(self, mut result: Result<fidl::Event, i32>) -> Result<(), fidl::Error> {
2077 let _result = self.send_raw(result);
2078 if _result.is_err() {
2079 self.control_handle.shutdown();
2080 }
2081 self.drop_without_shutdown();
2082 _result
2083 }
2084
2085 pub fn send_no_shutdown_on_err(
2087 self,
2088 mut result: Result<fidl::Event, i32>,
2089 ) -> Result<(), fidl::Error> {
2090 let _result = self.send_raw(result);
2091 self.drop_without_shutdown();
2092 _result
2093 }
2094
2095 fn send_raw(&self, mut result: Result<fidl::Event, i32>) -> Result<(), fidl::Error> {
2096 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2097 PowerTokenProviderGetTokenResponse,
2098 i32,
2099 >>(
2100 fidl::encoding::FlexibleResult::new(result.map(|handle| (handle,))),
2101 self.tx_id,
2102 0x289cd59b7d9f90ca,
2103 fidl::encoding::DynamicFlags::FLEXIBLE,
2104 )
2105 }
2106}
2107
2108#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2109pub struct PowerTokenServiceMarker;
2110
2111#[cfg(target_os = "fuchsia")]
2112impl fidl::endpoints::ServiceMarker for PowerTokenServiceMarker {
2113 type Proxy = PowerTokenServiceProxy;
2114 type Request = PowerTokenServiceRequest;
2115 const SERVICE_NAME: &'static str = "fuchsia.hardware.power.PowerTokenService";
2116}
2117
2118#[cfg(target_os = "fuchsia")]
2121pub enum PowerTokenServiceRequest {
2122 TokenProvider(PowerTokenProviderRequestStream),
2123}
2124
2125#[cfg(target_os = "fuchsia")]
2126impl fidl::endpoints::ServiceRequest for PowerTokenServiceRequest {
2127 type Service = PowerTokenServiceMarker;
2128
2129 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
2130 match name {
2131 "token_provider" => Self::TokenProvider(
2132 <PowerTokenProviderRequestStream as fidl::endpoints::RequestStream>::from_channel(
2133 _channel,
2134 ),
2135 ),
2136 _ => panic!("no such member protocol name for service PowerTokenService"),
2137 }
2138 }
2139
2140 fn member_names() -> &'static [&'static str] {
2141 &["token_provider"]
2142 }
2143}
2144#[cfg(target_os = "fuchsia")]
2145pub struct PowerTokenServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
2146
2147#[cfg(target_os = "fuchsia")]
2148impl fidl::endpoints::ServiceProxy for PowerTokenServiceProxy {
2149 type Service = PowerTokenServiceMarker;
2150
2151 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
2152 Self(opener)
2153 }
2154}
2155
2156#[cfg(target_os = "fuchsia")]
2157impl PowerTokenServiceProxy {
2158 pub fn connect_to_token_provider(&self) -> Result<PowerTokenProviderProxy, fidl::Error> {
2159 let (proxy, server_end) = fidl::endpoints::create_proxy::<PowerTokenProviderMarker>();
2160 self.connect_channel_to_token_provider(server_end)?;
2161 Ok(proxy)
2162 }
2163
2164 pub fn connect_to_token_provider_sync(
2167 &self,
2168 ) -> Result<PowerTokenProviderSynchronousProxy, fidl::Error> {
2169 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<PowerTokenProviderMarker>();
2170 self.connect_channel_to_token_provider(server_end)?;
2171 Ok(proxy)
2172 }
2173
2174 pub fn connect_channel_to_token_provider(
2177 &self,
2178 server_end: fidl::endpoints::ServerEnd<PowerTokenProviderMarker>,
2179 ) -> Result<(), fidl::Error> {
2180 self.0.open_member("token_provider", server_end.into_channel())
2181 }
2182
2183 pub fn instance_name(&self) -> &str {
2184 self.0.instance_name()
2185 }
2186}
2187
2188#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2189pub struct ServiceMarker;
2190
2191#[cfg(target_os = "fuchsia")]
2192impl fidl::endpoints::ServiceMarker for ServiceMarker {
2193 type Proxy = ServiceProxy;
2194 type Request = ServiceRequest;
2195 const SERVICE_NAME: &'static str = "fuchsia.hardware.power.Service";
2196}
2197
2198#[cfg(target_os = "fuchsia")]
2201pub enum ServiceRequest {
2202 Device(DeviceRequestStream),
2203}
2204
2205#[cfg(target_os = "fuchsia")]
2206impl fidl::endpoints::ServiceRequest for ServiceRequest {
2207 type Service = ServiceMarker;
2208
2209 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
2210 match name {
2211 "device" => Self::Device(
2212 <DeviceRequestStream as fidl::endpoints::RequestStream>::from_channel(_channel),
2213 ),
2214 _ => panic!("no such member protocol name for service Service"),
2215 }
2216 }
2217
2218 fn member_names() -> &'static [&'static str] {
2219 &["device"]
2220 }
2221}
2222#[cfg(target_os = "fuchsia")]
2223pub struct ServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
2224
2225#[cfg(target_os = "fuchsia")]
2226impl fidl::endpoints::ServiceProxy for ServiceProxy {
2227 type Service = ServiceMarker;
2228
2229 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
2230 Self(opener)
2231 }
2232}
2233
2234#[cfg(target_os = "fuchsia")]
2235impl ServiceProxy {
2236 pub fn connect_to_device(&self) -> Result<DeviceProxy, fidl::Error> {
2237 let (proxy, server_end) = fidl::endpoints::create_proxy::<DeviceMarker>();
2238 self.connect_channel_to_device(server_end)?;
2239 Ok(proxy)
2240 }
2241
2242 pub fn connect_to_device_sync(&self) -> Result<DeviceSynchronousProxy, fidl::Error> {
2245 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<DeviceMarker>();
2246 self.connect_channel_to_device(server_end)?;
2247 Ok(proxy)
2248 }
2249
2250 pub fn connect_channel_to_device(
2253 &self,
2254 server_end: fidl::endpoints::ServerEnd<DeviceMarker>,
2255 ) -> Result<(), fidl::Error> {
2256 self.0.open_member("device", server_end.into_channel())
2257 }
2258
2259 pub fn instance_name(&self) -> &str {
2260 self.0.instance_name()
2261 }
2262}
2263
2264mod internal {
2265 use super::*;
2266
2267 impl fidl::encoding::ResourceTypeMarker for PowerTokenProviderGetTokenResponse {
2268 type Borrowed<'a> = &'a mut Self;
2269 fn take_or_borrow<'a>(
2270 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2271 ) -> Self::Borrowed<'a> {
2272 value
2273 }
2274 }
2275
2276 unsafe impl fidl::encoding::TypeMarker for PowerTokenProviderGetTokenResponse {
2277 type Owned = Self;
2278
2279 #[inline(always)]
2280 fn inline_align(_context: fidl::encoding::Context) -> usize {
2281 4
2282 }
2283
2284 #[inline(always)]
2285 fn inline_size(_context: fidl::encoding::Context) -> usize {
2286 4
2287 }
2288 }
2289
2290 unsafe impl
2291 fidl::encoding::Encode<
2292 PowerTokenProviderGetTokenResponse,
2293 fidl::encoding::DefaultFuchsiaResourceDialect,
2294 > for &mut PowerTokenProviderGetTokenResponse
2295 {
2296 #[inline]
2297 unsafe fn encode(
2298 self,
2299 encoder: &mut fidl::encoding::Encoder<
2300 '_,
2301 fidl::encoding::DefaultFuchsiaResourceDialect,
2302 >,
2303 offset: usize,
2304 _depth: fidl::encoding::Depth,
2305 ) -> fidl::Result<()> {
2306 encoder.debug_check_bounds::<PowerTokenProviderGetTokenResponse>(offset);
2307 fidl::encoding::Encode::<
2309 PowerTokenProviderGetTokenResponse,
2310 fidl::encoding::DefaultFuchsiaResourceDialect,
2311 >::encode(
2312 (<fidl::encoding::HandleType<
2313 fidl::Event,
2314 { fidl::ObjectType::EVENT.into_raw() },
2315 2147483648,
2316 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2317 &mut self.handle
2318 ),),
2319 encoder,
2320 offset,
2321 _depth,
2322 )
2323 }
2324 }
2325 unsafe impl<
2326 T0: fidl::encoding::Encode<
2327 fidl::encoding::HandleType<
2328 fidl::Event,
2329 { fidl::ObjectType::EVENT.into_raw() },
2330 2147483648,
2331 >,
2332 fidl::encoding::DefaultFuchsiaResourceDialect,
2333 >,
2334 >
2335 fidl::encoding::Encode<
2336 PowerTokenProviderGetTokenResponse,
2337 fidl::encoding::DefaultFuchsiaResourceDialect,
2338 > for (T0,)
2339 {
2340 #[inline]
2341 unsafe fn encode(
2342 self,
2343 encoder: &mut fidl::encoding::Encoder<
2344 '_,
2345 fidl::encoding::DefaultFuchsiaResourceDialect,
2346 >,
2347 offset: usize,
2348 depth: fidl::encoding::Depth,
2349 ) -> fidl::Result<()> {
2350 encoder.debug_check_bounds::<PowerTokenProviderGetTokenResponse>(offset);
2351 self.0.encode(encoder, offset + 0, depth)?;
2355 Ok(())
2356 }
2357 }
2358
2359 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2360 for PowerTokenProviderGetTokenResponse
2361 {
2362 #[inline(always)]
2363 fn new_empty() -> Self {
2364 Self {
2365 handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
2366 }
2367 }
2368
2369 #[inline]
2370 unsafe fn decode(
2371 &mut self,
2372 decoder: &mut fidl::encoding::Decoder<
2373 '_,
2374 fidl::encoding::DefaultFuchsiaResourceDialect,
2375 >,
2376 offset: usize,
2377 _depth: fidl::encoding::Depth,
2378 ) -> fidl::Result<()> {
2379 decoder.debug_check_bounds::<Self>(offset);
2380 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 0, _depth)?;
2382 Ok(())
2383 }
2384 }
2385}