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