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