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::NullableHandle {
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
1111    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
1112        self.inner.shutdown_with_epitaph(status)
1113    }
1114
1115    fn is_closed(&self) -> bool {
1116        self.inner.channel().is_closed()
1117    }
1118    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
1119        self.inner.channel().on_closed()
1120    }
1121
1122    #[cfg(target_os = "fuchsia")]
1123    fn signal_peer(
1124        &self,
1125        clear_mask: zx::Signals,
1126        set_mask: zx::Signals,
1127    ) -> Result<(), zx_status::Status> {
1128        use fidl::Peered;
1129        self.inner.channel().signal_peer(clear_mask, set_mask)
1130    }
1131}
1132
1133impl BatterySimulatorControlHandle {}
1134
1135#[must_use = "FIDL methods require a response to be sent"]
1136#[derive(Debug)]
1137pub struct BatterySimulatorGetBatteryInfoResponder {
1138    control_handle: std::mem::ManuallyDrop<BatterySimulatorControlHandle>,
1139    tx_id: u32,
1140}
1141
1142/// Set the the channel to be shutdown (see [`BatterySimulatorControlHandle::shutdown`])
1143/// if the responder is dropped without sending a response, so that the client
1144/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
1145impl std::ops::Drop for BatterySimulatorGetBatteryInfoResponder {
1146    fn drop(&mut self) {
1147        self.control_handle.shutdown();
1148        // Safety: drops once, never accessed again
1149        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1150    }
1151}
1152
1153impl fidl::endpoints::Responder for BatterySimulatorGetBatteryInfoResponder {
1154    type ControlHandle = BatterySimulatorControlHandle;
1155
1156    fn control_handle(&self) -> &BatterySimulatorControlHandle {
1157        &self.control_handle
1158    }
1159
1160    fn drop_without_shutdown(mut self) {
1161        // Safety: drops once, never accessed again due to mem::forget
1162        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1163        // Prevent Drop from running (which would shut down the channel)
1164        std::mem::forget(self);
1165    }
1166}
1167
1168impl BatterySimulatorGetBatteryInfoResponder {
1169    /// Sends a response to the FIDL transaction.
1170    ///
1171    /// Sets the channel to shutdown if an error occurs.
1172    pub fn send(
1173        self,
1174        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
1175    ) -> Result<(), fidl::Error> {
1176        let _result = self.send_raw(info);
1177        if _result.is_err() {
1178            self.control_handle.shutdown();
1179        }
1180        self.drop_without_shutdown();
1181        _result
1182    }
1183
1184    /// Similar to "send" but does not shutdown the channel if an error occurs.
1185    pub fn send_no_shutdown_on_err(
1186        self,
1187        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
1188    ) -> Result<(), fidl::Error> {
1189        let _result = self.send_raw(info);
1190        self.drop_without_shutdown();
1191        _result
1192    }
1193
1194    fn send_raw(
1195        &self,
1196        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
1197    ) -> Result<(), fidl::Error> {
1198        self.control_handle.inner.send::<BatterySimulatorControllerGetBatteryInfoResponse>(
1199            (info,),
1200            self.tx_id,
1201            0x4a20d3731366aaf8,
1202            fidl::encoding::DynamicFlags::empty(),
1203        )
1204    }
1205}
1206
1207#[must_use = "FIDL methods require a response to be sent"]
1208#[derive(Debug)]
1209pub struct BatterySimulatorIsSimulatingResponder {
1210    control_handle: std::mem::ManuallyDrop<BatterySimulatorControlHandle>,
1211    tx_id: u32,
1212}
1213
1214/// Set the the channel to be shutdown (see [`BatterySimulatorControlHandle::shutdown`])
1215/// if the responder is dropped without sending a response, so that the client
1216/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
1217impl std::ops::Drop for BatterySimulatorIsSimulatingResponder {
1218    fn drop(&mut self) {
1219        self.control_handle.shutdown();
1220        // Safety: drops once, never accessed again
1221        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1222    }
1223}
1224
1225impl fidl::endpoints::Responder for BatterySimulatorIsSimulatingResponder {
1226    type ControlHandle = BatterySimulatorControlHandle;
1227
1228    fn control_handle(&self) -> &BatterySimulatorControlHandle {
1229        &self.control_handle
1230    }
1231
1232    fn drop_without_shutdown(mut self) {
1233        // Safety: drops once, never accessed again due to mem::forget
1234        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
1235        // Prevent Drop from running (which would shut down the channel)
1236        std::mem::forget(self);
1237    }
1238}
1239
1240impl BatterySimulatorIsSimulatingResponder {
1241    /// Sends a response to the FIDL transaction.
1242    ///
1243    /// Sets the channel to shutdown if an error occurs.
1244    pub fn send(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
1245        let _result = self.send_raw(simulation_state);
1246        if _result.is_err() {
1247            self.control_handle.shutdown();
1248        }
1249        self.drop_without_shutdown();
1250        _result
1251    }
1252
1253    /// Similar to "send" but does not shutdown the channel if an error occurs.
1254    pub fn send_no_shutdown_on_err(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
1255        let _result = self.send_raw(simulation_state);
1256        self.drop_without_shutdown();
1257        _result
1258    }
1259
1260    fn send_raw(&self, mut simulation_state: bool) -> Result<(), fidl::Error> {
1261        self.control_handle.inner.send::<BatterySimulatorControllerIsSimulatingResponse>(
1262            (simulation_state,),
1263            self.tx_id,
1264            0x4bf85cfe3476975d,
1265            fidl::encoding::DynamicFlags::empty(),
1266        )
1267    }
1268}
1269
1270#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
1271pub struct BatterySimulatorControllerMarker;
1272
1273impl fidl::endpoints::ProtocolMarker for BatterySimulatorControllerMarker {
1274    type Proxy = BatterySimulatorControllerProxy;
1275    type RequestStream = BatterySimulatorControllerRequestStream;
1276    #[cfg(target_os = "fuchsia")]
1277    type SynchronousProxy = BatterySimulatorControllerSynchronousProxy;
1278
1279    const DEBUG_NAME: &'static str = "(anonymous) BatterySimulatorController";
1280}
1281
1282pub trait BatterySimulatorControllerProxyInterface: Send + Sync {
1283    type GetBatteryInfoResponseFut: std::future::Future<Output = Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error>>
1284        + Send;
1285    fn r#get_battery_info(&self) -> Self::GetBatteryInfoResponseFut;
1286    fn r#set_battery_status(
1287        &self,
1288        battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1289    ) -> Result<(), fidl::Error>;
1290    fn r#set_charge_status(
1291        &self,
1292        charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1293    ) -> Result<(), fidl::Error>;
1294    fn r#set_charge_source(
1295        &self,
1296        charge_source: fidl_fuchsia_power_battery::ChargeSource,
1297    ) -> Result<(), fidl::Error>;
1298    fn r#set_battery_percentage(&self, percent: f32) -> Result<(), fidl::Error>;
1299    fn r#set_level_status(
1300        &self,
1301        level_status: fidl_fuchsia_power_battery::LevelStatus,
1302    ) -> Result<(), fidl::Error>;
1303    fn r#set_time_remaining(&self, duration: i64) -> Result<(), fidl::Error>;
1304    fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error>;
1305    type IsSimulatingResponseFut: std::future::Future<Output = Result<bool, fidl::Error>> + Send;
1306    fn r#is_simulating(&self) -> Self::IsSimulatingResponseFut;
1307    fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error>;
1308    fn r#set_present_voltage_mv(&self, voltage: u32) -> Result<(), fidl::Error>;
1309    fn r#set_remaining_capacity_uah(&self, capacity: u32) -> Result<(), fidl::Error>;
1310    fn r#set_battery_spec(
1311        &self,
1312        spec: &fidl_fuchsia_power_battery::BatterySpec,
1313    ) -> Result<(), fidl::Error>;
1314}
1315#[derive(Debug)]
1316#[cfg(target_os = "fuchsia")]
1317pub struct BatterySimulatorControllerSynchronousProxy {
1318    client: fidl::client::sync::Client,
1319}
1320
1321#[cfg(target_os = "fuchsia")]
1322impl fidl::endpoints::SynchronousProxy for BatterySimulatorControllerSynchronousProxy {
1323    type Proxy = BatterySimulatorControllerProxy;
1324    type Protocol = BatterySimulatorControllerMarker;
1325
1326    fn from_channel(inner: fidl::Channel) -> Self {
1327        Self::new(inner)
1328    }
1329
1330    fn into_channel(self) -> fidl::Channel {
1331        self.client.into_channel()
1332    }
1333
1334    fn as_channel(&self) -> &fidl::Channel {
1335        self.client.as_channel()
1336    }
1337}
1338
1339#[cfg(target_os = "fuchsia")]
1340impl BatterySimulatorControllerSynchronousProxy {
1341    pub fn new(channel: fidl::Channel) -> Self {
1342        let protocol_name =
1343            <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1344        Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
1345    }
1346
1347    pub fn into_channel(self) -> fidl::Channel {
1348        self.client.into_channel()
1349    }
1350
1351    /// Waits until an event arrives and returns it. It is safe for other
1352    /// threads to make concurrent requests while waiting for an event.
1353    pub fn wait_for_event(
1354        &self,
1355        deadline: zx::MonotonicInstant,
1356    ) -> Result<BatterySimulatorControllerEvent, fidl::Error> {
1357        BatterySimulatorControllerEvent::decode(self.client.wait_for_event(deadline)?)
1358    }
1359
1360    /// Gets battery info. This should be called after
1361    /// DisconnectRealBattery
1362    pub fn r#get_battery_info(
1363        &self,
1364        ___deadline: zx::MonotonicInstant,
1365    ) -> Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error> {
1366        let _response = self.client.send_query::<
1367            fidl::encoding::EmptyPayload,
1368            BatterySimulatorControllerGetBatteryInfoResponse,
1369        >(
1370            (),
1371            0x4a20d3731366aaf8,
1372            fidl::encoding::DynamicFlags::empty(),
1373            ___deadline,
1374        )?;
1375        Ok(_response.info)
1376    }
1377
1378    /// Sets Battery Status. This should be called after
1379    /// DisconnectRealBattery
1380    pub fn r#set_battery_status(
1381        &self,
1382        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1383    ) -> Result<(), fidl::Error> {
1384        self.client.send::<BatterySimulatorControllerSetBatteryStatusRequest>(
1385            (battery_status,),
1386            0x2343eb65038c8b34,
1387            fidl::encoding::DynamicFlags::empty(),
1388        )
1389    }
1390
1391    /// Sets Charge Status. This should be called after
1392    /// DisconnectRealBattery
1393    pub fn r#set_charge_status(
1394        &self,
1395        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1396    ) -> Result<(), fidl::Error> {
1397        self.client.send::<BatterySimulatorControllerSetChargeStatusRequest>(
1398            (charge_status,),
1399            0x79b2bf1a387acd85,
1400            fidl::encoding::DynamicFlags::empty(),
1401        )
1402    }
1403
1404    /// Sets Charge Source. This should be called after
1405    /// DisconnectRealBattery
1406    pub fn r#set_charge_source(
1407        &self,
1408        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
1409    ) -> Result<(), fidl::Error> {
1410        self.client.send::<BatterySimulatorControllerSetChargeSourceRequest>(
1411            (charge_source,),
1412            0xb40433f42c33527,
1413            fidl::encoding::DynamicFlags::empty(),
1414        )
1415    }
1416
1417    /// Sets Battery Percentage. This should be called after
1418    /// DisconnectRealBattery
1419    pub fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
1420        self.client.send::<BatterySimulatorControllerSetBatteryPercentageRequest>(
1421            (percent,),
1422            0x64a9d96eb7a45a9f,
1423            fidl::encoding::DynamicFlags::empty(),
1424        )
1425    }
1426
1427    /// Sets Level Status. This should be called after
1428    /// DisconnectRealBattery
1429    pub fn r#set_level_status(
1430        &self,
1431        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
1432    ) -> Result<(), fidl::Error> {
1433        self.client.send::<BatterySimulatorControllerSetLevelStatusRequest>(
1434            (level_status,),
1435            0x577fc3314f7a48a4,
1436            fidl::encoding::DynamicFlags::empty(),
1437        )
1438    }
1439
1440    /// Sets Time Remaining to full charge / depletion
1441    /// This should be called after DisconnectRealBattery
1442    pub fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
1443        self.client.send::<BatterySimulatorControllerSetTimeRemainingRequest>(
1444            (duration,),
1445            0x7427251c9d2a794e,
1446            fidl::encoding::DynamicFlags::empty(),
1447        )
1448    }
1449
1450    /// Disconnect the real battery connection
1451    pub fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
1452        self.client.send::<fidl::encoding::EmptyPayload>(
1453            (),
1454            0x75588eae6b9b67e3,
1455            fidl::encoding::DynamicFlags::empty(),
1456        )
1457    }
1458
1459    /// Gets Simulation State
1460    pub fn r#is_simulating(&self, ___deadline: zx::MonotonicInstant) -> Result<bool, fidl::Error> {
1461        let _response = self.client.send_query::<
1462            fidl::encoding::EmptyPayload,
1463            BatterySimulatorControllerIsSimulatingResponse,
1464        >(
1465            (),
1466            0x4bf85cfe3476975d,
1467            fidl::encoding::DynamicFlags::empty(),
1468            ___deadline,
1469        )?;
1470        Ok(_response.simulation_state)
1471    }
1472
1473    /// Reconnect to the real battery
1474    /// This should be called after DisconnectRealBattery
1475    pub fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
1476        self.client.send::<fidl::encoding::EmptyPayload>(
1477            (),
1478            0x18306690352d9dfa,
1479            fidl::encoding::DynamicFlags::empty(),
1480        )
1481    }
1482
1483    /// Sets Present Voltage in mV. This should be called after
1484    /// DisconnectRealBattery
1485    pub fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
1486        self.client.send::<BatterySimulatorControllerSetPresentVoltageMvRequest>(
1487            (voltage,),
1488            0x5462c9e9f947b8ce,
1489            fidl::encoding::DynamicFlags::empty(),
1490        )
1491    }
1492
1493    /// Sets Remaining Capacity Uah. This should be called after
1494    /// DisconnectRealBattery
1495    pub fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
1496        self.client.send::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(
1497            (capacity,),
1498            0x38054049fe8c26ab,
1499            fidl::encoding::DynamicFlags::empty(),
1500        )
1501    }
1502
1503    /// Sets the BatterySpec
1504    pub fn r#set_battery_spec(
1505        &self,
1506        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
1507    ) -> Result<(), fidl::Error> {
1508        self.client.send::<BatterySimulatorControllerSetBatterySpecRequest>(
1509            (spec,),
1510            0x7324672546976583,
1511            fidl::encoding::DynamicFlags::empty(),
1512        )
1513    }
1514}
1515
1516#[cfg(target_os = "fuchsia")]
1517impl From<BatterySimulatorControllerSynchronousProxy> for zx::NullableHandle {
1518    fn from(value: BatterySimulatorControllerSynchronousProxy) -> Self {
1519        value.into_channel().into()
1520    }
1521}
1522
1523#[cfg(target_os = "fuchsia")]
1524impl From<fidl::Channel> for BatterySimulatorControllerSynchronousProxy {
1525    fn from(value: fidl::Channel) -> Self {
1526        Self::new(value)
1527    }
1528}
1529
1530#[cfg(target_os = "fuchsia")]
1531impl fidl::endpoints::FromClient for BatterySimulatorControllerSynchronousProxy {
1532    type Protocol = BatterySimulatorControllerMarker;
1533
1534    fn from_client(value: fidl::endpoints::ClientEnd<BatterySimulatorControllerMarker>) -> Self {
1535        Self::new(value.into_channel())
1536    }
1537}
1538
1539#[derive(Debug, Clone)]
1540pub struct BatterySimulatorControllerProxy {
1541    client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
1542}
1543
1544impl fidl::endpoints::Proxy for BatterySimulatorControllerProxy {
1545    type Protocol = BatterySimulatorControllerMarker;
1546
1547    fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
1548        Self::new(inner)
1549    }
1550
1551    fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
1552        self.client.into_channel().map_err(|client| Self { client })
1553    }
1554
1555    fn as_channel(&self) -> &::fidl::AsyncChannel {
1556        self.client.as_channel()
1557    }
1558}
1559
1560impl BatterySimulatorControllerProxy {
1561    /// Create a new Proxy for fuchsia.power.battery.test/BatterySimulatorController.
1562    pub fn new(channel: ::fidl::AsyncChannel) -> Self {
1563        let protocol_name =
1564            <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
1565        Self { client: fidl::client::Client::new(channel, protocol_name) }
1566    }
1567
1568    /// Get a Stream of events from the remote end of the protocol.
1569    ///
1570    /// # Panics
1571    ///
1572    /// Panics if the event stream was already taken.
1573    pub fn take_event_stream(&self) -> BatterySimulatorControllerEventStream {
1574        BatterySimulatorControllerEventStream { event_receiver: self.client.take_event_receiver() }
1575    }
1576
1577    /// Gets battery info. This should be called after
1578    /// DisconnectRealBattery
1579    pub fn r#get_battery_info(
1580        &self,
1581    ) -> fidl::client::QueryResponseFut<
1582        fidl_fuchsia_power_battery::BatteryInfo,
1583        fidl::encoding::DefaultFuchsiaResourceDialect,
1584    > {
1585        BatterySimulatorControllerProxyInterface::r#get_battery_info(self)
1586    }
1587
1588    /// Sets Battery Status. This should be called after
1589    /// DisconnectRealBattery
1590    pub fn r#set_battery_status(
1591        &self,
1592        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1593    ) -> Result<(), fidl::Error> {
1594        BatterySimulatorControllerProxyInterface::r#set_battery_status(self, battery_status)
1595    }
1596
1597    /// Sets Charge Status. This should be called after
1598    /// DisconnectRealBattery
1599    pub fn r#set_charge_status(
1600        &self,
1601        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1602    ) -> Result<(), fidl::Error> {
1603        BatterySimulatorControllerProxyInterface::r#set_charge_status(self, charge_status)
1604    }
1605
1606    /// Sets Charge Source. This should be called after
1607    /// DisconnectRealBattery
1608    pub fn r#set_charge_source(
1609        &self,
1610        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
1611    ) -> Result<(), fidl::Error> {
1612        BatterySimulatorControllerProxyInterface::r#set_charge_source(self, charge_source)
1613    }
1614
1615    /// Sets Battery Percentage. This should be called after
1616    /// DisconnectRealBattery
1617    pub fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
1618        BatterySimulatorControllerProxyInterface::r#set_battery_percentage(self, percent)
1619    }
1620
1621    /// Sets Level Status. This should be called after
1622    /// DisconnectRealBattery
1623    pub fn r#set_level_status(
1624        &self,
1625        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
1626    ) -> Result<(), fidl::Error> {
1627        BatterySimulatorControllerProxyInterface::r#set_level_status(self, level_status)
1628    }
1629
1630    /// Sets Time Remaining to full charge / depletion
1631    /// This should be called after DisconnectRealBattery
1632    pub fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
1633        BatterySimulatorControllerProxyInterface::r#set_time_remaining(self, duration)
1634    }
1635
1636    /// Disconnect the real battery connection
1637    pub fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
1638        BatterySimulatorControllerProxyInterface::r#disconnect_real_battery(self)
1639    }
1640
1641    /// Gets Simulation State
1642    pub fn r#is_simulating(
1643        &self,
1644    ) -> fidl::client::QueryResponseFut<bool, fidl::encoding::DefaultFuchsiaResourceDialect> {
1645        BatterySimulatorControllerProxyInterface::r#is_simulating(self)
1646    }
1647
1648    /// Reconnect to the real battery
1649    /// This should be called after DisconnectRealBattery
1650    pub fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
1651        BatterySimulatorControllerProxyInterface::r#reconnect_real_battery(self)
1652    }
1653
1654    /// Sets Present Voltage in mV. This should be called after
1655    /// DisconnectRealBattery
1656    pub fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
1657        BatterySimulatorControllerProxyInterface::r#set_present_voltage_mv(self, voltage)
1658    }
1659
1660    /// Sets Remaining Capacity Uah. This should be called after
1661    /// DisconnectRealBattery
1662    pub fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
1663        BatterySimulatorControllerProxyInterface::r#set_remaining_capacity_uah(self, capacity)
1664    }
1665
1666    /// Sets the BatterySpec
1667    pub fn r#set_battery_spec(
1668        &self,
1669        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
1670    ) -> Result<(), fidl::Error> {
1671        BatterySimulatorControllerProxyInterface::r#set_battery_spec(self, spec)
1672    }
1673}
1674
1675impl BatterySimulatorControllerProxyInterface for BatterySimulatorControllerProxy {
1676    type GetBatteryInfoResponseFut = fidl::client::QueryResponseFut<
1677        fidl_fuchsia_power_battery::BatteryInfo,
1678        fidl::encoding::DefaultFuchsiaResourceDialect,
1679    >;
1680    fn r#get_battery_info(&self) -> Self::GetBatteryInfoResponseFut {
1681        fn _decode(
1682            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1683        ) -> Result<fidl_fuchsia_power_battery::BatteryInfo, fidl::Error> {
1684            let _response = fidl::client::decode_transaction_body::<
1685                BatterySimulatorControllerGetBatteryInfoResponse,
1686                fidl::encoding::DefaultFuchsiaResourceDialect,
1687                0x4a20d3731366aaf8,
1688            >(_buf?)?;
1689            Ok(_response.info)
1690        }
1691        self.client.send_query_and_decode::<
1692            fidl::encoding::EmptyPayload,
1693            fidl_fuchsia_power_battery::BatteryInfo,
1694        >(
1695            (),
1696            0x4a20d3731366aaf8,
1697            fidl::encoding::DynamicFlags::empty(),
1698            _decode,
1699        )
1700    }
1701
1702    fn r#set_battery_status(
1703        &self,
1704        mut battery_status: fidl_fuchsia_power_battery::BatteryStatus,
1705    ) -> Result<(), fidl::Error> {
1706        self.client.send::<BatterySimulatorControllerSetBatteryStatusRequest>(
1707            (battery_status,),
1708            0x2343eb65038c8b34,
1709            fidl::encoding::DynamicFlags::empty(),
1710        )
1711    }
1712
1713    fn r#set_charge_status(
1714        &self,
1715        mut charge_status: fidl_fuchsia_power_battery::ChargeStatus,
1716    ) -> Result<(), fidl::Error> {
1717        self.client.send::<BatterySimulatorControllerSetChargeStatusRequest>(
1718            (charge_status,),
1719            0x79b2bf1a387acd85,
1720            fidl::encoding::DynamicFlags::empty(),
1721        )
1722    }
1723
1724    fn r#set_charge_source(
1725        &self,
1726        mut charge_source: fidl_fuchsia_power_battery::ChargeSource,
1727    ) -> Result<(), fidl::Error> {
1728        self.client.send::<BatterySimulatorControllerSetChargeSourceRequest>(
1729            (charge_source,),
1730            0xb40433f42c33527,
1731            fidl::encoding::DynamicFlags::empty(),
1732        )
1733    }
1734
1735    fn r#set_battery_percentage(&self, mut percent: f32) -> Result<(), fidl::Error> {
1736        self.client.send::<BatterySimulatorControllerSetBatteryPercentageRequest>(
1737            (percent,),
1738            0x64a9d96eb7a45a9f,
1739            fidl::encoding::DynamicFlags::empty(),
1740        )
1741    }
1742
1743    fn r#set_level_status(
1744        &self,
1745        mut level_status: fidl_fuchsia_power_battery::LevelStatus,
1746    ) -> Result<(), fidl::Error> {
1747        self.client.send::<BatterySimulatorControllerSetLevelStatusRequest>(
1748            (level_status,),
1749            0x577fc3314f7a48a4,
1750            fidl::encoding::DynamicFlags::empty(),
1751        )
1752    }
1753
1754    fn r#set_time_remaining(&self, mut duration: i64) -> Result<(), fidl::Error> {
1755        self.client.send::<BatterySimulatorControllerSetTimeRemainingRequest>(
1756            (duration,),
1757            0x7427251c9d2a794e,
1758            fidl::encoding::DynamicFlags::empty(),
1759        )
1760    }
1761
1762    fn r#disconnect_real_battery(&self) -> Result<(), fidl::Error> {
1763        self.client.send::<fidl::encoding::EmptyPayload>(
1764            (),
1765            0x75588eae6b9b67e3,
1766            fidl::encoding::DynamicFlags::empty(),
1767        )
1768    }
1769
1770    type IsSimulatingResponseFut =
1771        fidl::client::QueryResponseFut<bool, fidl::encoding::DefaultFuchsiaResourceDialect>;
1772    fn r#is_simulating(&self) -> Self::IsSimulatingResponseFut {
1773        fn _decode(
1774            mut _buf: Result<<fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc, fidl::Error>,
1775        ) -> Result<bool, fidl::Error> {
1776            let _response = fidl::client::decode_transaction_body::<
1777                BatterySimulatorControllerIsSimulatingResponse,
1778                fidl::encoding::DefaultFuchsiaResourceDialect,
1779                0x4bf85cfe3476975d,
1780            >(_buf?)?;
1781            Ok(_response.simulation_state)
1782        }
1783        self.client.send_query_and_decode::<fidl::encoding::EmptyPayload, bool>(
1784            (),
1785            0x4bf85cfe3476975d,
1786            fidl::encoding::DynamicFlags::empty(),
1787            _decode,
1788        )
1789    }
1790
1791    fn r#reconnect_real_battery(&self) -> Result<(), fidl::Error> {
1792        self.client.send::<fidl::encoding::EmptyPayload>(
1793            (),
1794            0x18306690352d9dfa,
1795            fidl::encoding::DynamicFlags::empty(),
1796        )
1797    }
1798
1799    fn r#set_present_voltage_mv(&self, mut voltage: u32) -> Result<(), fidl::Error> {
1800        self.client.send::<BatterySimulatorControllerSetPresentVoltageMvRequest>(
1801            (voltage,),
1802            0x5462c9e9f947b8ce,
1803            fidl::encoding::DynamicFlags::empty(),
1804        )
1805    }
1806
1807    fn r#set_remaining_capacity_uah(&self, mut capacity: u32) -> Result<(), fidl::Error> {
1808        self.client.send::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(
1809            (capacity,),
1810            0x38054049fe8c26ab,
1811            fidl::encoding::DynamicFlags::empty(),
1812        )
1813    }
1814
1815    fn r#set_battery_spec(
1816        &self,
1817        mut spec: &fidl_fuchsia_power_battery::BatterySpec,
1818    ) -> Result<(), fidl::Error> {
1819        self.client.send::<BatterySimulatorControllerSetBatterySpecRequest>(
1820            (spec,),
1821            0x7324672546976583,
1822            fidl::encoding::DynamicFlags::empty(),
1823        )
1824    }
1825}
1826
1827pub struct BatterySimulatorControllerEventStream {
1828    event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
1829}
1830
1831impl std::marker::Unpin for BatterySimulatorControllerEventStream {}
1832
1833impl futures::stream::FusedStream for BatterySimulatorControllerEventStream {
1834    fn is_terminated(&self) -> bool {
1835        self.event_receiver.is_terminated()
1836    }
1837}
1838
1839impl futures::Stream for BatterySimulatorControllerEventStream {
1840    type Item = Result<BatterySimulatorControllerEvent, fidl::Error>;
1841
1842    fn poll_next(
1843        mut self: std::pin::Pin<&mut Self>,
1844        cx: &mut std::task::Context<'_>,
1845    ) -> std::task::Poll<Option<Self::Item>> {
1846        match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
1847            &mut self.event_receiver,
1848            cx
1849        )?) {
1850            Some(buf) => std::task::Poll::Ready(Some(BatterySimulatorControllerEvent::decode(buf))),
1851            None => std::task::Poll::Ready(None),
1852        }
1853    }
1854}
1855
1856#[derive(Debug)]
1857pub enum BatterySimulatorControllerEvent {}
1858
1859impl BatterySimulatorControllerEvent {
1860    /// Decodes a message buffer as a [`BatterySimulatorControllerEvent`].
1861    fn decode(
1862        mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
1863    ) -> Result<BatterySimulatorControllerEvent, fidl::Error> {
1864        let (bytes, _handles) = buf.split_mut();
1865        let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1866        debug_assert_eq!(tx_header.tx_id, 0);
1867        match tx_header.ordinal {
1868            _ => Err(fidl::Error::UnknownOrdinal {
1869                ordinal: tx_header.ordinal,
1870                protocol_name: <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
1871            })
1872        }
1873    }
1874}
1875
1876/// A Stream of incoming requests for fuchsia.power.battery.test/BatterySimulatorController.
1877pub struct BatterySimulatorControllerRequestStream {
1878    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1879    is_terminated: bool,
1880}
1881
1882impl std::marker::Unpin for BatterySimulatorControllerRequestStream {}
1883
1884impl futures::stream::FusedStream for BatterySimulatorControllerRequestStream {
1885    fn is_terminated(&self) -> bool {
1886        self.is_terminated
1887    }
1888}
1889
1890impl fidl::endpoints::RequestStream for BatterySimulatorControllerRequestStream {
1891    type Protocol = BatterySimulatorControllerMarker;
1892    type ControlHandle = BatterySimulatorControllerControlHandle;
1893
1894    fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
1895        Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
1896    }
1897
1898    fn control_handle(&self) -> Self::ControlHandle {
1899        BatterySimulatorControllerControlHandle { inner: self.inner.clone() }
1900    }
1901
1902    fn into_inner(
1903        self,
1904    ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
1905    {
1906        (self.inner, self.is_terminated)
1907    }
1908
1909    fn from_inner(
1910        inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
1911        is_terminated: bool,
1912    ) -> Self {
1913        Self { inner, is_terminated }
1914    }
1915}
1916
1917impl futures::Stream for BatterySimulatorControllerRequestStream {
1918    type Item = Result<BatterySimulatorControllerRequest, fidl::Error>;
1919
1920    fn poll_next(
1921        mut self: std::pin::Pin<&mut Self>,
1922        cx: &mut std::task::Context<'_>,
1923    ) -> std::task::Poll<Option<Self::Item>> {
1924        let this = &mut *self;
1925        if this.inner.check_shutdown(cx) {
1926            this.is_terminated = true;
1927            return std::task::Poll::Ready(None);
1928        }
1929        if this.is_terminated {
1930            panic!("polled BatterySimulatorControllerRequestStream after completion");
1931        }
1932        fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
1933            |bytes, handles| {
1934                match this.inner.channel().read_etc(cx, bytes, handles) {
1935                    std::task::Poll::Ready(Ok(())) => {}
1936                    std::task::Poll::Pending => return std::task::Poll::Pending,
1937                    std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
1938                        this.is_terminated = true;
1939                        return std::task::Poll::Ready(None);
1940                    }
1941                    std::task::Poll::Ready(Err(e)) => {
1942                        return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
1943                            e.into(),
1944                        ))));
1945                    }
1946                }
1947
1948                // A message has been received from the channel
1949                let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
1950
1951                std::task::Poll::Ready(Some(match header.ordinal {
1952                0x4a20d3731366aaf8 => {
1953                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
1954                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
1955                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
1956                    let control_handle = BatterySimulatorControllerControlHandle {
1957                        inner: this.inner.clone(),
1958                    };
1959                    Ok(BatterySimulatorControllerRequest::GetBatteryInfo {
1960                        responder: BatterySimulatorControllerGetBatteryInfoResponder {
1961                            control_handle: std::mem::ManuallyDrop::new(control_handle),
1962                            tx_id: header.tx_id,
1963                        },
1964                    })
1965                }
1966                0x2343eb65038c8b34 => {
1967                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1968                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetBatteryStatusRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1969                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatteryStatusRequest>(&header, _body_bytes, handles, &mut req)?;
1970                    let control_handle = BatterySimulatorControllerControlHandle {
1971                        inner: this.inner.clone(),
1972                    };
1973                    Ok(BatterySimulatorControllerRequest::SetBatteryStatus {battery_status: req.battery_status,
1974
1975                        control_handle,
1976                    })
1977                }
1978                0x79b2bf1a387acd85 => {
1979                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1980                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetChargeStatusRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1981                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetChargeStatusRequest>(&header, _body_bytes, handles, &mut req)?;
1982                    let control_handle = BatterySimulatorControllerControlHandle {
1983                        inner: this.inner.clone(),
1984                    };
1985                    Ok(BatterySimulatorControllerRequest::SetChargeStatus {charge_status: req.charge_status,
1986
1987                        control_handle,
1988                    })
1989                }
1990                0xb40433f42c33527 => {
1991                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
1992                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetChargeSourceRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
1993                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetChargeSourceRequest>(&header, _body_bytes, handles, &mut req)?;
1994                    let control_handle = BatterySimulatorControllerControlHandle {
1995                        inner: this.inner.clone(),
1996                    };
1997                    Ok(BatterySimulatorControllerRequest::SetChargeSource {charge_source: req.charge_source,
1998
1999                        control_handle,
2000                    })
2001                }
2002                0x64a9d96eb7a45a9f => {
2003                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2004                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetBatteryPercentageRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2005                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatteryPercentageRequest>(&header, _body_bytes, handles, &mut req)?;
2006                    let control_handle = BatterySimulatorControllerControlHandle {
2007                        inner: this.inner.clone(),
2008                    };
2009                    Ok(BatterySimulatorControllerRequest::SetBatteryPercentage {percent: req.percent,
2010
2011                        control_handle,
2012                    })
2013                }
2014                0x577fc3314f7a48a4 => {
2015                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2016                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetLevelStatusRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2017                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetLevelStatusRequest>(&header, _body_bytes, handles, &mut req)?;
2018                    let control_handle = BatterySimulatorControllerControlHandle {
2019                        inner: this.inner.clone(),
2020                    };
2021                    Ok(BatterySimulatorControllerRequest::SetLevelStatus {level_status: req.level_status,
2022
2023                        control_handle,
2024                    })
2025                }
2026                0x7427251c9d2a794e => {
2027                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2028                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetTimeRemainingRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2029                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetTimeRemainingRequest>(&header, _body_bytes, handles, &mut req)?;
2030                    let control_handle = BatterySimulatorControllerControlHandle {
2031                        inner: this.inner.clone(),
2032                    };
2033                    Ok(BatterySimulatorControllerRequest::SetTimeRemaining {duration: req.duration,
2034
2035                        control_handle,
2036                    })
2037                }
2038                0x75588eae6b9b67e3 => {
2039                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2040                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
2041                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2042                    let control_handle = BatterySimulatorControllerControlHandle {
2043                        inner: this.inner.clone(),
2044                    };
2045                    Ok(BatterySimulatorControllerRequest::DisconnectRealBattery {
2046                        control_handle,
2047                    })
2048                }
2049                0x4bf85cfe3476975d => {
2050                    header.validate_request_tx_id(fidl::MethodType::TwoWay)?;
2051                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
2052                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2053                    let control_handle = BatterySimulatorControllerControlHandle {
2054                        inner: this.inner.clone(),
2055                    };
2056                    Ok(BatterySimulatorControllerRequest::IsSimulating {
2057                        responder: BatterySimulatorControllerIsSimulatingResponder {
2058                            control_handle: std::mem::ManuallyDrop::new(control_handle),
2059                            tx_id: header.tx_id,
2060                        },
2061                    })
2062                }
2063                0x18306690352d9dfa => {
2064                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2065                    let mut req = fidl::new_empty!(fidl::encoding::EmptyPayload, fidl::encoding::DefaultFuchsiaResourceDialect);
2066                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<fidl::encoding::EmptyPayload>(&header, _body_bytes, handles, &mut req)?;
2067                    let control_handle = BatterySimulatorControllerControlHandle {
2068                        inner: this.inner.clone(),
2069                    };
2070                    Ok(BatterySimulatorControllerRequest::ReconnectRealBattery {
2071                        control_handle,
2072                    })
2073                }
2074                0x5462c9e9f947b8ce => {
2075                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2076                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetPresentVoltageMvRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2077                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetPresentVoltageMvRequest>(&header, _body_bytes, handles, &mut req)?;
2078                    let control_handle = BatterySimulatorControllerControlHandle {
2079                        inner: this.inner.clone(),
2080                    };
2081                    Ok(BatterySimulatorControllerRequest::SetPresentVoltageMv {voltage: req.voltage,
2082
2083                        control_handle,
2084                    })
2085                }
2086                0x38054049fe8c26ab => {
2087                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2088                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetRemainingCapacityUahRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2089                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetRemainingCapacityUahRequest>(&header, _body_bytes, handles, &mut req)?;
2090                    let control_handle = BatterySimulatorControllerControlHandle {
2091                        inner: this.inner.clone(),
2092                    };
2093                    Ok(BatterySimulatorControllerRequest::SetRemainingCapacityUah {capacity: req.capacity,
2094
2095                        control_handle,
2096                    })
2097                }
2098                0x7324672546976583 => {
2099                    header.validate_request_tx_id(fidl::MethodType::OneWay)?;
2100                    let mut req = fidl::new_empty!(BatterySimulatorControllerSetBatterySpecRequest, fidl::encoding::DefaultFuchsiaResourceDialect);
2101                    fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<BatterySimulatorControllerSetBatterySpecRequest>(&header, _body_bytes, handles, &mut req)?;
2102                    let control_handle = BatterySimulatorControllerControlHandle {
2103                        inner: this.inner.clone(),
2104                    };
2105                    Ok(BatterySimulatorControllerRequest::SetBatterySpec {spec: req.spec,
2106
2107                        control_handle,
2108                    })
2109                }
2110                _ => Err(fidl::Error::UnknownOrdinal {
2111                    ordinal: header.ordinal,
2112                    protocol_name: <BatterySimulatorControllerMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
2113                }),
2114            }))
2115            },
2116        )
2117    }
2118}
2119
2120/// Controller interface to allow modification of battery state.
2121#[derive(Debug)]
2122pub enum BatterySimulatorControllerRequest {
2123    /// Gets battery info. This should be called after
2124    /// DisconnectRealBattery
2125    GetBatteryInfo { responder: BatterySimulatorControllerGetBatteryInfoResponder },
2126    /// Sets Battery Status. This should be called after
2127    /// DisconnectRealBattery
2128    SetBatteryStatus {
2129        battery_status: fidl_fuchsia_power_battery::BatteryStatus,
2130        control_handle: BatterySimulatorControllerControlHandle,
2131    },
2132    /// Sets Charge Status. This should be called after
2133    /// DisconnectRealBattery
2134    SetChargeStatus {
2135        charge_status: fidl_fuchsia_power_battery::ChargeStatus,
2136        control_handle: BatterySimulatorControllerControlHandle,
2137    },
2138    /// Sets Charge Source. This should be called after
2139    /// DisconnectRealBattery
2140    SetChargeSource {
2141        charge_source: fidl_fuchsia_power_battery::ChargeSource,
2142        control_handle: BatterySimulatorControllerControlHandle,
2143    },
2144    /// Sets Battery Percentage. This should be called after
2145    /// DisconnectRealBattery
2146    SetBatteryPercentage { percent: f32, control_handle: BatterySimulatorControllerControlHandle },
2147    /// Sets Level Status. This should be called after
2148    /// DisconnectRealBattery
2149    SetLevelStatus {
2150        level_status: fidl_fuchsia_power_battery::LevelStatus,
2151        control_handle: BatterySimulatorControllerControlHandle,
2152    },
2153    /// Sets Time Remaining to full charge / depletion
2154    /// This should be called after DisconnectRealBattery
2155    SetTimeRemaining { duration: i64, control_handle: BatterySimulatorControllerControlHandle },
2156    /// Disconnect the real battery connection
2157    DisconnectRealBattery { control_handle: BatterySimulatorControllerControlHandle },
2158    /// Gets Simulation State
2159    IsSimulating { responder: BatterySimulatorControllerIsSimulatingResponder },
2160    /// Reconnect to the real battery
2161    /// This should be called after DisconnectRealBattery
2162    ReconnectRealBattery { control_handle: BatterySimulatorControllerControlHandle },
2163    /// Sets Present Voltage in mV. This should be called after
2164    /// DisconnectRealBattery
2165    SetPresentVoltageMv { voltage: u32, control_handle: BatterySimulatorControllerControlHandle },
2166    /// Sets Remaining Capacity Uah. This should be called after
2167    /// DisconnectRealBattery
2168    SetRemainingCapacityUah {
2169        capacity: u32,
2170        control_handle: BatterySimulatorControllerControlHandle,
2171    },
2172    /// Sets the BatterySpec
2173    SetBatterySpec {
2174        spec: fidl_fuchsia_power_battery::BatterySpec,
2175        control_handle: BatterySimulatorControllerControlHandle,
2176    },
2177}
2178
2179impl BatterySimulatorControllerRequest {
2180    #[allow(irrefutable_let_patterns)]
2181    pub fn into_get_battery_info(
2182        self,
2183    ) -> Option<(BatterySimulatorControllerGetBatteryInfoResponder)> {
2184        if let BatterySimulatorControllerRequest::GetBatteryInfo { responder } = self {
2185            Some((responder))
2186        } else {
2187            None
2188        }
2189    }
2190
2191    #[allow(irrefutable_let_patterns)]
2192    pub fn into_set_battery_status(
2193        self,
2194    ) -> Option<(fidl_fuchsia_power_battery::BatteryStatus, BatterySimulatorControllerControlHandle)>
2195    {
2196        if let BatterySimulatorControllerRequest::SetBatteryStatus {
2197            battery_status,
2198            control_handle,
2199        } = self
2200        {
2201            Some((battery_status, control_handle))
2202        } else {
2203            None
2204        }
2205    }
2206
2207    #[allow(irrefutable_let_patterns)]
2208    pub fn into_set_charge_status(
2209        self,
2210    ) -> Option<(fidl_fuchsia_power_battery::ChargeStatus, BatterySimulatorControllerControlHandle)>
2211    {
2212        if let BatterySimulatorControllerRequest::SetChargeStatus {
2213            charge_status,
2214            control_handle,
2215        } = self
2216        {
2217            Some((charge_status, control_handle))
2218        } else {
2219            None
2220        }
2221    }
2222
2223    #[allow(irrefutable_let_patterns)]
2224    pub fn into_set_charge_source(
2225        self,
2226    ) -> Option<(fidl_fuchsia_power_battery::ChargeSource, BatterySimulatorControllerControlHandle)>
2227    {
2228        if let BatterySimulatorControllerRequest::SetChargeSource {
2229            charge_source,
2230            control_handle,
2231        } = self
2232        {
2233            Some((charge_source, control_handle))
2234        } else {
2235            None
2236        }
2237    }
2238
2239    #[allow(irrefutable_let_patterns)]
2240    pub fn into_set_battery_percentage(
2241        self,
2242    ) -> Option<(f32, BatterySimulatorControllerControlHandle)> {
2243        if let BatterySimulatorControllerRequest::SetBatteryPercentage { percent, control_handle } =
2244            self
2245        {
2246            Some((percent, control_handle))
2247        } else {
2248            None
2249        }
2250    }
2251
2252    #[allow(irrefutable_let_patterns)]
2253    pub fn into_set_level_status(
2254        self,
2255    ) -> Option<(fidl_fuchsia_power_battery::LevelStatus, BatterySimulatorControllerControlHandle)>
2256    {
2257        if let BatterySimulatorControllerRequest::SetLevelStatus { level_status, control_handle } =
2258            self
2259        {
2260            Some((level_status, control_handle))
2261        } else {
2262            None
2263        }
2264    }
2265
2266    #[allow(irrefutable_let_patterns)]
2267    pub fn into_set_time_remaining(self) -> Option<(i64, BatterySimulatorControllerControlHandle)> {
2268        if let BatterySimulatorControllerRequest::SetTimeRemaining { duration, control_handle } =
2269            self
2270        {
2271            Some((duration, control_handle))
2272        } else {
2273            None
2274        }
2275    }
2276
2277    #[allow(irrefutable_let_patterns)]
2278    pub fn into_disconnect_real_battery(self) -> Option<(BatterySimulatorControllerControlHandle)> {
2279        if let BatterySimulatorControllerRequest::DisconnectRealBattery { control_handle } = self {
2280            Some((control_handle))
2281        } else {
2282            None
2283        }
2284    }
2285
2286    #[allow(irrefutable_let_patterns)]
2287    pub fn into_is_simulating(self) -> Option<(BatterySimulatorControllerIsSimulatingResponder)> {
2288        if let BatterySimulatorControllerRequest::IsSimulating { responder } = self {
2289            Some((responder))
2290        } else {
2291            None
2292        }
2293    }
2294
2295    #[allow(irrefutable_let_patterns)]
2296    pub fn into_reconnect_real_battery(self) -> Option<(BatterySimulatorControllerControlHandle)> {
2297        if let BatterySimulatorControllerRequest::ReconnectRealBattery { control_handle } = self {
2298            Some((control_handle))
2299        } else {
2300            None
2301        }
2302    }
2303
2304    #[allow(irrefutable_let_patterns)]
2305    pub fn into_set_present_voltage_mv(
2306        self,
2307    ) -> Option<(u32, BatterySimulatorControllerControlHandle)> {
2308        if let BatterySimulatorControllerRequest::SetPresentVoltageMv { voltage, control_handle } =
2309            self
2310        {
2311            Some((voltage, control_handle))
2312        } else {
2313            None
2314        }
2315    }
2316
2317    #[allow(irrefutable_let_patterns)]
2318    pub fn into_set_remaining_capacity_uah(
2319        self,
2320    ) -> Option<(u32, BatterySimulatorControllerControlHandle)> {
2321        if let BatterySimulatorControllerRequest::SetRemainingCapacityUah {
2322            capacity,
2323            control_handle,
2324        } = self
2325        {
2326            Some((capacity, control_handle))
2327        } else {
2328            None
2329        }
2330    }
2331
2332    #[allow(irrefutable_let_patterns)]
2333    pub fn into_set_battery_spec(
2334        self,
2335    ) -> Option<(fidl_fuchsia_power_battery::BatterySpec, BatterySimulatorControllerControlHandle)>
2336    {
2337        if let BatterySimulatorControllerRequest::SetBatterySpec { spec, control_handle } = self {
2338            Some((spec, control_handle))
2339        } else {
2340            None
2341        }
2342    }
2343
2344    /// Name of the method defined in FIDL
2345    pub fn method_name(&self) -> &'static str {
2346        match *self {
2347            BatterySimulatorControllerRequest::GetBatteryInfo { .. } => "get_battery_info",
2348            BatterySimulatorControllerRequest::SetBatteryStatus { .. } => "set_battery_status",
2349            BatterySimulatorControllerRequest::SetChargeStatus { .. } => "set_charge_status",
2350            BatterySimulatorControllerRequest::SetChargeSource { .. } => "set_charge_source",
2351            BatterySimulatorControllerRequest::SetBatteryPercentage { .. } => {
2352                "set_battery_percentage"
2353            }
2354            BatterySimulatorControllerRequest::SetLevelStatus { .. } => "set_level_status",
2355            BatterySimulatorControllerRequest::SetTimeRemaining { .. } => "set_time_remaining",
2356            BatterySimulatorControllerRequest::DisconnectRealBattery { .. } => {
2357                "disconnect_real_battery"
2358            }
2359            BatterySimulatorControllerRequest::IsSimulating { .. } => "is_simulating",
2360            BatterySimulatorControllerRequest::ReconnectRealBattery { .. } => {
2361                "reconnect_real_battery"
2362            }
2363            BatterySimulatorControllerRequest::SetPresentVoltageMv { .. } => {
2364                "set_present_voltage_mv"
2365            }
2366            BatterySimulatorControllerRequest::SetRemainingCapacityUah { .. } => {
2367                "set_remaining_capacity_uah"
2368            }
2369            BatterySimulatorControllerRequest::SetBatterySpec { .. } => "set_battery_spec",
2370        }
2371    }
2372}
2373
2374#[derive(Debug, Clone)]
2375pub struct BatterySimulatorControllerControlHandle {
2376    inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
2377}
2378
2379impl fidl::endpoints::ControlHandle for BatterySimulatorControllerControlHandle {
2380    fn shutdown(&self) {
2381        self.inner.shutdown()
2382    }
2383
2384    fn shutdown_with_epitaph(&self, status: zx_status::Status) {
2385        self.inner.shutdown_with_epitaph(status)
2386    }
2387
2388    fn is_closed(&self) -> bool {
2389        self.inner.channel().is_closed()
2390    }
2391    fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
2392        self.inner.channel().on_closed()
2393    }
2394
2395    #[cfg(target_os = "fuchsia")]
2396    fn signal_peer(
2397        &self,
2398        clear_mask: zx::Signals,
2399        set_mask: zx::Signals,
2400    ) -> Result<(), zx_status::Status> {
2401        use fidl::Peered;
2402        self.inner.channel().signal_peer(clear_mask, set_mask)
2403    }
2404}
2405
2406impl BatterySimulatorControllerControlHandle {}
2407
2408#[must_use = "FIDL methods require a response to be sent"]
2409#[derive(Debug)]
2410pub struct BatterySimulatorControllerGetBatteryInfoResponder {
2411    control_handle: std::mem::ManuallyDrop<BatterySimulatorControllerControlHandle>,
2412    tx_id: u32,
2413}
2414
2415/// Set the the channel to be shutdown (see [`BatterySimulatorControllerControlHandle::shutdown`])
2416/// if the responder is dropped without sending a response, so that the client
2417/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
2418impl std::ops::Drop for BatterySimulatorControllerGetBatteryInfoResponder {
2419    fn drop(&mut self) {
2420        self.control_handle.shutdown();
2421        // Safety: drops once, never accessed again
2422        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2423    }
2424}
2425
2426impl fidl::endpoints::Responder for BatterySimulatorControllerGetBatteryInfoResponder {
2427    type ControlHandle = BatterySimulatorControllerControlHandle;
2428
2429    fn control_handle(&self) -> &BatterySimulatorControllerControlHandle {
2430        &self.control_handle
2431    }
2432
2433    fn drop_without_shutdown(mut self) {
2434        // Safety: drops once, never accessed again due to mem::forget
2435        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2436        // Prevent Drop from running (which would shut down the channel)
2437        std::mem::forget(self);
2438    }
2439}
2440
2441impl BatterySimulatorControllerGetBatteryInfoResponder {
2442    /// Sends a response to the FIDL transaction.
2443    ///
2444    /// Sets the channel to shutdown if an error occurs.
2445    pub fn send(
2446        self,
2447        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
2448    ) -> Result<(), fidl::Error> {
2449        let _result = self.send_raw(info);
2450        if _result.is_err() {
2451            self.control_handle.shutdown();
2452        }
2453        self.drop_without_shutdown();
2454        _result
2455    }
2456
2457    /// Similar to "send" but does not shutdown the channel if an error occurs.
2458    pub fn send_no_shutdown_on_err(
2459        self,
2460        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
2461    ) -> Result<(), fidl::Error> {
2462        let _result = self.send_raw(info);
2463        self.drop_without_shutdown();
2464        _result
2465    }
2466
2467    fn send_raw(
2468        &self,
2469        mut info: &fidl_fuchsia_power_battery::BatteryInfo,
2470    ) -> Result<(), fidl::Error> {
2471        self.control_handle.inner.send::<BatterySimulatorControllerGetBatteryInfoResponse>(
2472            (info,),
2473            self.tx_id,
2474            0x4a20d3731366aaf8,
2475            fidl::encoding::DynamicFlags::empty(),
2476        )
2477    }
2478}
2479
2480#[must_use = "FIDL methods require a response to be sent"]
2481#[derive(Debug)]
2482pub struct BatterySimulatorControllerIsSimulatingResponder {
2483    control_handle: std::mem::ManuallyDrop<BatterySimulatorControllerControlHandle>,
2484    tx_id: u32,
2485}
2486
2487/// Set the the channel to be shutdown (see [`BatterySimulatorControllerControlHandle::shutdown`])
2488/// if the responder is dropped without sending a response, so that the client
2489/// doesn't hang. To prevent this behavior, call `drop_without_shutdown`.
2490impl std::ops::Drop for BatterySimulatorControllerIsSimulatingResponder {
2491    fn drop(&mut self) {
2492        self.control_handle.shutdown();
2493        // Safety: drops once, never accessed again
2494        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2495    }
2496}
2497
2498impl fidl::endpoints::Responder for BatterySimulatorControllerIsSimulatingResponder {
2499    type ControlHandle = BatterySimulatorControllerControlHandle;
2500
2501    fn control_handle(&self) -> &BatterySimulatorControllerControlHandle {
2502        &self.control_handle
2503    }
2504
2505    fn drop_without_shutdown(mut self) {
2506        // Safety: drops once, never accessed again due to mem::forget
2507        unsafe { std::mem::ManuallyDrop::drop(&mut self.control_handle) };
2508        // Prevent Drop from running (which would shut down the channel)
2509        std::mem::forget(self);
2510    }
2511}
2512
2513impl BatterySimulatorControllerIsSimulatingResponder {
2514    /// Sends a response to the FIDL transaction.
2515    ///
2516    /// Sets the channel to shutdown if an error occurs.
2517    pub fn send(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
2518        let _result = self.send_raw(simulation_state);
2519        if _result.is_err() {
2520            self.control_handle.shutdown();
2521        }
2522        self.drop_without_shutdown();
2523        _result
2524    }
2525
2526    /// Similar to "send" but does not shutdown the channel if an error occurs.
2527    pub fn send_no_shutdown_on_err(self, mut simulation_state: bool) -> Result<(), fidl::Error> {
2528        let _result = self.send_raw(simulation_state);
2529        self.drop_without_shutdown();
2530        _result
2531    }
2532
2533    fn send_raw(&self, mut simulation_state: bool) -> Result<(), fidl::Error> {
2534        self.control_handle.inner.send::<BatterySimulatorControllerIsSimulatingResponse>(
2535            (simulation_state,),
2536            self.tx_id,
2537            0x4bf85cfe3476975d,
2538            fidl::encoding::DynamicFlags::empty(),
2539        )
2540    }
2541}
2542
2543mod internal {
2544    use super::*;
2545}