fidl_fuchsia_power_battery_test/
fidl_fuchsia_power_battery_test.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![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_power_battery_test__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
15pub struct BatterySimulatorMarker;
16
17impl fidl::endpoints::ProtocolMarker for BatterySimulatorMarker {
18    type Proxy = BatterySimulatorProxy;
19    type RequestStream = BatterySimulatorRequestStream;
20    #[cfg(target_os = "fuchsia")]
21    type SynchronousProxy = BatterySimulatorSynchronousProxy;
22
23    const DEBUG_NAME: &'static str = "fuchsia.power.battery.test.BatterySimulator";
24}
25impl fidl::endpoints::DiscoverableProtocolMarker for BatterySimulatorMarker {}
26
27pub trait BatterySimulatorProxyInterface: Send + Sync {
28    type GetBatteryInfoResponseFut: std::future::Future<Output = Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error>>
29        + Send;
30    fn r#get_battery_info(&self) -> Self::GetBatteryInfoResponseFut;
31    fn r#set_battery_status(
32        &self,
33        battery_status: fidl_fuchsia_power_battery::BatteryStatus,
34    ) -> Result<(), fidl::Error>;
35    fn r#set_charge_status(
36        &self,
37        charge_status: fidl_fuchsia_power_battery::ChargeStatus,
38    ) -> Result<(), fidl::Error>;
39    fn r#set_charge_source(
40        &self,
41        charge_source: fidl_fuchsia_power_battery::ChargeSource,
42    ) -> Result<(), fidl::Error>;
43    fn r#set_battery_percentage(&self, percent: f32) -> Result<(), fidl::Error>;
44    fn r#set_level_status(
45        &self,
46        level_status: fidl_fuchsia_power_battery::LevelStatus,
47    ) -> Result<(), fidl::Error>;
48    fn r#set_time_remaining(&self, duration: i64) -> Result<(), fidl::Error>;
49    fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error>;
50    type IsSimulatingResponseFut: std::future::Future<Output = Result<bool, fidl::Error>> + Send;
51    fn r#is_simulating(&self) -> Self::IsSimulatingResponseFut;
52    fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error>;
53    fn r#set_present_voltage_mv(&self, voltage: u32) -> Result<(), fidl::Error>;
54    fn r#set_remaining_capacity_uah(&self, capacity: u32) -> Result<(), fidl::Error>;
55    fn r#set_battery_spec(
56        &self,
57        spec: &fidl_fuchsia_power_battery::BatterySpec,
58    ) -> Result<(), fidl::Error>;
59}
60#[derive(Debug)]
61#[cfg(target_os = "fuchsia")]
62pub struct BatterySimulatorSynchronousProxy {
63    client: fidl::client::sync::Client,
64}
65
66#[cfg(target_os = "fuchsia")]
67impl fidl::endpoints::SynchronousProxy for BatterySimulatorSynchronousProxy {
68    type Proxy = BatterySimulatorProxy;
69    type Protocol = BatterySimulatorMarker;
70
71    fn from_channel(inner: fidl::Channel) -> Self {
72        Self::new(inner)
73    }
74
75    fn into_channel(self) -> fidl::Channel {
76        self.client.into_channel()
77    }
78
79    fn as_channel(&self) -> &fidl::Channel {
80        self.client.as_channel()
81    }
82}
83
84#[cfg(target_os = "fuchsia")]
85impl BatterySimulatorSynchronousProxy {
86    pub fn new(channel: fidl::Channel) -> Self {
87        let protocol_name = <BatterySimulatorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
88        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
89    }
90
91    pub fn into_channel(self) -> fidl::Channel {
92        self.client.into_channel()
93    }
94
95    /// Waits until an event arrives and returns it. It is safe for other
96    /// threads to make concurrent requests while waiting for an event.
97    pub fn wait_for_event(
98        &self,
99        deadline: zx::MonotonicInstant,
100    ) -> Result<BatterySimulatorEvent, fidl::Error> {
101        BatterySimulatorEvent::decode(self.client.wait_for_event(deadline)?)
102    }
103
104    /// Gets battery info. This should be called after
105    /// DisconnectRealBattery
106    pub fn r#get_battery_info(
107        &self,
108        ___deadline: zx::MonotonicInstant,
109    ) -> Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error> {
110        let _response = self.client.send_query::<
111            fidl::encoding::EmptyPayload,
112            BatterySimulatorControllerGetBatteryInfoResponse,
113        >(
114            (),
115            0x4a20d3731366aaf8,
116            fidl::encoding::DynamicFlags::empty(),
117            ___deadline,
118        )?;
119        Ok(_response.info)
120    }
121
122    /// Sets Battery Status. This should be called after
123    /// DisconnectRealBattery
124    pub fn r#set_battery_status(
125        &self,
126        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
127    ) -> Result<(), fidl::Error> {
128        self.client.send::<BatterySimulatorControllerSetBatteryStatusRequest>(
129            (battery_status,),
130            0x2343eb65038c8b34,
131            fidl::encoding::DynamicFlags::empty(),
132        )
133    }
134
135    /// Sets Charge Status. This should be called after
136    /// DisconnectRealBattery
137    pub fn r#set_charge_status(
138        &self,
139        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
140    ) -> Result<(), fidl::Error> {
141        self.client.send::<BatterySimulatorControllerSetChargeStatusRequest>(
142            (charge_status,),
143            0x79b2bf1a387acd85,
144            fidl::encoding::DynamicFlags::empty(),
145        )
146    }
147
148    /// Sets Charge Source. This should be called after
149    /// DisconnectRealBattery
150    pub fn r#set_charge_source(
151        &self,
152        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
153    ) -> Result<(), fidl::Error> {
154        self.client.send::<BatterySimulatorControllerSetChargeSourceRequest>(
155            (charge_source,),
156            0xb40433f42c33527,
157            fidl::encoding::DynamicFlags::empty(),
158        )
159    }
160
161    /// Sets Battery Percentage. This should be called after
162    /// DisconnectRealBattery
163    pub fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
164        self.client.send::<BatterySimulatorControllerSetBatteryPercentageRequest>(
165            (percent,),
166            0x64a9d96eb7a45a9f,
167            fidl::encoding::DynamicFlags::empty(),
168        )
169    }
170
171    /// Sets Level Status. This should be called after
172    /// DisconnectRealBattery
173    pub fn r#set_level_status(
174        &self,
175        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
176    ) -> Result<(), fidl::Error> {
177        self.client.send::<BatterySimulatorControllerSetLevelStatusRequest>(
178            (level_status,),
179            0x577fc3314f7a48a4,
180            fidl::encoding::DynamicFlags::empty(),
181        )
182    }
183
184    /// Sets Time Remaining to full charge / depletion
185    /// This should be called after DisconnectRealBattery
186    pub fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
187        self.client.send::<BatterySimulatorControllerSetTimeRemainingRequest>(
188            (duration,),
189            0x7427251c9d2a794e,
190            fidl::encoding::DynamicFlags::empty(),
191        )
192    }
193
194    /// Disconnect the real battery connection
195    pub fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
196        self.client.send::<fidl::encoding::EmptyPayload>(
197            (),
198            0x75588eae6b9b67e3,
199            fidl::encoding::DynamicFlags::empty(),
200        )
201    }
202
203    /// Gets Simulation State
204    pub fn r#is_simulating(&self, ___deadline: zx::MonotonicInstant) -> Result<bool, fidl::Error> {
205        let _response = self.client.send_query::<
206            fidl::encoding::EmptyPayload,
207            BatterySimulatorControllerIsSimulatingResponse,
208        >(
209            (),
210            0x4bf85cfe3476975d,
211            fidl::encoding::DynamicFlags::empty(),
212            ___deadline,
213        )?;
214        Ok(_response.simulation_state)
215    }
216
217    /// Reconnect to the real battery
218    /// This should be called after DisconnectRealBattery
219    pub fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
220        self.client.send::<fidl::encoding::EmptyPayload>(
221            (),
222            0x18306690352d9dfa,
223            fidl::encoding::DynamicFlags::empty(),
224        )
225    }
226
227    /// Sets Present Voltage in mV. This should be called after
228    /// DisconnectRealBattery
229    pub fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
230        self.client.send::<BatterySimulatorControllerSetPresentVoltageMvRequest>(
231            (voltage,),
232            0x5462c9e9f947b8ce,
233            fidl::encoding::DynamicFlags::empty(),
234        )
235    }
236
237    /// Sets Remaining Capacity Uah. This should be called after
238    /// DisconnectRealBattery
239    pub fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
240        self.client.send::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(
241            (capacity,),
242            0x38054049fe8c26ab,
243            fidl::encoding::DynamicFlags::empty(),
244        )
245    }
246
247    /// Sets the BatterySpec
248    pub fn r#set_battery_spec(
249        &self,
250        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
251    ) -> Result<(), fidl::Error> {
252        self.client.send::<BatterySimulatorControllerSetBatterySpecRequest>(
253            (spec,),
254            0x7324672546976583,
255            fidl::encoding::DynamicFlags::empty(),
256        )
257    }
258}
259
260#[cfg(target_os = "fuchsia")]
261impl From<BatterySimulatorSynchronousProxy> for zx::Handle {
262    fn from(value: BatterySimulatorSynchronousProxy) -> Self {
263        value.into_channel().into()
264    }
265}
266
267#[cfg(target_os = "fuchsia")]
268impl From<fidl::Channel> for BatterySimulatorSynchronousProxy {
269    fn from(value: fidl::Channel) -> Self {
270        Self::new(value)
271    }
272}
273
274#[cfg(target_os = "fuchsia")]
275impl fidl::endpoints::FromClient for BatterySimulatorSynchronousProxy {
276    type Protocol = BatterySimulatorMarker;
277
278    fn from_client(value: fidl::endpoints::ClientEnd<BatterySimulatorMarker>) -> Self {
279        Self::new(value.into_channel())
280    }
281}
282
283#[derive(Debug, Clone)]
284pub struct BatterySimulatorProxy {
285    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
286}
287
288impl fidl::endpoints::Proxy for BatterySimulatorProxy {
289    type Protocol = BatterySimulatorMarker;
290
291    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
292        Self::new(inner)
293    }
294
295    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
296        self.client.into_channel().map_err(|client| Self { client })
297    }
298
299    fn as_channel(&self) -> &::fidl::AsyncChannel {
300        self.client.as_channel()
301    }
302}
303
304impl BatterySimulatorProxy {
305    /// Create a new Proxy for fuchsia.power.battery.test/BatterySimulator.
306    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
307        let protocol_name = <BatterySimulatorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
308        Self { client: fidl::client::Client::new(channel, protocol_name) }
309    }
310
311    /// Get a Stream of events from the remote end of the protocol.
312    ///
313    /// # Panics
314    ///
315    /// Panics if the event stream was already taken.
316    pub fn take_event_stream(&self) -> BatterySimulatorEventStream {
317        BatterySimulatorEventStream { event_receiver: self.client.take_event_receiver() }
318    }
319
320    /// Gets battery info. This should be called after
321    /// DisconnectRealBattery
322    pub fn r#get_battery_info(
323        &self,
324    ) -> fidl::client::QueryResponseFut<
325        fidl_fuchsia_power_battery::BatteryInfo,
326        fidl::encoding::DefaultFuchsiaResourceDialect,
327    > {
328        BatterySimulatorProxyInterface::r#get_battery_info(self)
329    }
330
331    /// Sets Battery Status. This should be called after
332    /// DisconnectRealBattery
333    pub fn r#set_battery_status(
334        &self,
335        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
336    ) -> Result<(), fidl::Error> {
337        BatterySimulatorProxyInterface::r#set_battery_status(self, battery_status)
338    }
339
340    /// Sets Charge Status. This should be called after
341    /// DisconnectRealBattery
342    pub fn r#set_charge_status(
343        &self,
344        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
345    ) -> Result<(), fidl::Error> {
346        BatterySimulatorProxyInterface::r#set_charge_status(self, charge_status)
347    }
348
349    /// Sets Charge Source. This should be called after
350    /// DisconnectRealBattery
351    pub fn r#set_charge_source(
352        &self,
353        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
354    ) -> Result<(), fidl::Error> {
355        BatterySimulatorProxyInterface::r#set_charge_source(self, charge_source)
356    }
357
358    /// Sets Battery Percentage. This should be called after
359    /// DisconnectRealBattery
360    pub fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
361        BatterySimulatorProxyInterface::r#set_battery_percentage(self, percent)
362    }
363
364    /// Sets Level Status. This should be called after
365    /// DisconnectRealBattery
366    pub fn r#set_level_status(
367        &self,
368        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
369    ) -> Result<(), fidl::Error> {
370        BatterySimulatorProxyInterface::r#set_level_status(self, level_status)
371    }
372
373    /// Sets Time Remaining to full charge / depletion
374    /// This should be called after DisconnectRealBattery
375    pub fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
376        BatterySimulatorProxyInterface::r#set_time_remaining(self, duration)
377    }
378
379    /// Disconnect the real battery connection
380    pub fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
381        BatterySimulatorProxyInterface::r#disconnect_real_battery(self)
382    }
383
384    /// Gets Simulation State
385    pub fn r#is_simulating(
386        &self,
387    ) -> fidl::client::QueryResponseFut<bool, fidl::encoding::DefaultFuchsiaResourceDialect> {
388        BatterySimulatorProxyInterface::r#is_simulating(self)
389    }
390
391    /// Reconnect to the real battery
392    /// This should be called after DisconnectRealBattery
393    pub fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
394        BatterySimulatorProxyInterface::r#reconnect_real_battery(self)
395    }
396
397    /// Sets Present Voltage in mV. This should be called after
398    /// DisconnectRealBattery
399    pub fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
400        BatterySimulatorProxyInterface::r#set_present_voltage_mv(self, voltage)
401    }
402
403    /// Sets Remaining Capacity Uah. This should be called after
404    /// DisconnectRealBattery
405    pub fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
406        BatterySimulatorProxyInterface::r#set_remaining_capacity_uah(self, capacity)
407    }
408
409    /// Sets the BatterySpec
410    pub fn r#set_battery_spec(
411        &self,
412        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
413    ) -> Result<(), fidl::Error> {
414        BatterySimulatorProxyInterface::r#set_battery_spec(self, spec)
415    }
416}
417
418impl BatterySimulatorProxyInterface for BatterySimulatorProxy {
419    type GetBatteryInfoResponseFut = fidl::client::QueryResponseFut<
420        fidl_fuchsia_power_battery::BatteryInfo,
421        fidl::encoding::DefaultFuchsiaResourceDialect,
422    >;
423    fn r#get_battery_info(&self) -> Self::GetBatteryInfoResponseFut {
424        fn _decode(
425            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
426        ) -> Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error> {
427            let _response = fidl::client::decode_transaction_body::<
428                BatterySimulatorControllerGetBatteryInfoResponse,
429                fidl::encoding::DefaultFuchsiaResourceDialect,
430                0x4a20d3731366aaf8,
431            >(_buf?)?;
432            Ok(_response.info)
433        }
434        self.client.send_query_and_decode::<
435            fidl::encoding::EmptyPayload,
436            fidl_fuchsia_power_battery::BatteryInfo,
437        >(
438            (),
439            0x4a20d3731366aaf8,
440            fidl::encoding::DynamicFlags::empty(),
441            _decode,
442        )
443    }
444
445    fn r#set_battery_status(
446        &self,
447        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
448    ) -> Result<(), fidl::Error> {
449        self.client.send::<BatterySimulatorControllerSetBatteryStatusRequest>(
450            (battery_status,),
451            0x2343eb65038c8b34,
452            fidl::encoding::DynamicFlags::empty(),
453        )
454    }
455
456    fn r#set_charge_status(
457        &self,
458        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
459    ) -> Result<(), fidl::Error> {
460        self.client.send::<BatterySimulatorControllerSetChargeStatusRequest>(
461            (charge_status,),
462            0x79b2bf1a387acd85,
463            fidl::encoding::DynamicFlags::empty(),
464        )
465    }
466
467    fn r#set_charge_source(
468        &self,
469        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
470    ) -> Result<(), fidl::Error> {
471        self.client.send::<BatterySimulatorControllerSetChargeSourceRequest>(
472            (charge_source,),
473            0xb40433f42c33527,
474            fidl::encoding::DynamicFlags::empty(),
475        )
476    }
477
478    fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
479        self.client.send::<BatterySimulatorControllerSetBatteryPercentageRequest>(
480            (percent,),
481            0x64a9d96eb7a45a9f,
482            fidl::encoding::DynamicFlags::empty(),
483        )
484    }
485
486    fn r#set_level_status(
487        &self,
488        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
489    ) -> Result<(), fidl::Error> {
490        self.client.send::<BatterySimulatorControllerSetLevelStatusRequest>(
491            (level_status,),
492            0x577fc3314f7a48a4,
493            fidl::encoding::DynamicFlags::empty(),
494        )
495    }
496
497    fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
498        self.client.send::<BatterySimulatorControllerSetTimeRemainingRequest>(
499            (duration,),
500            0x7427251c9d2a794e,
501            fidl::encoding::DynamicFlags::empty(),
502        )
503    }
504
505    fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
506        self.client.send::<fidl::encoding::EmptyPayload>(
507            (),
508            0x75588eae6b9b67e3,
509            fidl::encoding::DynamicFlags::empty(),
510        )
511    }
512
513    type IsSimulatingResponseFut =
514        fidl::client::QueryResponseFut<bool, fidl::encoding::DefaultFuchsiaResourceDialect>;
515    fn r#is_simulating(&self) -> Self::IsSimulatingResponseFut {
516        fn _decode(
517            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
518        ) -> Result<bool, fidl::Error> {
519            let _response = fidl::client::decode_transaction_body::<
520                BatterySimulatorControllerIsSimulatingResponse,
521                fidl::encoding::DefaultFuchsiaResourceDialect,
522                0x4bf85cfe3476975d,
523            >(_buf?)?;
524            Ok(_response.simulation_state)
525        }
526        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, bool>(
527            (),
528            0x4bf85cfe3476975d,
529            fidl::encoding::DynamicFlags::empty(),
530            _decode,
531        )
532    }
533
534    fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
535        self.client.send::<fidl::encoding::EmptyPayload>(
536            (),
537            0x18306690352d9dfa,
538            fidl::encoding::DynamicFlags::empty(),
539        )
540    }
541
542    fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
543        self.client.send::<BatterySimulatorControllerSetPresentVoltageMvRequest>(
544            (voltage,),
545            0x5462c9e9f947b8ce,
546            fidl::encoding::DynamicFlags::empty(),
547        )
548    }
549
550    fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
551        self.client.send::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(
552            (capacity,),
553            0x38054049fe8c26ab,
554            fidl::encoding::DynamicFlags::empty(),
555        )
556    }
557
558    fn r#set_battery_spec(
559        &self,
560        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
561    ) -> Result<(), fidl::Error> {
562        self.client.send::<BatterySimulatorControllerSetBatterySpecRequest>(
563            (spec,),
564            0x7324672546976583,
565            fidl::encoding::DynamicFlags::empty(),
566        )
567    }
568}
569
570pub struct BatterySimulatorEventStream {
571    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
572}
573
574impl std::marker::Unpin for BatterySimulatorEventStream {}
575
576impl futures::stream::FusedStream for BatterySimulatorEventStream {
577    fn is_terminated(&self) -> bool {
578        self.event_receiver.is_terminated()
579    }
580}
581
582impl futures::Stream for BatterySimulatorEventStream {
583    type Item = Result<BatterySimulatorEvent, fidl::Error>;
584
585    fn poll_next(
586        mut self: std::pin::Pin<&mut Self>,
587        cx: &mut std::task::Context<'_>,
588    ) -> std::task::Poll<Option<Self::Item>> {
589        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
590            &mut self.event_receiver,
591            cx
592        )?) {
593            Some(buf) => std::task::Poll::Ready(Some(BatterySimulatorEvent::decode(buf))),
594            None => std::task::Poll::Ready(None),
595        }
596    }
597}
598
599#[derive(Debug)]
600pub enum BatterySimulatorEvent {}
601
602impl BatterySimulatorEvent {
603    /// Decodes a message buffer as a [`BatterySimulatorEvent`].
604    fn decode(
605        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
606    ) -> Result<BatterySimulatorEvent, fidl::Error> {
607        let (bytes, _handles) = buf.split_mut();
608        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
609        debug_assert_eq!(tx_header.tx_id, 0);
610        match tx_header.ordinal {
611            _ => Err(fidl::Error::UnknownOrdinal {
612                ordinal: tx_header.ordinal,
613                protocol_name:
614                    <BatterySimulatorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
615            }),
616        }
617    }
618}
619
620/// A Stream of incoming requests for fuchsia.power.battery.test/BatterySimulator.
621pub struct BatterySimulatorRequestStream {
622    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
623    is_terminated: bool,
624}
625
626impl std::marker::Unpin for BatterySimulatorRequestStream {}
627
628impl futures::stream::FusedStream for BatterySimulatorRequestStream {
629    fn is_terminated(&self) -> bool {
630        self.is_terminated
631    }
632}
633
634impl fidl::endpoints::RequestStream for BatterySimulatorRequestStream {
635    type Protocol = BatterySimulatorMarker;
636    type ControlHandle = BatterySimulatorControlHandle;
637
638    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
639        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
640    }
641
642    fn control_handle(&self) -> Self::ControlHandle {
643        BatterySimulatorControlHandle { inner: self.inner.clone() }
644    }
645
646    fn into_inner(
647        self,
648    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
649    {
650        (self.inner, self.is_terminated)
651    }
652
653    fn from_inner(
654        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
655        is_terminated: bool,
656    ) -> Self {
657        Self { inner, is_terminated }
658    }
659}
660
661impl futures::Stream for BatterySimulatorRequestStream {
662    type Item = Result<BatterySimulatorRequest, fidl::Error>;
663
664    fn poll_next(
665        mut self: std::pin::Pin<&mut Self>,
666        cx: &mut std::task::Context<'_>,
667    ) -> std::task::Poll<Option<Self::Item>> {
668        let this = &mut *self;
669        if this.inner.check_shutdown(cx) {
670            this.is_terminated = true;
671            return std::task::Poll::Ready(None);
672        }
673        if this.is_terminated {
674            panic!("polled BatterySimulatorRequestStream after completion");
675        }
676        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
677            |bytes, handles| {
678                match this.inner.channel().read_etc(cx, bytes, handles) {
679                    std::task::Poll::Ready(Ok(())) => {}
680                    std::task::Poll::Pending => return std::task::Poll::Pending,
681                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
682                        this.is_terminated = true;
683                        return std::task::Poll::Ready(None);
684                    }
685                    std::task::Poll::Ready(Err(e)) => {
686                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
687                            e.into(),
688                        ))))
689                    }
690                }
691
692                // A message has been received from the channel
693                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
694
695                std::task::Poll::Ready(Some(match header.ordinal {
696                    0x4a20d3731366aaf8 => {
697                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
698                        let mut req = fidl::new_empty!(
699                            fidl::encoding::EmptyPayload,
700                            fidl::encoding::DefaultFuchsiaResourceDialect
701                        );
702                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
703                        let control_handle =
704                            BatterySimulatorControlHandle { inner: this.inner.clone() };
705                        Ok(BatterySimulatorRequest::GetBatteryInfo {
706                            responder: BatterySimulatorGetBatteryInfoResponder {
707                                control_handle: std::mem::ManuallyDrop::new(control_handle),
708                                tx_id: header.tx_id,
709                            },
710                        })
711                    }
712                    0x2343eb65038c8b34 => {
713                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
714                        let mut req = fidl::new_empty!(
715                            BatterySimulatorControllerSetBatteryStatusRequest,
716                            fidl::encoding::DefaultFuchsiaResourceDialect
717                        );
718                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatteryStatusRequest>(&header, _body_bytes, handles, &mut req)?;
719                        let control_handle =
720                            BatterySimulatorControlHandle { inner: this.inner.clone() };
721                        Ok(BatterySimulatorRequest::SetBatteryStatus {
722                            battery_status: req.battery_status,
723
724                            control_handle,
725                        })
726                    }
727                    0x79b2bf1a387acd85 => {
728                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
729                        let mut req = fidl::new_empty!(
730                            BatterySimulatorControllerSetChargeStatusRequest,
731                            fidl::encoding::DefaultFuchsiaResourceDialect
732                        );
733                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetChargeStatusRequest>(&header, _body_bytes, handles, &mut req)?;
734                        let control_handle =
735                            BatterySimulatorControlHandle { inner: this.inner.clone() };
736                        Ok(BatterySimulatorRequest::SetChargeStatus {
737                            charge_status: req.charge_status,
738
739                            control_handle,
740                        })
741                    }
742                    0xb40433f42c33527 => {
743                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
744                        let mut req = fidl::new_empty!(
745                            BatterySimulatorControllerSetChargeSourceRequest,
746                            fidl::encoding::DefaultFuchsiaResourceDialect
747                        );
748                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetChargeSourceRequest>(&header, _body_bytes, handles, &mut req)?;
749                        let control_handle =
750                            BatterySimulatorControlHandle { inner: this.inner.clone() };
751                        Ok(BatterySimulatorRequest::SetChargeSource {
752                            charge_source: req.charge_source,
753
754                            control_handle,
755                        })
756                    }
757                    0x64a9d96eb7a45a9f => {
758                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
759                        let mut req = fidl::new_empty!(
760                            BatterySimulatorControllerSetBatteryPercentageRequest,
761                            fidl::encoding::DefaultFuchsiaResourceDialect
762                        );
763                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatteryPercentageRequest>(&header, _body_bytes, handles, &mut req)?;
764                        let control_handle =
765                            BatterySimulatorControlHandle { inner: this.inner.clone() };
766                        Ok(BatterySimulatorRequest::SetBatteryPercentage {
767                            percent: req.percent,
768
769                            control_handle,
770                        })
771                    }
772                    0x577fc3314f7a48a4 => {
773                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
774                        let mut req = fidl::new_empty!(
775                            BatterySimulatorControllerSetLevelStatusRequest,
776                            fidl::encoding::DefaultFuchsiaResourceDialect
777                        );
778                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetLevelStatusRequest>(&header, _body_bytes, handles, &mut req)?;
779                        let control_handle =
780                            BatterySimulatorControlHandle { inner: this.inner.clone() };
781                        Ok(BatterySimulatorRequest::SetLevelStatus {
782                            level_status: req.level_status,
783
784                            control_handle,
785                        })
786                    }
787                    0x7427251c9d2a794e => {
788                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
789                        let mut req = fidl::new_empty!(
790                            BatterySimulatorControllerSetTimeRemainingRequest,
791                            fidl::encoding::DefaultFuchsiaResourceDialect
792                        );
793                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetTimeRemainingRequest>(&header, _body_bytes, handles, &mut req)?;
794                        let control_handle =
795                            BatterySimulatorControlHandle { inner: this.inner.clone() };
796                        Ok(BatterySimulatorRequest::SetTimeRemaining {
797                            duration: req.duration,
798
799                            control_handle,
800                        })
801                    }
802                    0x75588eae6b9b67e3 => {
803                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
804                        let mut req = fidl::new_empty!(
805                            fidl::encoding::EmptyPayload,
806                            fidl::encoding::DefaultFuchsiaResourceDialect
807                        );
808                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
809                        let control_handle =
810                            BatterySimulatorControlHandle { inner: this.inner.clone() };
811                        Ok(BatterySimulatorRequest::DisconnectRealBattery { control_handle })
812                    }
813                    0x4bf85cfe3476975d => {
814                        header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
815                        let mut req = fidl::new_empty!(
816                            fidl::encoding::EmptyPayload,
817                            fidl::encoding::DefaultFuchsiaResourceDialect
818                        );
819                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
820                        let control_handle =
821                            BatterySimulatorControlHandle { inner: this.inner.clone() };
822                        Ok(BatterySimulatorRequest::IsSimulating {
823                            responder: BatterySimulatorIsSimulatingResponder {
824                                control_handle: std::mem::ManuallyDrop::new(control_handle),
825                                tx_id: header.tx_id,
826                            },
827                        })
828                    }
829                    0x18306690352d9dfa => {
830                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
831                        let mut req = fidl::new_empty!(
832                            fidl::encoding::EmptyPayload,
833                            fidl::encoding::DefaultFuchsiaResourceDialect
834                        );
835                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
836                        let control_handle =
837                            BatterySimulatorControlHandle { inner: this.inner.clone() };
838                        Ok(BatterySimulatorRequest::ReconnectRealBattery { control_handle })
839                    }
840                    0x5462c9e9f947b8ce => {
841                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
842                        let mut req = fidl::new_empty!(
843                            BatterySimulatorControllerSetPresentVoltageMvRequest,
844                            fidl::encoding::DefaultFuchsiaResourceDialect
845                        );
846                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetPresentVoltageMvRequest>(&header, _body_bytes, handles, &mut req)?;
847                        let control_handle =
848                            BatterySimulatorControlHandle { inner: this.inner.clone() };
849                        Ok(BatterySimulatorRequest::SetPresentVoltageMv {
850                            voltage: req.voltage,
851
852                            control_handle,
853                        })
854                    }
855                    0x38054049fe8c26ab => {
856                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
857                        let mut req = fidl::new_empty!(
858                            BatterySimulatorControllerSetRemainingCapacityUahRequest,
859                            fidl::encoding::DefaultFuchsiaResourceDialect
860                        );
861                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(&header, _body_bytes, handles, &mut req)?;
862                        let control_handle =
863                            BatterySimulatorControlHandle { inner: this.inner.clone() };
864                        Ok(BatterySimulatorRequest::SetRemainingCapacityUah {
865                            capacity: req.capacity,
866
867                            control_handle,
868                        })
869                    }
870                    0x7324672546976583 => {
871                        header.validate_request_tx_id(fidl::MethodType::OneWay)?;
872                        let mut req = fidl::new_empty!(
873                            BatterySimulatorControllerSetBatterySpecRequest,
874                            fidl::encoding::DefaultFuchsiaResourceDialect
875                        );
876                        fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatterySpecRequest>(&header, _body_bytes, handles, &mut req)?;
877                        let control_handle =
878                            BatterySimulatorControlHandle { inner: this.inner.clone() };
879                        Ok(BatterySimulatorRequest::SetBatterySpec {
880                            spec: req.spec,
881
882                            control_handle,
883                        })
884                    }
885                    _ => Err(fidl::Error::UnknownOrdinal {
886                        ordinal: header.ordinal,
887                        protocol_name:
888                            <BatterySimulatorMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
889                    }),
890                }))
891            },
892        )
893    }
894}
895
896/// Simulator interface for battery simulation
897#[derive(Debug)]
898pub enum BatterySimulatorRequest {
899    /// Gets battery info. This should be called after
900    /// DisconnectRealBattery
901    GetBatteryInfo { responder: BatterySimulatorGetBatteryInfoResponder },
902    /// Sets Battery Status. This should be called after
903    /// DisconnectRealBattery
904    SetBatteryStatus {
905        battery_status: fidl_fuchsia_power_battery::BatteryStatus,
906        control_handle: BatterySimulatorControlHandle,
907    },
908    /// Sets Charge Status. This should be called after
909    /// DisconnectRealBattery
910    SetChargeStatus {
911        charge_status: fidl_fuchsia_power_battery::ChargeStatus,
912        control_handle: BatterySimulatorControlHandle,
913    },
914    /// Sets Charge Source. This should be called after
915    /// DisconnectRealBattery
916    SetChargeSource {
917        charge_source: fidl_fuchsia_power_battery::ChargeSource,
918        control_handle: BatterySimulatorControlHandle,
919    },
920    /// Sets Battery Percentage. This should be called after
921    /// DisconnectRealBattery
922    SetBatteryPercentage { percent: f32, control_handle: BatterySimulatorControlHandle },
923    /// Sets Level Status. This should be called after
924    /// DisconnectRealBattery
925    SetLevelStatus {
926        level_status: fidl_fuchsia_power_battery::LevelStatus,
927        control_handle: BatterySimulatorControlHandle,
928    },
929    /// Sets Time Remaining to full charge / depletion
930    /// This should be called after DisconnectRealBattery
931    SetTimeRemaining { duration: i64, control_handle: BatterySimulatorControlHandle },
932    /// Disconnect the real battery connection
933    DisconnectRealBattery { control_handle: BatterySimulatorControlHandle },
934    /// Gets Simulation State
935    IsSimulating { responder: BatterySimulatorIsSimulatingResponder },
936    /// Reconnect to the real battery
937    /// This should be called after DisconnectRealBattery
938    ReconnectRealBattery { control_handle: BatterySimulatorControlHandle },
939    /// Sets Present Voltage in mV. This should be called after
940    /// DisconnectRealBattery
941    SetPresentVoltageMv { voltage: u32, control_handle: BatterySimulatorControlHandle },
942    /// Sets Remaining Capacity Uah. This should be called after
943    /// DisconnectRealBattery
944    SetRemainingCapacityUah { capacity: u32, control_handle: BatterySimulatorControlHandle },
945    /// Sets the BatterySpec
946    SetBatterySpec {
947        spec: fidl_fuchsia_power_battery::BatterySpec,
948        control_handle: BatterySimulatorControlHandle,
949    },
950}
951
952impl BatterySimulatorRequest {
953    #[allow(irrefutable_let_patterns)]
954    pub fn into_get_battery_info(self) -> Option<(BatterySimulatorGetBatteryInfoResponder)> {
955        if let BatterySimulatorRequest::GetBatteryInfo { responder } = self {
956            Some((responder))
957        } else {
958            None
959        }
960    }
961
962    #[allow(irrefutable_let_patterns)]
963    pub fn into_set_battery_status(
964        self,
965    ) -> Option<(fidl_fuchsia_power_battery::BatteryStatus, BatterySimulatorControlHandle)> {
966        if let BatterySimulatorRequest::SetBatteryStatus { battery_status, control_handle } = self {
967            Some((battery_status, control_handle))
968        } else {
969            None
970        }
971    }
972
973    #[allow(irrefutable_let_patterns)]
974    pub fn into_set_charge_status(
975        self,
976    ) -> Option<(fidl_fuchsia_power_battery::ChargeStatus, BatterySimulatorControlHandle)> {
977        if let BatterySimulatorRequest::SetChargeStatus { charge_status, control_handle } = self {
978            Some((charge_status, control_handle))
979        } else {
980            None
981        }
982    }
983
984    #[allow(irrefutable_let_patterns)]
985    pub fn into_set_charge_source(
986        self,
987    ) -> Option<(fidl_fuchsia_power_battery::ChargeSource, BatterySimulatorControlHandle)> {
988        if let BatterySimulatorRequest::SetChargeSource { charge_source, control_handle } = self {
989            Some((charge_source, control_handle))
990        } else {
991            None
992        }
993    }
994
995    #[allow(irrefutable_let_patterns)]
996    pub fn into_set_battery_percentage(self) -> Option<(f32, BatterySimulatorControlHandle)> {
997        if let BatterySimulatorRequest::SetBatteryPercentage { percent, control_handle } = self {
998            Some((percent, control_handle))
999        } else {
1000            None
1001        }
1002    }
1003
1004    #[allow(irrefutable_let_patterns)]
1005    pub fn into_set_level_status(
1006        self,
1007    ) -> Option<(fidl_fuchsia_power_battery::LevelStatus, BatterySimulatorControlHandle)> {
1008        if let BatterySimulatorRequest::SetLevelStatus { level_status, control_handle } = self {
1009            Some((level_status, control_handle))
1010        } else {
1011            None
1012        }
1013    }
1014
1015    #[allow(irrefutable_let_patterns)]
1016    pub fn into_set_time_remaining(self) -> Option<(i64, BatterySimulatorControlHandle)> {
1017        if let BatterySimulatorRequest::SetTimeRemaining { duration, control_handle } = self {
1018            Some((duration, control_handle))
1019        } else {
1020            None
1021        }
1022    }
1023
1024    #[allow(irrefutable_let_patterns)]
1025    pub fn into_disconnect_real_battery(self) -> Option<(BatterySimulatorControlHandle)> {
1026        if let BatterySimulatorRequest::DisconnectRealBattery { control_handle } = self {
1027            Some((control_handle))
1028        } else {
1029            None
1030        }
1031    }
1032
1033    #[allow(irrefutable_let_patterns)]
1034    pub fn into_is_simulating(self) -> Option<(BatterySimulatorIsSimulatingResponder)> {
1035        if let BatterySimulatorRequest::IsSimulating { responder } = self {
1036            Some((responder))
1037        } else {
1038            None
1039        }
1040    }
1041
1042    #[allow(irrefutable_let_patterns)]
1043    pub fn into_reconnect_real_battery(self) -> Option<(BatterySimulatorControlHandle)> {
1044        if let BatterySimulatorRequest::ReconnectRealBattery { control_handle } = self {
1045            Some((control_handle))
1046        } else {
1047            None
1048        }
1049    }
1050
1051    #[allow(irrefutable_let_patterns)]
1052    pub fn into_set_present_voltage_mv(self) -> Option<(u32, BatterySimulatorControlHandle)> {
1053        if let BatterySimulatorRequest::SetPresentVoltageMv { voltage, control_handle } = self {
1054            Some((voltage, control_handle))
1055        } else {
1056            None
1057        }
1058    }
1059
1060    #[allow(irrefutable_let_patterns)]
1061    pub fn into_set_remaining_capacity_uah(self) -> Option<(u32, BatterySimulatorControlHandle)> {
1062        if let BatterySimulatorRequest::SetRemainingCapacityUah { capacity, control_handle } = self
1063        {
1064            Some((capacity, control_handle))
1065        } else {
1066            None
1067        }
1068    }
1069
1070    #[allow(irrefutable_let_patterns)]
1071    pub fn into_set_battery_spec(
1072        self,
1073    ) -> Option<(fidl_fuchsia_power_battery::BatterySpec, BatterySimulatorControlHandle)> {
1074        if let BatterySimulatorRequest::SetBatterySpec { spec, control_handle } = self {
1075            Some((spec, control_handle))
1076        } else {
1077            None
1078        }
1079    }
1080
1081    /// Name of the method defined in FIDL
1082    pub fn method_name(&self) -> &'static str {
1083        match *self {
1084            BatterySimulatorRequest::GetBatteryInfo { .. } => "get_battery_info",
1085            BatterySimulatorRequest::SetBatteryStatus { .. } => "set_battery_status",
1086            BatterySimulatorRequest::SetChargeStatus { .. } => "set_charge_status",
1087            BatterySimulatorRequest::SetChargeSource { .. } => "set_charge_source",
1088            BatterySimulatorRequest::SetBatteryPercentage { .. } => "set_battery_percentage",
1089            BatterySimulatorRequest::SetLevelStatus { .. } => "set_level_status",
1090            BatterySimulatorRequest::SetTimeRemaining { .. } => "set_time_remaining",
1091            BatterySimulatorRequest::DisconnectRealBattery { .. } => "disconnect_real_battery",
1092            BatterySimulatorRequest::IsSimulating { .. } => "is_simulating",
1093            BatterySimulatorRequest::ReconnectRealBattery { .. } => "reconnect_real_battery",
1094            BatterySimulatorRequest::SetPresentVoltageMv { .. } => "set_present_voltage_mv",
1095            BatterySimulatorRequest::SetRemainingCapacityUah { .. } => "set_remaining_capacity_uah",
1096            BatterySimulatorRequest::SetBatterySpec { .. } => "set_battery_spec",
1097        }
1098    }
1099}
1100
1101#[derive(Debug, Clone)]
1102pub struct BatterySimulatorControlHandle {
1103    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1104}
1105
1106impl fidl::endpoints::ControlHandle for BatterySimulatorControlHandle {
1107    fn shutdown(&self) {
1108        self.inner.shutdown()
1109    }
1110    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1111        self.inner.shutdown_with_epitaph(status)
1112    }
1113
1114    fn is_closed(&self) -> bool {
1115        self.inner.channel().is_closed()
1116    }
1117    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1118        self.inner.channel().on_closed()
1119    }
1120
1121    #[cfg(target_os = "fuchsia")]
1122    fn signal_peer(
1123        &self,
1124        clear_mask: zx::Signals,
1125        set_mask: zx::Signals,
1126    ) -> Result<(), zx_status::Status> {
1127        use fidl::Peered;
1128        self.inner.channel().signal_peer(clear_mask, set_mask)
1129    }
1130}
1131
1132impl BatterySimulatorControlHandle {}
1133
1134#[must_use = "FIDL methods require a response to be sent"]
1135#[derive(Debug)]
1136pub struct BatterySimulatorGetBatteryInfoResponder {
1137    control_handle: std::mem::ManuallyDrop<BatterySimulatorControlHandle>,
1138    tx_id: u32,
1139}
1140
1141/// Set the the channel to be shutdown (see [`BatterySimulatorControlHandle::shutdown`])
1142/// if the responder is dropped without sending a response, so that the client
1143/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
1144impl std::ops::Drop for BatterySimulatorGetBatteryInfoResponder {
1145    fn drop(&mut self) {
1146        self.control_handle.shutdown();
1147        // Safety: drops once, never accessed again
1148        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1149    }
1150}
1151
1152impl fidl::endpoints::Responder for BatterySimulatorGetBatteryInfoResponder {
1153    type ControlHandle = BatterySimulatorControlHandle;
1154
1155    fn control_handle(&self) -> &BatterySimulatorControlHandle {
1156        &self.control_handle
1157    }
1158
1159    fn drop_without_shutdown(mut self) {
1160        // Safety: drops once, never accessed again due to mem::forget
1161        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1162        // Prevent Drop from running (which would shut down the channel)
1163        std::mem::forget(self);
1164    }
1165}
1166
1167impl BatterySimulatorGetBatteryInfoResponder {
1168    /// Sends a response to the FIDL transaction.
1169    ///
1170    /// Sets the channel to shutdown if an error occurs.
1171    pub fn send(
1172        self,
1173        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
1174    ) -> Result<(), fidl::Error> {
1175        let _result = self.send_raw(info);
1176        if _result.is_err() {
1177            self.control_handle.shutdown();
1178        }
1179        self.drop_without_shutdown();
1180        _result
1181    }
1182
1183    /// Similar to "send" but does not shutdown the channel if an error occurs.
1184    pub fn send_no_shutdown_on_err(
1185        self,
1186        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
1187    ) -> Result<(), fidl::Error> {
1188        let _result = self.send_raw(info);
1189        self.drop_without_shutdown();
1190        _result
1191    }
1192
1193    fn send_raw(
1194        &self,
1195        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
1196    ) -> Result<(), fidl::Error> {
1197        self.control_handle.inner.send::<BatterySimulatorControllerGetBatteryInfoResponse>(
1198            (info,),
1199            self.tx_id,
1200            0x4a20d3731366aaf8,
1201            fidl::encoding::DynamicFlags::empty(),
1202        )
1203    }
1204}
1205
1206#[must_use = "FIDL methods require a response to be sent"]
1207#[derive(Debug)]
1208pub struct BatterySimulatorIsSimulatingResponder {
1209    control_handle: std::mem::ManuallyDrop<BatterySimulatorControlHandle>,
1210    tx_id: u32,
1211}
1212
1213/// Set the the channel to be shutdown (see [`BatterySimulatorControlHandle::shutdown`])
1214/// if the responder is dropped without sending a response, so that the client
1215/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
1216impl std::ops::Drop for BatterySimulatorIsSimulatingResponder {
1217    fn drop(&mut self) {
1218        self.control_handle.shutdown();
1219        // Safety: drops once, never accessed again
1220        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1221    }
1222}
1223
1224impl fidl::endpoints::Responder for BatterySimulatorIsSimulatingResponder {
1225    type ControlHandle = BatterySimulatorControlHandle;
1226
1227    fn control_handle(&self) -> &BatterySimulatorControlHandle {
1228        &self.control_handle
1229    }
1230
1231    fn drop_without_shutdown(mut self) {
1232        // Safety: drops once, never accessed again due to mem::forget
1233        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1234        // Prevent Drop from running (which would shut down the channel)
1235        std::mem::forget(self);
1236    }
1237}
1238
1239impl BatterySimulatorIsSimulatingResponder {
1240    /// Sends a response to the FIDL transaction.
1241    ///
1242    /// Sets the channel to shutdown if an error occurs.
1243    pub fn send(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
1244        let _result = self.send_raw(simulation_state);
1245        if _result.is_err() {
1246            self.control_handle.shutdown();
1247        }
1248        self.drop_without_shutdown();
1249        _result
1250    }
1251
1252    /// Similar to "send" but does not shutdown the channel if an error occurs.
1253    pub fn send_no_shutdown_on_err(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
1254        let _result = self.send_raw(simulation_state);
1255        self.drop_without_shutdown();
1256        _result
1257    }
1258
1259    fn send_raw(&self, mut simulation_state: bool) -> Result<(), fidl::Error> {
1260        self.control_handle.inner.send::<BatterySimulatorControllerIsSimulatingResponse>(
1261            (simulation_state,),
1262            self.tx_id,
1263            0x4bf85cfe3476975d,
1264            fidl::encoding::DynamicFlags::empty(),
1265        )
1266    }
1267}
1268
1269#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1270pub struct BatterySimulatorControllerMarker;
1271
1272impl fidl::endpoints::ProtocolMarker for BatterySimulatorControllerMarker {
1273    type Proxy = BatterySimulatorControllerProxy;
1274    type RequestStream = BatterySimulatorControllerRequestStream;
1275    #[cfg(target_os = "fuchsia")]
1276    type SynchronousProxy = BatterySimulatorControllerSynchronousProxy;
1277
1278    const DEBUG_NAME: &'static str = "(anonymous) BatterySimulatorController";
1279}
1280
1281pub trait BatterySimulatorControllerProxyInterface: Send + Sync {
1282    type GetBatteryInfoResponseFut: std::future::Future<Output = Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error>>
1283        + Send;
1284    fn r#get_battery_info(&self) -> Self::GetBatteryInfoResponseFut;
1285    fn r#set_battery_status(
1286        &self,
1287        battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1288    ) -> Result<(), fidl::Error>;
1289    fn r#set_charge_status(
1290        &self,
1291        charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1292    ) -> Result<(), fidl::Error>;
1293    fn r#set_charge_source(
1294        &self,
1295        charge_source: fidl_fuchsia_power_battery::ChargeSource,
1296    ) -> Result<(), fidl::Error>;
1297    fn r#set_battery_percentage(&self, percent: f32) -> Result<(), fidl::Error>;
1298    fn r#set_level_status(
1299        &self,
1300        level_status: fidl_fuchsia_power_battery::LevelStatus,
1301    ) -> Result<(), fidl::Error>;
1302    fn r#set_time_remaining(&self, duration: i64) -> Result<(), fidl::Error>;
1303    fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error>;
1304    type IsSimulatingResponseFut: std::future::Future<Output = Result<bool, fidl::Error>> + Send;
1305    fn r#is_simulating(&self) -> Self::IsSimulatingResponseFut;
1306    fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error>;
1307    fn r#set_present_voltage_mv(&self, voltage: u32) -> Result<(), fidl::Error>;
1308    fn r#set_remaining_capacity_uah(&self, capacity: u32) -> Result<(), fidl::Error>;
1309    fn r#set_battery_spec(
1310        &self,
1311        spec: &fidl_fuchsia_power_battery::BatterySpec,
1312    ) -> Result<(), fidl::Error>;
1313}
1314#[derive(Debug)]
1315#[cfg(target_os = "fuchsia")]
1316pub struct BatterySimulatorControllerSynchronousProxy {
1317    client: fidl::client::sync::Client,
1318}
1319
1320#[cfg(target_os = "fuchsia")]
1321impl fidl::endpoints::SynchronousProxy for BatterySimulatorControllerSynchronousProxy {
1322    type Proxy = BatterySimulatorControllerProxy;
1323    type Protocol = BatterySimulatorControllerMarker;
1324
1325    fn from_channel(inner: fidl::Channel) -> Self {
1326        Self::new(inner)
1327    }
1328
1329    fn into_channel(self) -> fidl::Channel {
1330        self.client.into_channel()
1331    }
1332
1333    fn as_channel(&self) -> &fidl::Channel {
1334        self.client.as_channel()
1335    }
1336}
1337
1338#[cfg(target_os = "fuchsia")]
1339impl BatterySimulatorControllerSynchronousProxy {
1340    pub fn new(channel: fidl::Channel) -> Self {
1341        let protocol_name =
1342            <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1343        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1344    }
1345
1346    pub fn into_channel(self) -> fidl::Channel {
1347        self.client.into_channel()
1348    }
1349
1350    /// Waits until an event arrives and returns it. It is safe for other
1351    /// threads to make concurrent requests while waiting for an event.
1352    pub fn wait_for_event(
1353        &self,
1354        deadline: zx::MonotonicInstant,
1355    ) -> Result<BatterySimulatorControllerEvent, fidl::Error> {
1356        BatterySimulatorControllerEvent::decode(self.client.wait_for_event(deadline)?)
1357    }
1358
1359    /// Gets battery info. This should be called after
1360    /// DisconnectRealBattery
1361    pub fn r#get_battery_info(
1362        &self,
1363        ___deadline: zx::MonotonicInstant,
1364    ) -> Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error> {
1365        let _response = self.client.send_query::<
1366            fidl::encoding::EmptyPayload,
1367            BatterySimulatorControllerGetBatteryInfoResponse,
1368        >(
1369            (),
1370            0x4a20d3731366aaf8,
1371            fidl::encoding::DynamicFlags::empty(),
1372            ___deadline,
1373        )?;
1374        Ok(_response.info)
1375    }
1376
1377    /// Sets Battery Status. This should be called after
1378    /// DisconnectRealBattery
1379    pub fn r#set_battery_status(
1380        &self,
1381        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1382    ) -> Result<(), fidl::Error> {
1383        self.client.send::<BatterySimulatorControllerSetBatteryStatusRequest>(
1384            (battery_status,),
1385            0x2343eb65038c8b34,
1386            fidl::encoding::DynamicFlags::empty(),
1387        )
1388    }
1389
1390    /// Sets Charge Status. This should be called after
1391    /// DisconnectRealBattery
1392    pub fn r#set_charge_status(
1393        &self,
1394        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1395    ) -> Result<(), fidl::Error> {
1396        self.client.send::<BatterySimulatorControllerSetChargeStatusRequest>(
1397            (charge_status,),
1398            0x79b2bf1a387acd85,
1399            fidl::encoding::DynamicFlags::empty(),
1400        )
1401    }
1402
1403    /// Sets Charge Source. This should be called after
1404    /// DisconnectRealBattery
1405    pub fn r#set_charge_source(
1406        &self,
1407        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
1408    ) -> Result<(), fidl::Error> {
1409        self.client.send::<BatterySimulatorControllerSetChargeSourceRequest>(
1410            (charge_source,),
1411            0xb40433f42c33527,
1412            fidl::encoding::DynamicFlags::empty(),
1413        )
1414    }
1415
1416    /// Sets Battery Percentage. This should be called after
1417    /// DisconnectRealBattery
1418    pub fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
1419        self.client.send::<BatterySimulatorControllerSetBatteryPercentageRequest>(
1420            (percent,),
1421            0x64a9d96eb7a45a9f,
1422            fidl::encoding::DynamicFlags::empty(),
1423        )
1424    }
1425
1426    /// Sets Level Status. This should be called after
1427    /// DisconnectRealBattery
1428    pub fn r#set_level_status(
1429        &self,
1430        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
1431    ) -> Result<(), fidl::Error> {
1432        self.client.send::<BatterySimulatorControllerSetLevelStatusRequest>(
1433            (level_status,),
1434            0x577fc3314f7a48a4,
1435            fidl::encoding::DynamicFlags::empty(),
1436        )
1437    }
1438
1439    /// Sets Time Remaining to full charge / depletion
1440    /// This should be called after DisconnectRealBattery
1441    pub fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
1442        self.client.send::<BatterySimulatorControllerSetTimeRemainingRequest>(
1443            (duration,),
1444            0x7427251c9d2a794e,
1445            fidl::encoding::DynamicFlags::empty(),
1446        )
1447    }
1448
1449    /// Disconnect the real battery connection
1450    pub fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
1451        self.client.send::<fidl::encoding::EmptyPayload>(
1452            (),
1453            0x75588eae6b9b67e3,
1454            fidl::encoding::DynamicFlags::empty(),
1455        )
1456    }
1457
1458    /// Gets Simulation State
1459    pub fn r#is_simulating(&self, ___deadline: zx::MonotonicInstant) -> Result<bool, fidl::Error> {
1460        let _response = self.client.send_query::<
1461            fidl::encoding::EmptyPayload,
1462            BatterySimulatorControllerIsSimulatingResponse,
1463        >(
1464            (),
1465            0x4bf85cfe3476975d,
1466            fidl::encoding::DynamicFlags::empty(),
1467            ___deadline,
1468        )?;
1469        Ok(_response.simulation_state)
1470    }
1471
1472    /// Reconnect to the real battery
1473    /// This should be called after DisconnectRealBattery
1474    pub fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
1475        self.client.send::<fidl::encoding::EmptyPayload>(
1476            (),
1477            0x18306690352d9dfa,
1478            fidl::encoding::DynamicFlags::empty(),
1479        )
1480    }
1481
1482    /// Sets Present Voltage in mV. This should be called after
1483    /// DisconnectRealBattery
1484    pub fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
1485        self.client.send::<BatterySimulatorControllerSetPresentVoltageMvRequest>(
1486            (voltage,),
1487            0x5462c9e9f947b8ce,
1488            fidl::encoding::DynamicFlags::empty(),
1489        )
1490    }
1491
1492    /// Sets Remaining Capacity Uah. This should be called after
1493    /// DisconnectRealBattery
1494    pub fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
1495        self.client.send::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(
1496            (capacity,),
1497            0x38054049fe8c26ab,
1498            fidl::encoding::DynamicFlags::empty(),
1499        )
1500    }
1501
1502    /// Sets the BatterySpec
1503    pub fn r#set_battery_spec(
1504        &self,
1505        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
1506    ) -> Result<(), fidl::Error> {
1507        self.client.send::<BatterySimulatorControllerSetBatterySpecRequest>(
1508            (spec,),
1509            0x7324672546976583,
1510            fidl::encoding::DynamicFlags::empty(),
1511        )
1512    }
1513}
1514
1515#[cfg(target_os = "fuchsia")]
1516impl From<BatterySimulatorControllerSynchronousProxy> for zx::Handle {
1517    fn from(value: BatterySimulatorControllerSynchronousProxy) -> Self {
1518        value.into_channel().into()
1519    }
1520}
1521
1522#[cfg(target_os = "fuchsia")]
1523impl From<fidl::Channel> for BatterySimulatorControllerSynchronousProxy {
1524    fn from(value: fidl::Channel) -> Self {
1525        Self::new(value)
1526    }
1527}
1528
1529#[cfg(target_os = "fuchsia")]
1530impl fidl::endpoints::FromClient for BatterySimulatorControllerSynchronousProxy {
1531    type Protocol = BatterySimulatorControllerMarker;
1532
1533    fn from_client(value: fidl::endpoints::ClientEnd<BatterySimulatorControllerMarker>) -> Self {
1534        Self::new(value.into_channel())
1535    }
1536}
1537
1538#[derive(Debug, Clone)]
1539pub struct BatterySimulatorControllerProxy {
1540    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1541}
1542
1543impl fidl::endpoints::Proxy for BatterySimulatorControllerProxy {
1544    type Protocol = BatterySimulatorControllerMarker;
1545
1546    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1547        Self::new(inner)
1548    }
1549
1550    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1551        self.client.into_channel().map_err(|client| Self { client })
1552    }
1553
1554    fn as_channel(&self) -> &::fidl::AsyncChannel {
1555        self.client.as_channel()
1556    }
1557}
1558
1559impl BatterySimulatorControllerProxy {
1560    /// Create a new Proxy for fuchsia.power.battery.test/BatterySimulatorController.
1561    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1562        let protocol_name =
1563            <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1564        Self { client: fidl::client::Client::new(channel, protocol_name) }
1565    }
1566
1567    /// Get a Stream of events from the remote end of the protocol.
1568    ///
1569    /// # Panics
1570    ///
1571    /// Panics if the event stream was already taken.
1572    pub fn take_event_stream(&self) -> BatterySimulatorControllerEventStream {
1573        BatterySimulatorControllerEventStream { event_receiver: self.client.take_event_receiver() }
1574    }
1575
1576    /// Gets battery info. This should be called after
1577    /// DisconnectRealBattery
1578    pub fn r#get_battery_info(
1579        &self,
1580    ) -> fidl::client::QueryResponseFut<
1581        fidl_fuchsia_power_battery::BatteryInfo,
1582        fidl::encoding::DefaultFuchsiaResourceDialect,
1583    > {
1584        BatterySimulatorControllerProxyInterface::r#get_battery_info(self)
1585    }
1586
1587    /// Sets Battery Status. This should be called after
1588    /// DisconnectRealBattery
1589    pub fn r#set_battery_status(
1590        &self,
1591        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1592    ) -> Result<(), fidl::Error> {
1593        BatterySimulatorControllerProxyInterface::r#set_battery_status(self, battery_status)
1594    }
1595
1596    /// Sets Charge Status. This should be called after
1597    /// DisconnectRealBattery
1598    pub fn r#set_charge_status(
1599        &self,
1600        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1601    ) -> Result<(), fidl::Error> {
1602        BatterySimulatorControllerProxyInterface::r#set_charge_status(self, charge_status)
1603    }
1604
1605    /// Sets Charge Source. This should be called after
1606    /// DisconnectRealBattery
1607    pub fn r#set_charge_source(
1608        &self,
1609        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
1610    ) -> Result<(), fidl::Error> {
1611        BatterySimulatorControllerProxyInterface::r#set_charge_source(self, charge_source)
1612    }
1613
1614    /// Sets Battery Percentage. This should be called after
1615    /// DisconnectRealBattery
1616    pub fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
1617        BatterySimulatorControllerProxyInterface::r#set_battery_percentage(self, percent)
1618    }
1619
1620    /// Sets Level Status. This should be called after
1621    /// DisconnectRealBattery
1622    pub fn r#set_level_status(
1623        &self,
1624        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
1625    ) -> Result<(), fidl::Error> {
1626        BatterySimulatorControllerProxyInterface::r#set_level_status(self, level_status)
1627    }
1628
1629    /// Sets Time Remaining to full charge / depletion
1630    /// This should be called after DisconnectRealBattery
1631    pub fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
1632        BatterySimulatorControllerProxyInterface::r#set_time_remaining(self, duration)
1633    }
1634
1635    /// Disconnect the real battery connection
1636    pub fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
1637        BatterySimulatorControllerProxyInterface::r#disconnect_real_battery(self)
1638    }
1639
1640    /// Gets Simulation State
1641    pub fn r#is_simulating(
1642        &self,
1643    ) -> fidl::client::QueryResponseFut<bool, fidl::encoding::DefaultFuchsiaResourceDialect> {
1644        BatterySimulatorControllerProxyInterface::r#is_simulating(self)
1645    }
1646
1647    /// Reconnect to the real battery
1648    /// This should be called after DisconnectRealBattery
1649    pub fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
1650        BatterySimulatorControllerProxyInterface::r#reconnect_real_battery(self)
1651    }
1652
1653    /// Sets Present Voltage in mV. This should be called after
1654    /// DisconnectRealBattery
1655    pub fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
1656        BatterySimulatorControllerProxyInterface::r#set_present_voltage_mv(self, voltage)
1657    }
1658
1659    /// Sets Remaining Capacity Uah. This should be called after
1660    /// DisconnectRealBattery
1661    pub fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
1662        BatterySimulatorControllerProxyInterface::r#set_remaining_capacity_uah(self, capacity)
1663    }
1664
1665    /// Sets the BatterySpec
1666    pub fn r#set_battery_spec(
1667        &self,
1668        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
1669    ) -> Result<(), fidl::Error> {
1670        BatterySimulatorControllerProxyInterface::r#set_battery_spec(self, spec)
1671    }
1672}
1673
1674impl BatterySimulatorControllerProxyInterface for BatterySimulatorControllerProxy {
1675    type GetBatteryInfoResponseFut = fidl::client::QueryResponseFut<
1676        fidl_fuchsia_power_battery::BatteryInfo,
1677        fidl::encoding::DefaultFuchsiaResourceDialect,
1678    >;
1679    fn r#get_battery_info(&self) -> Self::GetBatteryInfoResponseFut {
1680        fn _decode(
1681            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1682        ) -> Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error> {
1683            let _response = fidl::client::decode_transaction_body::<
1684                BatterySimulatorControllerGetBatteryInfoResponse,
1685                fidl::encoding::DefaultFuchsiaResourceDialect,
1686                0x4a20d3731366aaf8,
1687            >(_buf?)?;
1688            Ok(_response.info)
1689        }
1690        self.client.send_query_and_decode::<
1691            fidl::encoding::EmptyPayload,
1692            fidl_fuchsia_power_battery::BatteryInfo,
1693        >(
1694            (),
1695            0x4a20d3731366aaf8,
1696            fidl::encoding::DynamicFlags::empty(),
1697            _decode,
1698        )
1699    }
1700
1701    fn r#set_battery_status(
1702        &self,
1703        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1704    ) -> Result<(), fidl::Error> {
1705        self.client.send::<BatterySimulatorControllerSetBatteryStatusRequest>(
1706            (battery_status,),
1707            0x2343eb65038c8b34,
1708            fidl::encoding::DynamicFlags::empty(),
1709        )
1710    }
1711
1712    fn r#set_charge_status(
1713        &self,
1714        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1715    ) -> Result<(), fidl::Error> {
1716        self.client.send::<BatterySimulatorControllerSetChargeStatusRequest>(
1717            (charge_status,),
1718            0x79b2bf1a387acd85,
1719            fidl::encoding::DynamicFlags::empty(),
1720        )
1721    }
1722
1723    fn r#set_charge_source(
1724        &self,
1725        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
1726    ) -> Result<(), fidl::Error> {
1727        self.client.send::<BatterySimulatorControllerSetChargeSourceRequest>(
1728            (charge_source,),
1729            0xb40433f42c33527,
1730            fidl::encoding::DynamicFlags::empty(),
1731        )
1732    }
1733
1734    fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
1735        self.client.send::<BatterySimulatorControllerSetBatteryPercentageRequest>(
1736            (percent,),
1737            0x64a9d96eb7a45a9f,
1738            fidl::encoding::DynamicFlags::empty(),
1739        )
1740    }
1741
1742    fn r#set_level_status(
1743        &self,
1744        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
1745    ) -> Result<(), fidl::Error> {
1746        self.client.send::<BatterySimulatorControllerSetLevelStatusRequest>(
1747            (level_status,),
1748            0x577fc3314f7a48a4,
1749            fidl::encoding::DynamicFlags::empty(),
1750        )
1751    }
1752
1753    fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
1754        self.client.send::<BatterySimulatorControllerSetTimeRemainingRequest>(
1755            (duration,),
1756            0x7427251c9d2a794e,
1757            fidl::encoding::DynamicFlags::empty(),
1758        )
1759    }
1760
1761    fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
1762        self.client.send::<fidl::encoding::EmptyPayload>(
1763            (),
1764            0x75588eae6b9b67e3,
1765            fidl::encoding::DynamicFlags::empty(),
1766        )
1767    }
1768
1769    type IsSimulatingResponseFut =
1770        fidl::client::QueryResponseFut<bool, fidl::encoding::DefaultFuchsiaResourceDialect>;
1771    fn r#is_simulating(&self) -> Self::IsSimulatingResponseFut {
1772        fn _decode(
1773            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1774        ) -> Result<bool, fidl::Error> {
1775            let _response = fidl::client::decode_transaction_body::<
1776                BatterySimulatorControllerIsSimulatingResponse,
1777                fidl::encoding::DefaultFuchsiaResourceDialect,
1778                0x4bf85cfe3476975d,
1779            >(_buf?)?;
1780            Ok(_response.simulation_state)
1781        }
1782        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, bool>(
1783            (),
1784            0x4bf85cfe3476975d,
1785            fidl::encoding::DynamicFlags::empty(),
1786            _decode,
1787        )
1788    }
1789
1790    fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
1791        self.client.send::<fidl::encoding::EmptyPayload>(
1792            (),
1793            0x18306690352d9dfa,
1794            fidl::encoding::DynamicFlags::empty(),
1795        )
1796    }
1797
1798    fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
1799        self.client.send::<BatterySimulatorControllerSetPresentVoltageMvRequest>(
1800            (voltage,),
1801            0x5462c9e9f947b8ce,
1802            fidl::encoding::DynamicFlags::empty(),
1803        )
1804    }
1805
1806    fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
1807        self.client.send::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(
1808            (capacity,),
1809            0x38054049fe8c26ab,
1810            fidl::encoding::DynamicFlags::empty(),
1811        )
1812    }
1813
1814    fn r#set_battery_spec(
1815        &self,
1816        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
1817    ) -> Result<(), fidl::Error> {
1818        self.client.send::<BatterySimulatorControllerSetBatterySpecRequest>(
1819            (spec,),
1820            0x7324672546976583,
1821            fidl::encoding::DynamicFlags::empty(),
1822        )
1823    }
1824}
1825
1826pub struct BatterySimulatorControllerEventStream {
1827    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1828}
1829
1830impl std::marker::Unpin for BatterySimulatorControllerEventStream {}
1831
1832impl futures::stream::FusedStream for BatterySimulatorControllerEventStream {
1833    fn is_terminated(&self) -> bool {
1834        self.event_receiver.is_terminated()
1835    }
1836}
1837
1838impl futures::Stream for BatterySimulatorControllerEventStream {
1839    type Item = Result<BatterySimulatorControllerEvent, fidl::Error>;
1840
1841    fn poll_next(
1842        mut self: std::pin::Pin<&mut Self>,
1843        cx: &mut std::task::Context<'_>,
1844    ) -> std::task::Poll<Option<Self::Item>> {
1845        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1846            &mut self.event_receiver,
1847            cx
1848        )?) {
1849            Some(buf) => std::task::Poll::Ready(Some(BatterySimulatorControllerEvent::decode(buf))),
1850            None => std::task::Poll::Ready(None),
1851        }
1852    }
1853}
1854
1855#[derive(Debug)]
1856pub enum BatterySimulatorControllerEvent {}
1857
1858impl BatterySimulatorControllerEvent {
1859    /// Decodes a message buffer as a [`BatterySimulatorControllerEvent`].
1860    fn decode(
1861        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1862    ) -> Result<BatterySimulatorControllerEvent, fidl::Error> {
1863        let (bytes, _handles) = buf.split_mut();
1864        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1865        debug_assert_eq!(tx_header.tx_id, 0);
1866        match tx_header.ordinal {
1867            _ => Err(fidl::Error::UnknownOrdinal {
1868                ordinal: tx_header.ordinal,
1869                protocol_name: <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1870            })
1871        }
1872    }
1873}
1874
1875/// A Stream of incoming requests for fuchsia.power.battery.test/BatterySimulatorController.
1876pub struct BatterySimulatorControllerRequestStream {
1877    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1878    is_terminated: bool,
1879}
1880
1881impl std::marker::Unpin for BatterySimulatorControllerRequestStream {}
1882
1883impl futures::stream::FusedStream for BatterySimulatorControllerRequestStream {
1884    fn is_terminated(&self) -> bool {
1885        self.is_terminated
1886    }
1887}
1888
1889impl fidl::endpoints::RequestStream for BatterySimulatorControllerRequestStream {
1890    type Protocol = BatterySimulatorControllerMarker;
1891    type ControlHandle = BatterySimulatorControllerControlHandle;
1892
1893    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1894        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1895    }
1896
1897    fn control_handle(&self) -> Self::ControlHandle {
1898        BatterySimulatorControllerControlHandle { inner: self.inner.clone() }
1899    }
1900
1901    fn into_inner(
1902        self,
1903    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1904    {
1905        (self.inner, self.is_terminated)
1906    }
1907
1908    fn from_inner(
1909        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1910        is_terminated: bool,
1911    ) -> Self {
1912        Self { inner, is_terminated }
1913    }
1914}
1915
1916impl futures::Stream for BatterySimulatorControllerRequestStream {
1917    type Item = Result<BatterySimulatorControllerRequest, fidl::Error>;
1918
1919    fn poll_next(
1920        mut self: std::pin::Pin<&mut Self>,
1921        cx: &mut std::task::Context<'_>,
1922    ) -> std::task::Poll<Option<Self::Item>> {
1923        let this = &mut *self;
1924        if this.inner.check_shutdown(cx) {
1925            this.is_terminated = true;
1926            return std::task::Poll::Ready(None);
1927        }
1928        if this.is_terminated {
1929            panic!("polled BatterySimulatorControllerRequestStream after completion");
1930        }
1931        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1932            |bytes, handles| {
1933                match this.inner.channel().read_etc(cx, bytes, handles) {
1934                    std::task::Poll::Ready(Ok(())) => {}
1935                    std::task::Poll::Pending => return std::task::Poll::Pending,
1936                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1937                        this.is_terminated = true;
1938                        return std::task::Poll::Ready(None);
1939                    }
1940                    std::task::Poll::Ready(Err(e)) => {
1941                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1942                            e.into(),
1943                        ))))
1944                    }
1945                }
1946
1947                // A message has been received from the channel
1948                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1949
1950                std::task::Poll::Ready(Some(match header.ordinal {
1951                0x4a20d3731366aaf8 => {
1952                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1953                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1954                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1955                    let control_handle = BatterySimulatorControllerControlHandle {
1956                        inner: this.inner.clone(),
1957                    };
1958                    Ok(BatterySimulatorControllerRequest::GetBatteryInfo {
1959                        responder: BatterySimulatorControllerGetBatteryInfoResponder {
1960                            control_handle: std::mem::ManuallyDrop::new(control_handle),
1961                            tx_id: header.tx_id,
1962                        },
1963                    })
1964                }
1965                0x2343eb65038c8b34 => {
1966                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1967                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetBatteryStatusRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1968                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatteryStatusRequest>(&header, _body_bytes, handles, &mut req)?;
1969                    let control_handle = BatterySimulatorControllerControlHandle {
1970                        inner: this.inner.clone(),
1971                    };
1972                    Ok(BatterySimulatorControllerRequest::SetBatteryStatus {battery_status: req.battery_status,
1973
1974                        control_handle,
1975                    })
1976                }
1977                0x79b2bf1a387acd85 => {
1978                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1979                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetChargeStatusRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1980                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetChargeStatusRequest>(&header, _body_bytes, handles, &mut req)?;
1981                    let control_handle = BatterySimulatorControllerControlHandle {
1982                        inner: this.inner.clone(),
1983                    };
1984                    Ok(BatterySimulatorControllerRequest::SetChargeStatus {charge_status: req.charge_status,
1985
1986                        control_handle,
1987                    })
1988                }
1989                0xb40433f42c33527 => {
1990                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1991                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetChargeSourceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1992                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetChargeSourceRequest>(&header, _body_bytes, handles, &mut req)?;
1993                    let control_handle = BatterySimulatorControllerControlHandle {
1994                        inner: this.inner.clone(),
1995                    };
1996                    Ok(BatterySimulatorControllerRequest::SetChargeSource {charge_source: req.charge_source,
1997
1998                        control_handle,
1999                    })
2000                }
2001                0x64a9d96eb7a45a9f => {
2002                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2003                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetBatteryPercentageRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2004                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatteryPercentageRequest>(&header, _body_bytes, handles, &mut req)?;
2005                    let control_handle = BatterySimulatorControllerControlHandle {
2006                        inner: this.inner.clone(),
2007                    };
2008                    Ok(BatterySimulatorControllerRequest::SetBatteryPercentage {percent: req.percent,
2009
2010                        control_handle,
2011                    })
2012                }
2013                0x577fc3314f7a48a4 => {
2014                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2015                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetLevelStatusRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2016                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetLevelStatusRequest>(&header, _body_bytes, handles, &mut req)?;
2017                    let control_handle = BatterySimulatorControllerControlHandle {
2018                        inner: this.inner.clone(),
2019                    };
2020                    Ok(BatterySimulatorControllerRequest::SetLevelStatus {level_status: req.level_status,
2021
2022                        control_handle,
2023                    })
2024                }
2025                0x7427251c9d2a794e => {
2026                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2027                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetTimeRemainingRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2028                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetTimeRemainingRequest>(&header, _body_bytes, handles, &mut req)?;
2029                    let control_handle = BatterySimulatorControllerControlHandle {
2030                        inner: this.inner.clone(),
2031                    };
2032                    Ok(BatterySimulatorControllerRequest::SetTimeRemaining {duration: req.duration,
2033
2034                        control_handle,
2035                    })
2036                }
2037                0x75588eae6b9b67e3 => {
2038                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2039                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
2040                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2041                    let control_handle = BatterySimulatorControllerControlHandle {
2042                        inner: this.inner.clone(),
2043                    };
2044                    Ok(BatterySimulatorControllerRequest::DisconnectRealBattery {
2045                        control_handle,
2046                    })
2047                }
2048                0x4bf85cfe3476975d => {
2049                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2050                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
2051                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2052                    let control_handle = BatterySimulatorControllerControlHandle {
2053                        inner: this.inner.clone(),
2054                    };
2055                    Ok(BatterySimulatorControllerRequest::IsSimulating {
2056                        responder: BatterySimulatorControllerIsSimulatingResponder {
2057                            control_handle: std::mem::ManuallyDrop::new(control_handle),
2058                            tx_id: header.tx_id,
2059                        },
2060                    })
2061                }
2062                0x18306690352d9dfa => {
2063                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2064                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
2065                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2066                    let control_handle = BatterySimulatorControllerControlHandle {
2067                        inner: this.inner.clone(),
2068                    };
2069                    Ok(BatterySimulatorControllerRequest::ReconnectRealBattery {
2070                        control_handle,
2071                    })
2072                }
2073                0x5462c9e9f947b8ce => {
2074                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2075                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetPresentVoltageMvRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2076                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetPresentVoltageMvRequest>(&header, _body_bytes, handles, &mut req)?;
2077                    let control_handle = BatterySimulatorControllerControlHandle {
2078                        inner: this.inner.clone(),
2079                    };
2080                    Ok(BatterySimulatorControllerRequest::SetPresentVoltageMv {voltage: req.voltage,
2081
2082                        control_handle,
2083                    })
2084                }
2085                0x38054049fe8c26ab => {
2086                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2087                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetRemainingCapacityUahRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2088                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(&header, _body_bytes, handles, &mut req)?;
2089                    let control_handle = BatterySimulatorControllerControlHandle {
2090                        inner: this.inner.clone(),
2091                    };
2092                    Ok(BatterySimulatorControllerRequest::SetRemainingCapacityUah {capacity: req.capacity,
2093
2094                        control_handle,
2095                    })
2096                }
2097                0x7324672546976583 => {
2098                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2099                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetBatterySpecRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2100                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatterySpecRequest>(&header, _body_bytes, handles, &mut req)?;
2101                    let control_handle = BatterySimulatorControllerControlHandle {
2102                        inner: this.inner.clone(),
2103                    };
2104                    Ok(BatterySimulatorControllerRequest::SetBatterySpec {spec: req.spec,
2105
2106                        control_handle,
2107                    })
2108                }
2109                _ => Err(fidl::Error::UnknownOrdinal {
2110                    ordinal: header.ordinal,
2111                    protocol_name: <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2112                }),
2113            }))
2114            },
2115        )
2116    }
2117}
2118
2119/// Controller interface to allow modification of battery state.
2120#[derive(Debug)]
2121pub enum BatterySimulatorControllerRequest {
2122    /// Gets battery info. This should be called after
2123    /// DisconnectRealBattery
2124    GetBatteryInfo { responder: BatterySimulatorControllerGetBatteryInfoResponder },
2125    /// Sets Battery Status. This should be called after
2126    /// DisconnectRealBattery
2127    SetBatteryStatus {
2128        battery_status: fidl_fuchsia_power_battery::BatteryStatus,
2129        control_handle: BatterySimulatorControllerControlHandle,
2130    },
2131    /// Sets Charge Status. This should be called after
2132    /// DisconnectRealBattery
2133    SetChargeStatus {
2134        charge_status: fidl_fuchsia_power_battery::ChargeStatus,
2135        control_handle: BatterySimulatorControllerControlHandle,
2136    },
2137    /// Sets Charge Source. This should be called after
2138    /// DisconnectRealBattery
2139    SetChargeSource {
2140        charge_source: fidl_fuchsia_power_battery::ChargeSource,
2141        control_handle: BatterySimulatorControllerControlHandle,
2142    },
2143    /// Sets Battery Percentage. This should be called after
2144    /// DisconnectRealBattery
2145    SetBatteryPercentage { percent: f32, control_handle: BatterySimulatorControllerControlHandle },
2146    /// Sets Level Status. This should be called after
2147    /// DisconnectRealBattery
2148    SetLevelStatus {
2149        level_status: fidl_fuchsia_power_battery::LevelStatus,
2150        control_handle: BatterySimulatorControllerControlHandle,
2151    },
2152    /// Sets Time Remaining to full charge / depletion
2153    /// This should be called after DisconnectRealBattery
2154    SetTimeRemaining { duration: i64, control_handle: BatterySimulatorControllerControlHandle },
2155    /// Disconnect the real battery connection
2156    DisconnectRealBattery { control_handle: BatterySimulatorControllerControlHandle },
2157    /// Gets Simulation State
2158    IsSimulating { responder: BatterySimulatorControllerIsSimulatingResponder },
2159    /// Reconnect to the real battery
2160    /// This should be called after DisconnectRealBattery
2161    ReconnectRealBattery { control_handle: BatterySimulatorControllerControlHandle },
2162    /// Sets Present Voltage in mV. This should be called after
2163    /// DisconnectRealBattery
2164    SetPresentVoltageMv { voltage: u32, control_handle: BatterySimulatorControllerControlHandle },
2165    /// Sets Remaining Capacity Uah. This should be called after
2166    /// DisconnectRealBattery
2167    SetRemainingCapacityUah {
2168        capacity: u32,
2169        control_handle: BatterySimulatorControllerControlHandle,
2170    },
2171    /// Sets the BatterySpec
2172    SetBatterySpec {
2173        spec: fidl_fuchsia_power_battery::BatterySpec,
2174        control_handle: BatterySimulatorControllerControlHandle,
2175    },
2176}
2177
2178impl BatterySimulatorControllerRequest {
2179    #[allow(irrefutable_let_patterns)]
2180    pub fn into_get_battery_info(
2181        self,
2182    ) -> Option<(BatterySimulatorControllerGetBatteryInfoResponder)> {
2183        if let BatterySimulatorControllerRequest::GetBatteryInfo { responder } = self {
2184            Some((responder))
2185        } else {
2186            None
2187        }
2188    }
2189
2190    #[allow(irrefutable_let_patterns)]
2191    pub fn into_set_battery_status(
2192        self,
2193    ) -> Option<(fidl_fuchsia_power_battery::BatteryStatus, BatterySimulatorControllerControlHandle)>
2194    {
2195        if let BatterySimulatorControllerRequest::SetBatteryStatus {
2196            battery_status,
2197            control_handle,
2198        } = self
2199        {
2200            Some((battery_status, control_handle))
2201        } else {
2202            None
2203        }
2204    }
2205
2206    #[allow(irrefutable_let_patterns)]
2207    pub fn into_set_charge_status(
2208        self,
2209    ) -> Option<(fidl_fuchsia_power_battery::ChargeStatus, BatterySimulatorControllerControlHandle)>
2210    {
2211        if let BatterySimulatorControllerRequest::SetChargeStatus {
2212            charge_status,
2213            control_handle,
2214        } = self
2215        {
2216            Some((charge_status, control_handle))
2217        } else {
2218            None
2219        }
2220    }
2221
2222    #[allow(irrefutable_let_patterns)]
2223    pub fn into_set_charge_source(
2224        self,
2225    ) -> Option<(fidl_fuchsia_power_battery::ChargeSource, BatterySimulatorControllerControlHandle)>
2226    {
2227        if let BatterySimulatorControllerRequest::SetChargeSource {
2228            charge_source,
2229            control_handle,
2230        } = self
2231        {
2232            Some((charge_source, control_handle))
2233        } else {
2234            None
2235        }
2236    }
2237
2238    #[allow(irrefutable_let_patterns)]
2239    pub fn into_set_battery_percentage(
2240        self,
2241    ) -> Option<(f32, BatterySimulatorControllerControlHandle)> {
2242        if let BatterySimulatorControllerRequest::SetBatteryPercentage { percent, control_handle } =
2243            self
2244        {
2245            Some((percent, control_handle))
2246        } else {
2247            None
2248        }
2249    }
2250
2251    #[allow(irrefutable_let_patterns)]
2252    pub fn into_set_level_status(
2253        self,
2254    ) -> Option<(fidl_fuchsia_power_battery::LevelStatus, BatterySimulatorControllerControlHandle)>
2255    {
2256        if let BatterySimulatorControllerRequest::SetLevelStatus { level_status, control_handle } =
2257            self
2258        {
2259            Some((level_status, control_handle))
2260        } else {
2261            None
2262        }
2263    }
2264
2265    #[allow(irrefutable_let_patterns)]
2266    pub fn into_set_time_remaining(self) -> Option<(i64, BatterySimulatorControllerControlHandle)> {
2267        if let BatterySimulatorControllerRequest::SetTimeRemaining { duration, control_handle } =
2268            self
2269        {
2270            Some((duration, control_handle))
2271        } else {
2272            None
2273        }
2274    }
2275
2276    #[allow(irrefutable_let_patterns)]
2277    pub fn into_disconnect_real_battery(self) -> Option<(BatterySimulatorControllerControlHandle)> {
2278        if let BatterySimulatorControllerRequest::DisconnectRealBattery { control_handle } = self {
2279            Some((control_handle))
2280        } else {
2281            None
2282        }
2283    }
2284
2285    #[allow(irrefutable_let_patterns)]
2286    pub fn into_is_simulating(self) -> Option<(BatterySimulatorControllerIsSimulatingResponder)> {
2287        if let BatterySimulatorControllerRequest::IsSimulating { responder } = self {
2288            Some((responder))
2289        } else {
2290            None
2291        }
2292    }
2293
2294    #[allow(irrefutable_let_patterns)]
2295    pub fn into_reconnect_real_battery(self) -> Option<(BatterySimulatorControllerControlHandle)> {
2296        if let BatterySimulatorControllerRequest::ReconnectRealBattery { control_handle } = self {
2297            Some((control_handle))
2298        } else {
2299            None
2300        }
2301    }
2302
2303    #[allow(irrefutable_let_patterns)]
2304    pub fn into_set_present_voltage_mv(
2305        self,
2306    ) -> Option<(u32, BatterySimulatorControllerControlHandle)> {
2307        if let BatterySimulatorControllerRequest::SetPresentVoltageMv { voltage, control_handle } =
2308            self
2309        {
2310            Some((voltage, control_handle))
2311        } else {
2312            None
2313        }
2314    }
2315
2316    #[allow(irrefutable_let_patterns)]
2317    pub fn into_set_remaining_capacity_uah(
2318        self,
2319    ) -> Option<(u32, BatterySimulatorControllerControlHandle)> {
2320        if let BatterySimulatorControllerRequest::SetRemainingCapacityUah {
2321            capacity,
2322            control_handle,
2323        } = self
2324        {
2325            Some((capacity, control_handle))
2326        } else {
2327            None
2328        }
2329    }
2330
2331    #[allow(irrefutable_let_patterns)]
2332    pub fn into_set_battery_spec(
2333        self,
2334    ) -> Option<(fidl_fuchsia_power_battery::BatterySpec, BatterySimulatorControllerControlHandle)>
2335    {
2336        if let BatterySimulatorControllerRequest::SetBatterySpec { spec, control_handle } = self {
2337            Some((spec, control_handle))
2338        } else {
2339            None
2340        }
2341    }
2342
2343    /// Name of the method defined in FIDL
2344    pub fn method_name(&self) -> &'static str {
2345        match *self {
2346            BatterySimulatorControllerRequest::GetBatteryInfo { .. } => "get_battery_info",
2347            BatterySimulatorControllerRequest::SetBatteryStatus { .. } => "set_battery_status",
2348            BatterySimulatorControllerRequest::SetChargeStatus { .. } => "set_charge_status",
2349            BatterySimulatorControllerRequest::SetChargeSource { .. } => "set_charge_source",
2350            BatterySimulatorControllerRequest::SetBatteryPercentage { .. } => {
2351                "set_battery_percentage"
2352            }
2353            BatterySimulatorControllerRequest::SetLevelStatus { .. } => "set_level_status",
2354            BatterySimulatorControllerRequest::SetTimeRemaining { .. } => "set_time_remaining",
2355            BatterySimulatorControllerRequest::DisconnectRealBattery { .. } => {
2356                "disconnect_real_battery"
2357            }
2358            BatterySimulatorControllerRequest::IsSimulating { .. } => "is_simulating",
2359            BatterySimulatorControllerRequest::ReconnectRealBattery { .. } => {
2360                "reconnect_real_battery"
2361            }
2362            BatterySimulatorControllerRequest::SetPresentVoltageMv { .. } => {
2363                "set_present_voltage_mv"
2364            }
2365            BatterySimulatorControllerRequest::SetRemainingCapacityUah { .. } => {
2366                "set_remaining_capacity_uah"
2367            }
2368            BatterySimulatorControllerRequest::SetBatterySpec { .. } => "set_battery_spec",
2369        }
2370    }
2371}
2372
2373#[derive(Debug, Clone)]
2374pub struct BatterySimulatorControllerControlHandle {
2375    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2376}
2377
2378impl fidl::endpoints::ControlHandle for BatterySimulatorControllerControlHandle {
2379    fn shutdown(&self) {
2380        self.inner.shutdown()
2381    }
2382    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2383        self.inner.shutdown_with_epitaph(status)
2384    }
2385
2386    fn is_closed(&self) -> bool {
2387        self.inner.channel().is_closed()
2388    }
2389    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2390        self.inner.channel().on_closed()
2391    }
2392
2393    #[cfg(target_os = "fuchsia")]
2394    fn signal_peer(
2395        &self,
2396        clear_mask: zx::Signals,
2397        set_mask: zx::Signals,
2398    ) -> Result<(), zx_status::Status> {
2399        use fidl::Peered;
2400        self.inner.channel().signal_peer(clear_mask, set_mask)
2401    }
2402}
2403
2404impl BatterySimulatorControllerControlHandle {}
2405
2406#[must_use = "FIDL methods require a response to be sent"]
2407#[derive(Debug)]
2408pub struct BatterySimulatorControllerGetBatteryInfoResponder {
2409    control_handle: std::mem::ManuallyDrop<BatterySimulatorControllerControlHandle>,
2410    tx_id: u32,
2411}
2412
2413/// Set the the channel to be shutdown (see [`BatterySimulatorControllerControlHandle::shutdown`])
2414/// if the responder is dropped without sending a response, so that the client
2415/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
2416impl std::ops::Drop for BatterySimulatorControllerGetBatteryInfoResponder {
2417    fn drop(&mut self) {
2418        self.control_handle.shutdown();
2419        // Safety: drops once, never accessed again
2420        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2421    }
2422}
2423
2424impl fidl::endpoints::Responder for BatterySimulatorControllerGetBatteryInfoResponder {
2425    type ControlHandle = BatterySimulatorControllerControlHandle;
2426
2427    fn control_handle(&self) -> &BatterySimulatorControllerControlHandle {
2428        &self.control_handle
2429    }
2430
2431    fn drop_without_shutdown(mut self) {
2432        // Safety: drops once, never accessed again due to mem::forget
2433        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2434        // Prevent Drop from running (which would shut down the channel)
2435        std::mem::forget(self);
2436    }
2437}
2438
2439impl BatterySimulatorControllerGetBatteryInfoResponder {
2440    /// Sends a response to the FIDL transaction.
2441    ///
2442    /// Sets the channel to shutdown if an error occurs.
2443    pub fn send(
2444        self,
2445        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
2446    ) -> Result<(), fidl::Error> {
2447        let _result = self.send_raw(info);
2448        if _result.is_err() {
2449            self.control_handle.shutdown();
2450        }
2451        self.drop_without_shutdown();
2452        _result
2453    }
2454
2455    /// Similar to "send" but does not shutdown the channel if an error occurs.
2456    pub fn send_no_shutdown_on_err(
2457        self,
2458        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
2459    ) -> Result<(), fidl::Error> {
2460        let _result = self.send_raw(info);
2461        self.drop_without_shutdown();
2462        _result
2463    }
2464
2465    fn send_raw(
2466        &self,
2467        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
2468    ) -> Result<(), fidl::Error> {
2469        self.control_handle.inner.send::<BatterySimulatorControllerGetBatteryInfoResponse>(
2470            (info,),
2471            self.tx_id,
2472            0x4a20d3731366aaf8,
2473            fidl::encoding::DynamicFlags::empty(),
2474        )
2475    }
2476}
2477
2478#[must_use = "FIDL methods require a response to be sent"]
2479#[derive(Debug)]
2480pub struct BatterySimulatorControllerIsSimulatingResponder {
2481    control_handle: std::mem::ManuallyDrop<BatterySimulatorControllerControlHandle>,
2482    tx_id: u32,
2483}
2484
2485/// Set the the channel to be shutdown (see [`BatterySimulatorControllerControlHandle::shutdown`])
2486/// if the responder is dropped without sending a response, so that the client
2487/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
2488impl std::ops::Drop for BatterySimulatorControllerIsSimulatingResponder {
2489    fn drop(&mut self) {
2490        self.control_handle.shutdown();
2491        // Safety: drops once, never accessed again
2492        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2493    }
2494}
2495
2496impl fidl::endpoints::Responder for BatterySimulatorControllerIsSimulatingResponder {
2497    type ControlHandle = BatterySimulatorControllerControlHandle;
2498
2499    fn control_handle(&self) -> &BatterySimulatorControllerControlHandle {
2500        &self.control_handle
2501    }
2502
2503    fn drop_without_shutdown(mut self) {
2504        // Safety: drops once, never accessed again due to mem::forget
2505        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2506        // Prevent Drop from running (which would shut down the channel)
2507        std::mem::forget(self);
2508    }
2509}
2510
2511impl BatterySimulatorControllerIsSimulatingResponder {
2512    /// Sends a response to the FIDL transaction.
2513    ///
2514    /// Sets the channel to shutdown if an error occurs.
2515    pub fn send(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
2516        let _result = self.send_raw(simulation_state);
2517        if _result.is_err() {
2518            self.control_handle.shutdown();
2519        }
2520        self.drop_without_shutdown();
2521        _result
2522    }
2523
2524    /// Similar to "send" but does not shutdown the channel if an error occurs.
2525    pub fn send_no_shutdown_on_err(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
2526        let _result = self.send_raw(simulation_state);
2527        self.drop_without_shutdown();
2528        _result
2529    }
2530
2531    fn send_raw(&self, mut simulation_state: bool) -> Result<(), fidl::Error> {
2532        self.control_handle.inner.send::<BatterySimulatorControllerIsSimulatingResponse>(
2533            (simulation_state,),
2534            self.tx_id,
2535            0x4bf85cfe3476975d,
2536            fidl::encoding::DynamicFlags::empty(),
2537        )
2538    }
2539}
2540
2541mod internal {
2542    use super::*;
2543}