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