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::NullableHandle {
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
1046 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1047 self.inner.shutdown_with_epitaph(status)
1048 }
1049
1050 fn is_closed(&self) -> bool {
1051 self.inner.channel().is_closed()
1052 }
1053 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1054 self.inner.channel().on_closed()
1055 }
1056
1057 #[cfg(target_os = "fuchsia")]
1058 fn signal_peer(
1059 &self,
1060 clear_mask: zx::Signals,
1061 set_mask: zx::Signals,
1062 ) -> Result<(), zx_status::Status> {
1063 use fidl::Peered;
1064 self.inner.channel().signal_peer(clear_mask, set_mask)
1065 }
1066}
1067
1068impl DeviceControlHandle {}
1069
1070#[must_use = "FIDL methods require a response to be sent"]
1071#[derive(Debug)]
1072pub struct DeviceRegisterPowerDomainResponder {
1073 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1074 tx_id: u32,
1075}
1076
1077impl std::ops::Drop for DeviceRegisterPowerDomainResponder {
1081 fn drop(&mut self) {
1082 self.control_handle.shutdown();
1083 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1085 }
1086}
1087
1088impl fidl::endpoints::Responder for DeviceRegisterPowerDomainResponder {
1089 type ControlHandle = DeviceControlHandle;
1090
1091 fn control_handle(&self) -> &DeviceControlHandle {
1092 &self.control_handle
1093 }
1094
1095 fn drop_without_shutdown(mut self) {
1096 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1098 std::mem::forget(self);
1100 }
1101}
1102
1103impl DeviceRegisterPowerDomainResponder {
1104 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1108 let _result = self.send_raw(result);
1109 if _result.is_err() {
1110 self.control_handle.shutdown();
1111 }
1112 self.drop_without_shutdown();
1113 _result
1114 }
1115
1116 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1118 let _result = self.send_raw(result);
1119 self.drop_without_shutdown();
1120 _result
1121 }
1122
1123 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1124 self.control_handle
1125 .inner
1126 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
1127 result,
1128 self.tx_id,
1129 0x3dde3e7cb91210dc,
1130 fidl::encoding::DynamicFlags::empty(),
1131 )
1132 }
1133}
1134
1135#[must_use = "FIDL methods require a response to be sent"]
1136#[derive(Debug)]
1137pub struct DeviceUnregisterPowerDomainResponder {
1138 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1139 tx_id: u32,
1140}
1141
1142impl std::ops::Drop for DeviceUnregisterPowerDomainResponder {
1146 fn drop(&mut self) {
1147 self.control_handle.shutdown();
1148 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1150 }
1151}
1152
1153impl fidl::endpoints::Responder for DeviceUnregisterPowerDomainResponder {
1154 type ControlHandle = DeviceControlHandle;
1155
1156 fn control_handle(&self) -> &DeviceControlHandle {
1157 &self.control_handle
1158 }
1159
1160 fn drop_without_shutdown(mut self) {
1161 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1163 std::mem::forget(self);
1165 }
1166}
1167
1168impl DeviceUnregisterPowerDomainResponder {
1169 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1173 let _result = self.send_raw(result);
1174 if _result.is_err() {
1175 self.control_handle.shutdown();
1176 }
1177 self.drop_without_shutdown();
1178 _result
1179 }
1180
1181 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1183 let _result = self.send_raw(result);
1184 self.drop_without_shutdown();
1185 _result
1186 }
1187
1188 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1189 self.control_handle
1190 .inner
1191 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
1192 result,
1193 self.tx_id,
1194 0x6b1b26f908fd8c69,
1195 fidl::encoding::DynamicFlags::empty(),
1196 )
1197 }
1198}
1199
1200#[must_use = "FIDL methods require a response to be sent"]
1201#[derive(Debug)]
1202pub struct DeviceGetSupportedVoltageRangeResponder {
1203 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1204 tx_id: u32,
1205}
1206
1207impl std::ops::Drop for DeviceGetSupportedVoltageRangeResponder {
1211 fn drop(&mut self) {
1212 self.control_handle.shutdown();
1213 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1215 }
1216}
1217
1218impl fidl::endpoints::Responder for DeviceGetSupportedVoltageRangeResponder {
1219 type ControlHandle = DeviceControlHandle;
1220
1221 fn control_handle(&self) -> &DeviceControlHandle {
1222 &self.control_handle
1223 }
1224
1225 fn drop_without_shutdown(mut self) {
1226 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1228 std::mem::forget(self);
1230 }
1231}
1232
1233impl DeviceGetSupportedVoltageRangeResponder {
1234 pub fn send(self, mut result: Result<(u32, u32), i32>) -> Result<(), fidl::Error> {
1238 let _result = self.send_raw(result);
1239 if _result.is_err() {
1240 self.control_handle.shutdown();
1241 }
1242 self.drop_without_shutdown();
1243 _result
1244 }
1245
1246 pub fn send_no_shutdown_on_err(
1248 self,
1249 mut result: Result<(u32, u32), i32>,
1250 ) -> Result<(), fidl::Error> {
1251 let _result = self.send_raw(result);
1252 self.drop_without_shutdown();
1253 _result
1254 }
1255
1256 fn send_raw(&self, mut result: Result<(u32, u32), i32>) -> Result<(), fidl::Error> {
1257 self.control_handle.inner.send::<fidl::encoding::ResultType<
1258 DeviceGetSupportedVoltageRangeResponse,
1259 i32,
1260 >>(
1261 result,
1262 self.tx_id,
1263 0x6d75897fea248df0,
1264 fidl::encoding::DynamicFlags::empty(),
1265 )
1266 }
1267}
1268
1269#[must_use = "FIDL methods require a response to be sent"]
1270#[derive(Debug)]
1271pub struct DeviceRequestVoltageResponder {
1272 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1273 tx_id: u32,
1274}
1275
1276impl std::ops::Drop for DeviceRequestVoltageResponder {
1280 fn drop(&mut self) {
1281 self.control_handle.shutdown();
1282 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1284 }
1285}
1286
1287impl fidl::endpoints::Responder for DeviceRequestVoltageResponder {
1288 type ControlHandle = DeviceControlHandle;
1289
1290 fn control_handle(&self) -> &DeviceControlHandle {
1291 &self.control_handle
1292 }
1293
1294 fn drop_without_shutdown(mut self) {
1295 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1297 std::mem::forget(self);
1299 }
1300}
1301
1302impl DeviceRequestVoltageResponder {
1303 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1307 let _result = self.send_raw(result);
1308 if _result.is_err() {
1309 self.control_handle.shutdown();
1310 }
1311 self.drop_without_shutdown();
1312 _result
1313 }
1314
1315 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1317 let _result = self.send_raw(result);
1318 self.drop_without_shutdown();
1319 _result
1320 }
1321
1322 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1323 self.control_handle
1324 .inner
1325 .send::<fidl::encoding::ResultType<DeviceRequestVoltageResponse, i32>>(
1326 result.map(|actual_voltage| (actual_voltage,)),
1327 self.tx_id,
1328 0x23ca354dfe067e9b,
1329 fidl::encoding::DynamicFlags::empty(),
1330 )
1331 }
1332}
1333
1334#[must_use = "FIDL methods require a response to be sent"]
1335#[derive(Debug)]
1336pub struct DeviceGetCurrentVoltageResponder {
1337 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1338 tx_id: u32,
1339}
1340
1341impl std::ops::Drop for DeviceGetCurrentVoltageResponder {
1345 fn drop(&mut self) {
1346 self.control_handle.shutdown();
1347 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1349 }
1350}
1351
1352impl fidl::endpoints::Responder for DeviceGetCurrentVoltageResponder {
1353 type ControlHandle = DeviceControlHandle;
1354
1355 fn control_handle(&self) -> &DeviceControlHandle {
1356 &self.control_handle
1357 }
1358
1359 fn drop_without_shutdown(mut self) {
1360 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1362 std::mem::forget(self);
1364 }
1365}
1366
1367impl DeviceGetCurrentVoltageResponder {
1368 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1372 let _result = self.send_raw(result);
1373 if _result.is_err() {
1374 self.control_handle.shutdown();
1375 }
1376 self.drop_without_shutdown();
1377 _result
1378 }
1379
1380 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1382 let _result = self.send_raw(result);
1383 self.drop_without_shutdown();
1384 _result
1385 }
1386
1387 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1388 self.control_handle
1389 .inner
1390 .send::<fidl::encoding::ResultType<DeviceGetCurrentVoltageResponse, i32>>(
1391 result.map(|current_voltage| (current_voltage,)),
1392 self.tx_id,
1393 0x6a9f80a0412da961,
1394 fidl::encoding::DynamicFlags::empty(),
1395 )
1396 }
1397}
1398
1399#[must_use = "FIDL methods require a response to be sent"]
1400#[derive(Debug)]
1401pub struct DeviceGetPowerDomainStatusResponder {
1402 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1403 tx_id: u32,
1404}
1405
1406impl std::ops::Drop for DeviceGetPowerDomainStatusResponder {
1410 fn drop(&mut self) {
1411 self.control_handle.shutdown();
1412 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1414 }
1415}
1416
1417impl fidl::endpoints::Responder for DeviceGetPowerDomainStatusResponder {
1418 type ControlHandle = DeviceControlHandle;
1419
1420 fn control_handle(&self) -> &DeviceControlHandle {
1421 &self.control_handle
1422 }
1423
1424 fn drop_without_shutdown(mut self) {
1425 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1427 std::mem::forget(self);
1429 }
1430}
1431
1432impl DeviceGetPowerDomainStatusResponder {
1433 pub fn send(self, mut result: Result<PowerDomainStatus, i32>) -> Result<(), fidl::Error> {
1437 let _result = self.send_raw(result);
1438 if _result.is_err() {
1439 self.control_handle.shutdown();
1440 }
1441 self.drop_without_shutdown();
1442 _result
1443 }
1444
1445 pub fn send_no_shutdown_on_err(
1447 self,
1448 mut result: Result<PowerDomainStatus, i32>,
1449 ) -> Result<(), fidl::Error> {
1450 let _result = self.send_raw(result);
1451 self.drop_without_shutdown();
1452 _result
1453 }
1454
1455 fn send_raw(&self, mut result: Result<PowerDomainStatus, i32>) -> Result<(), fidl::Error> {
1456 self.control_handle
1457 .inner
1458 .send::<fidl::encoding::ResultType<DeviceGetPowerDomainStatusResponse, i32>>(
1459 result.map(|status| (status,)),
1460 self.tx_id,
1461 0x39fe7f1e3e3c74ba,
1462 fidl::encoding::DynamicFlags::empty(),
1463 )
1464 }
1465}
1466
1467#[must_use = "FIDL methods require a response to be sent"]
1468#[derive(Debug)]
1469pub struct DeviceWritePmicCtrlRegResponder {
1470 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1471 tx_id: u32,
1472}
1473
1474impl std::ops::Drop for DeviceWritePmicCtrlRegResponder {
1478 fn drop(&mut self) {
1479 self.control_handle.shutdown();
1480 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1482 }
1483}
1484
1485impl fidl::endpoints::Responder for DeviceWritePmicCtrlRegResponder {
1486 type ControlHandle = DeviceControlHandle;
1487
1488 fn control_handle(&self) -> &DeviceControlHandle {
1489 &self.control_handle
1490 }
1491
1492 fn drop_without_shutdown(mut self) {
1493 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1495 std::mem::forget(self);
1497 }
1498}
1499
1500impl DeviceWritePmicCtrlRegResponder {
1501 pub fn send(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1505 let _result = self.send_raw(result);
1506 if _result.is_err() {
1507 self.control_handle.shutdown();
1508 }
1509 self.drop_without_shutdown();
1510 _result
1511 }
1512
1513 pub fn send_no_shutdown_on_err(self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1515 let _result = self.send_raw(result);
1516 self.drop_without_shutdown();
1517 _result
1518 }
1519
1520 fn send_raw(&self, mut result: Result<(), i32>) -> Result<(), fidl::Error> {
1521 self.control_handle
1522 .inner
1523 .send::<fidl::encoding::ResultType<fidl::encoding::EmptyStruct, i32>>(
1524 result,
1525 self.tx_id,
1526 0x340a3483d4740299,
1527 fidl::encoding::DynamicFlags::empty(),
1528 )
1529 }
1530}
1531
1532#[must_use = "FIDL methods require a response to be sent"]
1533#[derive(Debug)]
1534pub struct DeviceReadPmicCtrlRegResponder {
1535 control_handle: std::mem::ManuallyDrop<DeviceControlHandle>,
1536 tx_id: u32,
1537}
1538
1539impl std::ops::Drop for DeviceReadPmicCtrlRegResponder {
1543 fn drop(&mut self) {
1544 self.control_handle.shutdown();
1545 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1547 }
1548}
1549
1550impl fidl::endpoints::Responder for DeviceReadPmicCtrlRegResponder {
1551 type ControlHandle = DeviceControlHandle;
1552
1553 fn control_handle(&self) -> &DeviceControlHandle {
1554 &self.control_handle
1555 }
1556
1557 fn drop_without_shutdown(mut self) {
1558 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1560 std::mem::forget(self);
1562 }
1563}
1564
1565impl DeviceReadPmicCtrlRegResponder {
1566 pub fn send(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1570 let _result = self.send_raw(result);
1571 if _result.is_err() {
1572 self.control_handle.shutdown();
1573 }
1574 self.drop_without_shutdown();
1575 _result
1576 }
1577
1578 pub fn send_no_shutdown_on_err(self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1580 let _result = self.send_raw(result);
1581 self.drop_without_shutdown();
1582 _result
1583 }
1584
1585 fn send_raw(&self, mut result: Result<u32, i32>) -> Result<(), fidl::Error> {
1586 self.control_handle
1587 .inner
1588 .send::<fidl::encoding::ResultType<DeviceReadPmicCtrlRegResponse, i32>>(
1589 result.map(|value| (value,)),
1590 self.tx_id,
1591 0x72eebf304bb82f13,
1592 fidl::encoding::DynamicFlags::empty(),
1593 )
1594 }
1595}
1596
1597#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1598pub struct PowerTokenProviderMarker;
1599
1600impl fidl::endpoints::ProtocolMarker for PowerTokenProviderMarker {
1601 type Proxy = PowerTokenProviderProxy;
1602 type RequestStream = PowerTokenProviderRequestStream;
1603 #[cfg(target_os = "fuchsia")]
1604 type SynchronousProxy = PowerTokenProviderSynchronousProxy;
1605
1606 const DEBUG_NAME: &'static str = "fuchsia.hardware.power.PowerTokenProvider";
1607}
1608impl fidl::endpoints::DiscoverableProtocolMarker for PowerTokenProviderMarker {}
1609pub type PowerTokenProviderGetTokenResult = Result<fidl::Event, i32>;
1610
1611pub trait PowerTokenProviderProxyInterface: Send + Sync {
1612 type GetTokenResponseFut: std::future::Future<Output = Result<PowerTokenProviderGetTokenResult, fidl::Error>>
1613 + Send;
1614 fn r#get_token(&self) -> Self::GetTokenResponseFut;
1615}
1616#[derive(Debug)]
1617#[cfg(target_os = "fuchsia")]
1618pub struct PowerTokenProviderSynchronousProxy {
1619 client: fidl::client::sync::Client,
1620}
1621
1622#[cfg(target_os = "fuchsia")]
1623impl fidl::endpoints::SynchronousProxy for PowerTokenProviderSynchronousProxy {
1624 type Proxy = PowerTokenProviderProxy;
1625 type Protocol = PowerTokenProviderMarker;
1626
1627 fn from_channel(inner: fidl::Channel) -> Self {
1628 Self::new(inner)
1629 }
1630
1631 fn into_channel(self) -> fidl::Channel {
1632 self.client.into_channel()
1633 }
1634
1635 fn as_channel(&self) -> &fidl::Channel {
1636 self.client.as_channel()
1637 }
1638}
1639
1640#[cfg(target_os = "fuchsia")]
1641impl PowerTokenProviderSynchronousProxy {
1642 pub fn new(channel: fidl::Channel) -> Self {
1643 let protocol_name =
1644 <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1645 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1646 }
1647
1648 pub fn into_channel(self) -> fidl::Channel {
1649 self.client.into_channel()
1650 }
1651
1652 pub fn wait_for_event(
1655 &self,
1656 deadline: zx::MonotonicInstant,
1657 ) -> Result<PowerTokenProviderEvent, fidl::Error> {
1658 PowerTokenProviderEvent::decode(self.client.wait_for_event(deadline)?)
1659 }
1660
1661 pub fn r#get_token(
1665 &self,
1666 ___deadline: zx::MonotonicInstant,
1667 ) -> Result<PowerTokenProviderGetTokenResult, fidl::Error> {
1668 let _response = self.client.send_query::<
1669 fidl::encoding::EmptyPayload,
1670 fidl::encoding::FlexibleResultType<PowerTokenProviderGetTokenResponse, i32>,
1671 >(
1672 (),
1673 0x289cd59b7d9f90ca,
1674 fidl::encoding::DynamicFlags::FLEXIBLE,
1675 ___deadline,
1676 )?
1677 .into_result::<PowerTokenProviderMarker>("get_token")?;
1678 Ok(_response.map(|x| x.handle))
1679 }
1680}
1681
1682#[cfg(target_os = "fuchsia")]
1683impl From<PowerTokenProviderSynchronousProxy> for zx::NullableHandle {
1684 fn from(value: PowerTokenProviderSynchronousProxy) -> Self {
1685 value.into_channel().into()
1686 }
1687}
1688
1689#[cfg(target_os = "fuchsia")]
1690impl From<fidl::Channel> for PowerTokenProviderSynchronousProxy {
1691 fn from(value: fidl::Channel) -> Self {
1692 Self::new(value)
1693 }
1694}
1695
1696#[cfg(target_os = "fuchsia")]
1697impl fidl::endpoints::FromClient for PowerTokenProviderSynchronousProxy {
1698 type Protocol = PowerTokenProviderMarker;
1699
1700 fn from_client(value: fidl::endpoints::ClientEnd<PowerTokenProviderMarker>) -> Self {
1701 Self::new(value.into_channel())
1702 }
1703}
1704
1705#[derive(Debug, Clone)]
1706pub struct PowerTokenProviderProxy {
1707 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1708}
1709
1710impl fidl::endpoints::Proxy for PowerTokenProviderProxy {
1711 type Protocol = PowerTokenProviderMarker;
1712
1713 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1714 Self::new(inner)
1715 }
1716
1717 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1718 self.client.into_channel().map_err(|client| Self { client })
1719 }
1720
1721 fn as_channel(&self) -> &::fidl::AsyncChannel {
1722 self.client.as_channel()
1723 }
1724}
1725
1726impl PowerTokenProviderProxy {
1727 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1729 let protocol_name =
1730 <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1731 Self { client: fidl::client::Client::new(channel, protocol_name) }
1732 }
1733
1734 pub fn take_event_stream(&self) -> PowerTokenProviderEventStream {
1740 PowerTokenProviderEventStream { event_receiver: self.client.take_event_receiver() }
1741 }
1742
1743 pub fn r#get_token(
1747 &self,
1748 ) -> fidl::client::QueryResponseFut<
1749 PowerTokenProviderGetTokenResult,
1750 fidl::encoding::DefaultFuchsiaResourceDialect,
1751 > {
1752 PowerTokenProviderProxyInterface::r#get_token(self)
1753 }
1754}
1755
1756impl PowerTokenProviderProxyInterface for PowerTokenProviderProxy {
1757 type GetTokenResponseFut = fidl::client::QueryResponseFut<
1758 PowerTokenProviderGetTokenResult,
1759 fidl::encoding::DefaultFuchsiaResourceDialect,
1760 >;
1761 fn r#get_token(&self) -> Self::GetTokenResponseFut {
1762 fn _decode(
1763 mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1764 ) -> Result<PowerTokenProviderGetTokenResult, fidl::Error> {
1765 let _response = fidl::client::decode_transaction_body::<
1766 fidl::encoding::FlexibleResultType<PowerTokenProviderGetTokenResponse, i32>,
1767 fidl::encoding::DefaultFuchsiaResourceDialect,
1768 0x289cd59b7d9f90ca,
1769 >(_buf?)?
1770 .into_result::<PowerTokenProviderMarker>("get_token")?;
1771 Ok(_response.map(|x| x.handle))
1772 }
1773 self.client.send_query_and_decode::<
1774 fidl::encoding::EmptyPayload,
1775 PowerTokenProviderGetTokenResult,
1776 >(
1777 (),
1778 0x289cd59b7d9f90ca,
1779 fidl::encoding::DynamicFlags::FLEXIBLE,
1780 _decode,
1781 )
1782 }
1783}
1784
1785pub struct PowerTokenProviderEventStream {
1786 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1787}
1788
1789impl std::marker::Unpin for PowerTokenProviderEventStream {}
1790
1791impl futures::stream::FusedStream for PowerTokenProviderEventStream {
1792 fn is_terminated(&self) -> bool {
1793 self.event_receiver.is_terminated()
1794 }
1795}
1796
1797impl futures::Stream for PowerTokenProviderEventStream {
1798 type Item = Result<PowerTokenProviderEvent, fidl::Error>;
1799
1800 fn poll_next(
1801 mut self: std::pin::Pin<&mut Self>,
1802 cx: &mut std::task::Context<'_>,
1803 ) -> std::task::Poll<Option<Self::Item>> {
1804 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1805 &mut self.event_receiver,
1806 cx
1807 )?) {
1808 Some(buf) => std::task::Poll::Ready(Some(PowerTokenProviderEvent::decode(buf))),
1809 None => std::task::Poll::Ready(None),
1810 }
1811 }
1812}
1813
1814#[derive(Debug)]
1815pub enum PowerTokenProviderEvent {
1816 #[non_exhaustive]
1817 _UnknownEvent {
1818 ordinal: u64,
1820 },
1821}
1822
1823impl PowerTokenProviderEvent {
1824 fn decode(
1826 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1827 ) -> Result<PowerTokenProviderEvent, fidl::Error> {
1828 let (bytes, _handles) = buf.split_mut();
1829 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1830 debug_assert_eq!(tx_header.tx_id, 0);
1831 match tx_header.ordinal {
1832 _ if tx_header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1833 Ok(PowerTokenProviderEvent::_UnknownEvent { ordinal: tx_header.ordinal })
1834 }
1835 _ => Err(fidl::Error::UnknownOrdinal {
1836 ordinal: tx_header.ordinal,
1837 protocol_name:
1838 <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1839 }),
1840 }
1841 }
1842}
1843
1844pub struct PowerTokenProviderRequestStream {
1846 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1847 is_terminated: bool,
1848}
1849
1850impl std::marker::Unpin for PowerTokenProviderRequestStream {}
1851
1852impl futures::stream::FusedStream for PowerTokenProviderRequestStream {
1853 fn is_terminated(&self) -> bool {
1854 self.is_terminated
1855 }
1856}
1857
1858impl fidl::endpoints::RequestStream for PowerTokenProviderRequestStream {
1859 type Protocol = PowerTokenProviderMarker;
1860 type ControlHandle = PowerTokenProviderControlHandle;
1861
1862 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1863 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1864 }
1865
1866 fn control_handle(&self) -> Self::ControlHandle {
1867 PowerTokenProviderControlHandle { inner: self.inner.clone() }
1868 }
1869
1870 fn into_inner(
1871 self,
1872 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1873 {
1874 (self.inner, self.is_terminated)
1875 }
1876
1877 fn from_inner(
1878 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1879 is_terminated: bool,
1880 ) -> Self {
1881 Self { inner, is_terminated }
1882 }
1883}
1884
1885impl futures::Stream for PowerTokenProviderRequestStream {
1886 type Item = Result<PowerTokenProviderRequest, fidl::Error>;
1887
1888 fn poll_next(
1889 mut self: std::pin::Pin<&mut Self>,
1890 cx: &mut std::task::Context<'_>,
1891 ) -> std::task::Poll<Option<Self::Item>> {
1892 let this = &mut *self;
1893 if this.inner.check_shutdown(cx) {
1894 this.is_terminated = true;
1895 return std::task::Poll::Ready(None);
1896 }
1897 if this.is_terminated {
1898 panic!("polled PowerTokenProviderRequestStream after completion");
1899 }
1900 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1901 |bytes, handles| {
1902 match this.inner.channel().read_etc(cx, bytes, handles) {
1903 std::task::Poll::Ready(Ok(())) => {}
1904 std::task::Poll::Pending => return std::task::Poll::Pending,
1905 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1906 this.is_terminated = true;
1907 return std::task::Poll::Ready(None);
1908 }
1909 std::task::Poll::Ready(Err(e)) => {
1910 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1911 e.into(),
1912 ))));
1913 }
1914 }
1915
1916 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1918
1919 std::task::Poll::Ready(Some(match header.ordinal {
1920 0x289cd59b7d9f90ca => {
1921 header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1922 let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1923 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1924 let control_handle = PowerTokenProviderControlHandle {
1925 inner: this.inner.clone(),
1926 };
1927 Ok(PowerTokenProviderRequest::GetToken {
1928 responder: PowerTokenProviderGetTokenResponder {
1929 control_handle: std::mem::ManuallyDrop::new(control_handle),
1930 tx_id: header.tx_id,
1931 },
1932 })
1933 }
1934 _ if header.tx_id == 0 && header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1935 Ok(PowerTokenProviderRequest::_UnknownMethod {
1936 ordinal: header.ordinal,
1937 control_handle: PowerTokenProviderControlHandle { inner: this.inner.clone() },
1938 method_type: fidl::MethodType::OneWay,
1939 })
1940 }
1941 _ if header.dynamic_flags().contains(fidl::encoding::DynamicFlags::FLEXIBLE) => {
1942 this.inner.send_framework_err(
1943 fidl::encoding::FrameworkErr::UnknownMethod,
1944 header.tx_id,
1945 header.ordinal,
1946 header.dynamic_flags(),
1947 (bytes, handles),
1948 )?;
1949 Ok(PowerTokenProviderRequest::_UnknownMethod {
1950 ordinal: header.ordinal,
1951 control_handle: PowerTokenProviderControlHandle { inner: this.inner.clone() },
1952 method_type: fidl::MethodType::TwoWay,
1953 })
1954 }
1955 _ => Err(fidl::Error::UnknownOrdinal {
1956 ordinal: header.ordinal,
1957 protocol_name: <PowerTokenProviderMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1958 }),
1959 }))
1960 },
1961 )
1962 }
1963}
1964
1965#[derive(Debug)]
1966pub enum PowerTokenProviderRequest {
1967 GetToken { responder: PowerTokenProviderGetTokenResponder },
1971 #[non_exhaustive]
1973 _UnknownMethod {
1974 ordinal: u64,
1976 control_handle: PowerTokenProviderControlHandle,
1977 method_type: fidl::MethodType,
1978 },
1979}
1980
1981impl PowerTokenProviderRequest {
1982 #[allow(irrefutable_let_patterns)]
1983 pub fn into_get_token(self) -> Option<(PowerTokenProviderGetTokenResponder)> {
1984 if let PowerTokenProviderRequest::GetToken { responder } = self {
1985 Some((responder))
1986 } else {
1987 None
1988 }
1989 }
1990
1991 pub fn method_name(&self) -> &'static str {
1993 match *self {
1994 PowerTokenProviderRequest::GetToken { .. } => "get_token",
1995 PowerTokenProviderRequest::_UnknownMethod {
1996 method_type: fidl::MethodType::OneWay,
1997 ..
1998 } => "unknown one-way method",
1999 PowerTokenProviderRequest::_UnknownMethod {
2000 method_type: fidl::MethodType::TwoWay,
2001 ..
2002 } => "unknown two-way method",
2003 }
2004 }
2005}
2006
2007#[derive(Debug, Clone)]
2008pub struct PowerTokenProviderControlHandle {
2009 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2010}
2011
2012impl fidl::endpoints::ControlHandle for PowerTokenProviderControlHandle {
2013 fn shutdown(&self) {
2014 self.inner.shutdown()
2015 }
2016
2017 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2018 self.inner.shutdown_with_epitaph(status)
2019 }
2020
2021 fn is_closed(&self) -> bool {
2022 self.inner.channel().is_closed()
2023 }
2024 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2025 self.inner.channel().on_closed()
2026 }
2027
2028 #[cfg(target_os = "fuchsia")]
2029 fn signal_peer(
2030 &self,
2031 clear_mask: zx::Signals,
2032 set_mask: zx::Signals,
2033 ) -> Result<(), zx_status::Status> {
2034 use fidl::Peered;
2035 self.inner.channel().signal_peer(clear_mask, set_mask)
2036 }
2037}
2038
2039impl PowerTokenProviderControlHandle {}
2040
2041#[must_use = "FIDL methods require a response to be sent"]
2042#[derive(Debug)]
2043pub struct PowerTokenProviderGetTokenResponder {
2044 control_handle: std::mem::ManuallyDrop<PowerTokenProviderControlHandle>,
2045 tx_id: u32,
2046}
2047
2048impl std::ops::Drop for PowerTokenProviderGetTokenResponder {
2052 fn drop(&mut self) {
2053 self.control_handle.shutdown();
2054 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2056 }
2057}
2058
2059impl fidl::endpoints::Responder for PowerTokenProviderGetTokenResponder {
2060 type ControlHandle = PowerTokenProviderControlHandle;
2061
2062 fn control_handle(&self) -> &PowerTokenProviderControlHandle {
2063 &self.control_handle
2064 }
2065
2066 fn drop_without_shutdown(mut self) {
2067 unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2069 std::mem::forget(self);
2071 }
2072}
2073
2074impl PowerTokenProviderGetTokenResponder {
2075 pub fn send(self, mut result: Result<fidl::Event, i32>) -> Result<(), fidl::Error> {
2079 let _result = self.send_raw(result);
2080 if _result.is_err() {
2081 self.control_handle.shutdown();
2082 }
2083 self.drop_without_shutdown();
2084 _result
2085 }
2086
2087 pub fn send_no_shutdown_on_err(
2089 self,
2090 mut result: Result<fidl::Event, i32>,
2091 ) -> Result<(), fidl::Error> {
2092 let _result = self.send_raw(result);
2093 self.drop_without_shutdown();
2094 _result
2095 }
2096
2097 fn send_raw(&self, mut result: Result<fidl::Event, i32>) -> Result<(), fidl::Error> {
2098 self.control_handle.inner.send::<fidl::encoding::FlexibleResultType<
2099 PowerTokenProviderGetTokenResponse,
2100 i32,
2101 >>(
2102 fidl::encoding::FlexibleResult::new(result.map(|handle| (handle,))),
2103 self.tx_id,
2104 0x289cd59b7d9f90ca,
2105 fidl::encoding::DynamicFlags::FLEXIBLE,
2106 )
2107 }
2108}
2109
2110#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2111pub struct PowerTokenServiceMarker;
2112
2113#[cfg(target_os = "fuchsia")]
2114impl fidl::endpoints::ServiceMarker for PowerTokenServiceMarker {
2115 type Proxy = PowerTokenServiceProxy;
2116 type Request = PowerTokenServiceRequest;
2117 const SERVICE_NAME: &'static str = "fuchsia.hardware.power.PowerTokenService";
2118}
2119
2120#[cfg(target_os = "fuchsia")]
2123pub enum PowerTokenServiceRequest {
2124 TokenProvider(PowerTokenProviderRequestStream),
2125}
2126
2127#[cfg(target_os = "fuchsia")]
2128impl fidl::endpoints::ServiceRequest for PowerTokenServiceRequest {
2129 type Service = PowerTokenServiceMarker;
2130
2131 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
2132 match name {
2133 "token_provider" => Self::TokenProvider(
2134 <PowerTokenProviderRequestStream as fidl::endpoints::RequestStream>::from_channel(
2135 _channel,
2136 ),
2137 ),
2138 _ => panic!("no such member protocol name for service PowerTokenService"),
2139 }
2140 }
2141
2142 fn member_names() -> &'static [&'static str] {
2143 &["token_provider"]
2144 }
2145}
2146#[cfg(target_os = "fuchsia")]
2147pub struct PowerTokenServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
2148
2149#[cfg(target_os = "fuchsia")]
2150impl fidl::endpoints::ServiceProxy for PowerTokenServiceProxy {
2151 type Service = PowerTokenServiceMarker;
2152
2153 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
2154 Self(opener)
2155 }
2156}
2157
2158#[cfg(target_os = "fuchsia")]
2159impl PowerTokenServiceProxy {
2160 pub fn connect_to_token_provider(&self) -> Result<PowerTokenProviderProxy, fidl::Error> {
2161 let (proxy, server_end) = fidl::endpoints::create_proxy::<PowerTokenProviderMarker>();
2162 self.connect_channel_to_token_provider(server_end)?;
2163 Ok(proxy)
2164 }
2165
2166 pub fn connect_to_token_provider_sync(
2169 &self,
2170 ) -> Result<PowerTokenProviderSynchronousProxy, fidl::Error> {
2171 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<PowerTokenProviderMarker>();
2172 self.connect_channel_to_token_provider(server_end)?;
2173 Ok(proxy)
2174 }
2175
2176 pub fn connect_channel_to_token_provider(
2179 &self,
2180 server_end: fidl::endpoints::ServerEnd<PowerTokenProviderMarker>,
2181 ) -> Result<(), fidl::Error> {
2182 self.0.open_member("token_provider", server_end.into_channel())
2183 }
2184
2185 pub fn instance_name(&self) -> &str {
2186 self.0.instance_name()
2187 }
2188}
2189
2190#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
2191pub struct ServiceMarker;
2192
2193#[cfg(target_os = "fuchsia")]
2194impl fidl::endpoints::ServiceMarker for ServiceMarker {
2195 type Proxy = ServiceProxy;
2196 type Request = ServiceRequest;
2197 const SERVICE_NAME: &'static str = "fuchsia.hardware.power.Service";
2198}
2199
2200#[cfg(target_os = "fuchsia")]
2203pub enum ServiceRequest {
2204 Device(DeviceRequestStream),
2205}
2206
2207#[cfg(target_os = "fuchsia")]
2208impl fidl::endpoints::ServiceRequest for ServiceRequest {
2209 type Service = ServiceMarker;
2210
2211 fn dispatch(name: &str, _channel: fidl::AsyncChannel) -> Self {
2212 match name {
2213 "device" => Self::Device(
2214 <DeviceRequestStream as fidl::endpoints::RequestStream>::from_channel(_channel),
2215 ),
2216 _ => panic!("no such member protocol name for service Service"),
2217 }
2218 }
2219
2220 fn member_names() -> &'static [&'static str] {
2221 &["device"]
2222 }
2223}
2224#[cfg(target_os = "fuchsia")]
2225pub struct ServiceProxy(#[allow(dead_code)] Box<dyn fidl::endpoints::MemberOpener>);
2226
2227#[cfg(target_os = "fuchsia")]
2228impl fidl::endpoints::ServiceProxy for ServiceProxy {
2229 type Service = ServiceMarker;
2230
2231 fn from_member_opener(opener: Box<dyn fidl::endpoints::MemberOpener>) -> Self {
2232 Self(opener)
2233 }
2234}
2235
2236#[cfg(target_os = "fuchsia")]
2237impl ServiceProxy {
2238 pub fn connect_to_device(&self) -> Result<DeviceProxy, fidl::Error> {
2239 let (proxy, server_end) = fidl::endpoints::create_proxy::<DeviceMarker>();
2240 self.connect_channel_to_device(server_end)?;
2241 Ok(proxy)
2242 }
2243
2244 pub fn connect_to_device_sync(&self) -> Result<DeviceSynchronousProxy, fidl::Error> {
2247 let (proxy, server_end) = fidl::endpoints::create_sync_proxy::<DeviceMarker>();
2248 self.connect_channel_to_device(server_end)?;
2249 Ok(proxy)
2250 }
2251
2252 pub fn connect_channel_to_device(
2255 &self,
2256 server_end: fidl::endpoints::ServerEnd<DeviceMarker>,
2257 ) -> Result<(), fidl::Error> {
2258 self.0.open_member("device", server_end.into_channel())
2259 }
2260
2261 pub fn instance_name(&self) -> &str {
2262 self.0.instance_name()
2263 }
2264}
2265
2266mod internal {
2267 use super::*;
2268
2269 impl fidl::encoding::ResourceTypeMarker for PowerTokenProviderGetTokenResponse {
2270 type Borrowed<'a> = &'a mut Self;
2271 fn take_or_borrow<'a>(
2272 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
2273 ) -> Self::Borrowed<'a> {
2274 value
2275 }
2276 }
2277
2278 unsafe impl fidl::encoding::TypeMarker for PowerTokenProviderGetTokenResponse {
2279 type Owned = Self;
2280
2281 #[inline(always)]
2282 fn inline_align(_context: fidl::encoding::Context) -> usize {
2283 4
2284 }
2285
2286 #[inline(always)]
2287 fn inline_size(_context: fidl::encoding::Context) -> usize {
2288 4
2289 }
2290 }
2291
2292 unsafe impl
2293 fidl::encoding::Encode<
2294 PowerTokenProviderGetTokenResponse,
2295 fidl::encoding::DefaultFuchsiaResourceDialect,
2296 > for &mut PowerTokenProviderGetTokenResponse
2297 {
2298 #[inline]
2299 unsafe fn encode(
2300 self,
2301 encoder: &mut fidl::encoding::Encoder<
2302 '_,
2303 fidl::encoding::DefaultFuchsiaResourceDialect,
2304 >,
2305 offset: usize,
2306 _depth: fidl::encoding::Depth,
2307 ) -> fidl::Result<()> {
2308 encoder.debug_check_bounds::<PowerTokenProviderGetTokenResponse>(offset);
2309 fidl::encoding::Encode::<
2311 PowerTokenProviderGetTokenResponse,
2312 fidl::encoding::DefaultFuchsiaResourceDialect,
2313 >::encode(
2314 (<fidl::encoding::HandleType<
2315 fidl::Event,
2316 { fidl::ObjectType::EVENT.into_raw() },
2317 2147483648,
2318 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
2319 &mut self.handle
2320 ),),
2321 encoder,
2322 offset,
2323 _depth,
2324 )
2325 }
2326 }
2327 unsafe impl<
2328 T0: fidl::encoding::Encode<
2329 fidl::encoding::HandleType<
2330 fidl::Event,
2331 { fidl::ObjectType::EVENT.into_raw() },
2332 2147483648,
2333 >,
2334 fidl::encoding::DefaultFuchsiaResourceDialect,
2335 >,
2336 >
2337 fidl::encoding::Encode<
2338 PowerTokenProviderGetTokenResponse,
2339 fidl::encoding::DefaultFuchsiaResourceDialect,
2340 > for (T0,)
2341 {
2342 #[inline]
2343 unsafe fn encode(
2344 self,
2345 encoder: &mut fidl::encoding::Encoder<
2346 '_,
2347 fidl::encoding::DefaultFuchsiaResourceDialect,
2348 >,
2349 offset: usize,
2350 depth: fidl::encoding::Depth,
2351 ) -> fidl::Result<()> {
2352 encoder.debug_check_bounds::<PowerTokenProviderGetTokenResponse>(offset);
2353 self.0.encode(encoder, offset + 0, depth)?;
2357 Ok(())
2358 }
2359 }
2360
2361 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
2362 for PowerTokenProviderGetTokenResponse
2363 {
2364 #[inline(always)]
2365 fn new_empty() -> Self {
2366 Self {
2367 handle: fidl::new_empty!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect),
2368 }
2369 }
2370
2371 #[inline]
2372 unsafe fn decode(
2373 &mut self,
2374 decoder: &mut fidl::encoding::Decoder<
2375 '_,
2376 fidl::encoding::DefaultFuchsiaResourceDialect,
2377 >,
2378 offset: usize,
2379 _depth: fidl::encoding::Depth,
2380 ) -> fidl::Result<()> {
2381 decoder.debug_check_bounds::<Self>(offset);
2382 fidl::decode!(fidl::encoding::HandleType<fidl::Event, { fidl::ObjectType::EVENT.into_raw() }, 2147483648>, fidl::encoding::DefaultFuchsiaResourceDialect, &mut self.handle, decoder, offset + 0, _depth)?;
2384 Ok(())
2385 }
2386 }
2387}