Skip to main content

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