1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
12pub struct ChargerSetChargingEnabledRequest {
13 pub enabled: bool,
14}
15
16impl fidl::Persistable for ChargerSetChargingEnabledRequest {}
17
18#[derive(Clone, Debug, PartialEq)]
19pub struct ChargerGetSpecResponse {
20 pub spec: Spec,
21}
22
23impl fidl::Persistable for ChargerGetSpecResponse {}
24
25#[derive(Clone, Debug, PartialEq)]
26pub struct ChargerGetStatusResponse {
27 pub status: Status,
28}
29
30impl fidl::Persistable for ChargerGetStatusResponse {}
31
32#[derive(Clone, Debug, Default, PartialEq)]
34pub struct Spec {
35 pub max_charge_current_ua: Option<u32>,
37 pub max_charge_voltage_uv: Option<u32>,
39 #[doc(hidden)]
40 pub __source_breaking: fidl::marker::SourceBreaking,
41}
42
43impl fidl::Persistable for Spec {}
44
45#[derive(Clone, Debug, Default, PartialEq)]
47pub struct Status {
48 pub source_status: Option<fidl_fuchsia_hardware_power_source_common::Status>,
50 #[doc(hidden)]
51 pub __source_breaking: fidl::marker::SourceBreaking,
52}
53
54impl fidl::Persistable for Status {}
55
56pub mod charger_ordinals {
57 pub const GET_SPEC: u64 = 0x4f1a5fc6df415db3;
58 pub const GET_STATUS: u64 = 0x3c67651b7ec14d5e;
59 pub const SET_CHARGING_ENABLED: u64 = 0x282b21c4fe4452db;
60 pub const WATCH: u64 = 0x5a52d95d33d7c66e;
61}
62
63mod internal {
64 use super::*;
65
66 impl fidl::encoding::ValueTypeMarker for ChargerSetChargingEnabledRequest {
67 type Borrowed<'a> = &'a Self;
68 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
69 value
70 }
71 }
72
73 unsafe impl fidl::encoding::TypeMarker for ChargerSetChargingEnabledRequest {
74 type Owned = Self;
75
76 #[inline(always)]
77 fn inline_align(_context: fidl::encoding::Context) -> usize {
78 1
79 }
80
81 #[inline(always)]
82 fn inline_size(_context: fidl::encoding::Context) -> usize {
83 1
84 }
85 }
86
87 unsafe impl<D: fidl::encoding::ResourceDialect>
88 fidl::encoding::Encode<ChargerSetChargingEnabledRequest, D>
89 for &ChargerSetChargingEnabledRequest
90 {
91 #[inline]
92 unsafe fn encode(
93 self,
94 encoder: &mut fidl::encoding::Encoder<'_, D>,
95 offset: usize,
96 _depth: fidl::encoding::Depth,
97 ) -> fidl::Result<()> {
98 encoder.debug_check_bounds::<ChargerSetChargingEnabledRequest>(offset);
99 fidl::encoding::Encode::<ChargerSetChargingEnabledRequest, D>::encode(
101 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.enabled),),
102 encoder,
103 offset,
104 _depth,
105 )
106 }
107 }
108 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
109 fidl::encoding::Encode<ChargerSetChargingEnabledRequest, D> for (T0,)
110 {
111 #[inline]
112 unsafe fn encode(
113 self,
114 encoder: &mut fidl::encoding::Encoder<'_, D>,
115 offset: usize,
116 depth: fidl::encoding::Depth,
117 ) -> fidl::Result<()> {
118 encoder.debug_check_bounds::<ChargerSetChargingEnabledRequest>(offset);
119 self.0.encode(encoder, offset + 0, depth)?;
123 Ok(())
124 }
125 }
126
127 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
128 for ChargerSetChargingEnabledRequest
129 {
130 #[inline(always)]
131 fn new_empty() -> Self {
132 Self { enabled: fidl::new_empty!(bool, D) }
133 }
134
135 #[inline]
136 unsafe fn decode(
137 &mut self,
138 decoder: &mut fidl::encoding::Decoder<'_, D>,
139 offset: usize,
140 _depth: fidl::encoding::Depth,
141 ) -> fidl::Result<()> {
142 decoder.debug_check_bounds::<Self>(offset);
143 fidl::decode!(bool, D, &mut self.enabled, decoder, offset + 0, _depth)?;
145 Ok(())
146 }
147 }
148
149 impl fidl::encoding::ValueTypeMarker for ChargerGetSpecResponse {
150 type Borrowed<'a> = &'a Self;
151 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
152 value
153 }
154 }
155
156 unsafe impl fidl::encoding::TypeMarker for ChargerGetSpecResponse {
157 type Owned = Self;
158
159 #[inline(always)]
160 fn inline_align(_context: fidl::encoding::Context) -> usize {
161 8
162 }
163
164 #[inline(always)]
165 fn inline_size(_context: fidl::encoding::Context) -> usize {
166 16
167 }
168 }
169
170 unsafe impl<D: fidl::encoding::ResourceDialect>
171 fidl::encoding::Encode<ChargerGetSpecResponse, D> for &ChargerGetSpecResponse
172 {
173 #[inline]
174 unsafe fn encode(
175 self,
176 encoder: &mut fidl::encoding::Encoder<'_, D>,
177 offset: usize,
178 _depth: fidl::encoding::Depth,
179 ) -> fidl::Result<()> {
180 encoder.debug_check_bounds::<ChargerGetSpecResponse>(offset);
181 fidl::encoding::Encode::<ChargerGetSpecResponse, D>::encode(
183 (<Spec as fidl::encoding::ValueTypeMarker>::borrow(&self.spec),),
184 encoder,
185 offset,
186 _depth,
187 )
188 }
189 }
190 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Spec, D>>
191 fidl::encoding::Encode<ChargerGetSpecResponse, D> for (T0,)
192 {
193 #[inline]
194 unsafe fn encode(
195 self,
196 encoder: &mut fidl::encoding::Encoder<'_, D>,
197 offset: usize,
198 depth: fidl::encoding::Depth,
199 ) -> fidl::Result<()> {
200 encoder.debug_check_bounds::<ChargerGetSpecResponse>(offset);
201 self.0.encode(encoder, offset + 0, depth)?;
205 Ok(())
206 }
207 }
208
209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
210 for ChargerGetSpecResponse
211 {
212 #[inline(always)]
213 fn new_empty() -> Self {
214 Self { spec: fidl::new_empty!(Spec, D) }
215 }
216
217 #[inline]
218 unsafe fn decode(
219 &mut self,
220 decoder: &mut fidl::encoding::Decoder<'_, D>,
221 offset: usize,
222 _depth: fidl::encoding::Depth,
223 ) -> fidl::Result<()> {
224 decoder.debug_check_bounds::<Self>(offset);
225 fidl::decode!(Spec, D, &mut self.spec, decoder, offset + 0, _depth)?;
227 Ok(())
228 }
229 }
230
231 impl fidl::encoding::ValueTypeMarker for ChargerGetStatusResponse {
232 type Borrowed<'a> = &'a Self;
233 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
234 value
235 }
236 }
237
238 unsafe impl fidl::encoding::TypeMarker for ChargerGetStatusResponse {
239 type Owned = Self;
240
241 #[inline(always)]
242 fn inline_align(_context: fidl::encoding::Context) -> usize {
243 8
244 }
245
246 #[inline(always)]
247 fn inline_size(_context: fidl::encoding::Context) -> usize {
248 16
249 }
250 }
251
252 unsafe impl<D: fidl::encoding::ResourceDialect>
253 fidl::encoding::Encode<ChargerGetStatusResponse, D> for &ChargerGetStatusResponse
254 {
255 #[inline]
256 unsafe fn encode(
257 self,
258 encoder: &mut fidl::encoding::Encoder<'_, D>,
259 offset: usize,
260 _depth: fidl::encoding::Depth,
261 ) -> fidl::Result<()> {
262 encoder.debug_check_bounds::<ChargerGetStatusResponse>(offset);
263 fidl::encoding::Encode::<ChargerGetStatusResponse, D>::encode(
265 (<Status as fidl::encoding::ValueTypeMarker>::borrow(&self.status),),
266 encoder,
267 offset,
268 _depth,
269 )
270 }
271 }
272 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Status, D>>
273 fidl::encoding::Encode<ChargerGetStatusResponse, D> for (T0,)
274 {
275 #[inline]
276 unsafe fn encode(
277 self,
278 encoder: &mut fidl::encoding::Encoder<'_, D>,
279 offset: usize,
280 depth: fidl::encoding::Depth,
281 ) -> fidl::Result<()> {
282 encoder.debug_check_bounds::<ChargerGetStatusResponse>(offset);
283 self.0.encode(encoder, offset + 0, depth)?;
287 Ok(())
288 }
289 }
290
291 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
292 for ChargerGetStatusResponse
293 {
294 #[inline(always)]
295 fn new_empty() -> Self {
296 Self { status: fidl::new_empty!(Status, D) }
297 }
298
299 #[inline]
300 unsafe fn decode(
301 &mut self,
302 decoder: &mut fidl::encoding::Decoder<'_, D>,
303 offset: usize,
304 _depth: fidl::encoding::Depth,
305 ) -> fidl::Result<()> {
306 decoder.debug_check_bounds::<Self>(offset);
307 fidl::decode!(Status, D, &mut self.status, decoder, offset + 0, _depth)?;
309 Ok(())
310 }
311 }
312
313 impl Spec {
314 #[inline(always)]
315 fn max_ordinal_present(&self) -> u64 {
316 if let Some(_) = self.max_charge_voltage_uv {
317 return 2;
318 }
319 if let Some(_) = self.max_charge_current_ua {
320 return 1;
321 }
322 0
323 }
324 }
325
326 impl fidl::encoding::ValueTypeMarker for Spec {
327 type Borrowed<'a> = &'a Self;
328 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
329 value
330 }
331 }
332
333 unsafe impl fidl::encoding::TypeMarker for Spec {
334 type Owned = Self;
335
336 #[inline(always)]
337 fn inline_align(_context: fidl::encoding::Context) -> usize {
338 8
339 }
340
341 #[inline(always)]
342 fn inline_size(_context: fidl::encoding::Context) -> usize {
343 16
344 }
345 }
346
347 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Spec, D> for &Spec {
348 unsafe fn encode(
349 self,
350 encoder: &mut fidl::encoding::Encoder<'_, D>,
351 offset: usize,
352 mut depth: fidl::encoding::Depth,
353 ) -> fidl::Result<()> {
354 encoder.debug_check_bounds::<Spec>(offset);
355 let max_ordinal: u64 = self.max_ordinal_present();
357 encoder.write_num(max_ordinal, offset);
358 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
359 if max_ordinal == 0 {
361 return Ok(());
362 }
363 depth.increment()?;
364 let envelope_size = 8;
365 let bytes_len = max_ordinal as usize * envelope_size;
366 #[allow(unused_variables)]
367 let offset = encoder.out_of_line_offset(bytes_len);
368 let mut _prev_end_offset: usize = 0;
369 if 1 > max_ordinal {
370 return Ok(());
371 }
372
373 let cur_offset: usize = (1 - 1) * envelope_size;
376
377 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
379
380 fidl::encoding::encode_in_envelope_optional::<u32, D>(
385 self.max_charge_current_ua
386 .as_ref()
387 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
388 encoder,
389 offset + cur_offset,
390 depth,
391 )?;
392
393 _prev_end_offset = cur_offset + envelope_size;
394 if 2 > max_ordinal {
395 return Ok(());
396 }
397
398 let cur_offset: usize = (2 - 1) * envelope_size;
401
402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
404
405 fidl::encoding::encode_in_envelope_optional::<u32, D>(
410 self.max_charge_voltage_uv
411 .as_ref()
412 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
413 encoder,
414 offset + cur_offset,
415 depth,
416 )?;
417
418 _prev_end_offset = cur_offset + envelope_size;
419
420 Ok(())
421 }
422 }
423
424 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Spec {
425 #[inline(always)]
426 fn new_empty() -> Self {
427 Self::default()
428 }
429
430 unsafe fn decode(
431 &mut self,
432 decoder: &mut fidl::encoding::Decoder<'_, D>,
433 offset: usize,
434 mut depth: fidl::encoding::Depth,
435 ) -> fidl::Result<()> {
436 decoder.debug_check_bounds::<Self>(offset);
437 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
438 None => return Err(fidl::Error::NotNullable),
439 Some(len) => len,
440 };
441 if len == 0 {
443 return Ok(());
444 };
445 depth.increment()?;
446 let envelope_size = 8;
447 let bytes_len = len * envelope_size;
448 let offset = decoder.out_of_line_offset(bytes_len)?;
449 let mut _next_ordinal_to_read = 0;
451 let mut next_offset = offset;
452 let end_offset = offset + bytes_len;
453 _next_ordinal_to_read += 1;
454 if next_offset >= end_offset {
455 return Ok(());
456 }
457
458 while _next_ordinal_to_read < 1 {
460 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
461 _next_ordinal_to_read += 1;
462 next_offset += envelope_size;
463 }
464
465 let next_out_of_line = decoder.next_out_of_line();
466 let handles_before = decoder.remaining_handles();
467 if let Some((inlined, num_bytes, num_handles)) =
468 fidl::encoding::decode_envelope_header(decoder, next_offset)?
469 {
470 let member_inline_size =
471 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
472 if inlined != (member_inline_size <= 4) {
473 return Err(fidl::Error::InvalidInlineBitInEnvelope);
474 }
475 let inner_offset;
476 let mut inner_depth = depth.clone();
477 if inlined {
478 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
479 inner_offset = next_offset;
480 } else {
481 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
482 inner_depth.increment()?;
483 }
484 let val_ref =
485 self.max_charge_current_ua.get_or_insert_with(|| fidl::new_empty!(u32, D));
486 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
487 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
488 {
489 return Err(fidl::Error::InvalidNumBytesInEnvelope);
490 }
491 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
492 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
493 }
494 }
495
496 next_offset += envelope_size;
497 _next_ordinal_to_read += 1;
498 if next_offset >= end_offset {
499 return Ok(());
500 }
501
502 while _next_ordinal_to_read < 2 {
504 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
505 _next_ordinal_to_read += 1;
506 next_offset += envelope_size;
507 }
508
509 let next_out_of_line = decoder.next_out_of_line();
510 let handles_before = decoder.remaining_handles();
511 if let Some((inlined, num_bytes, num_handles)) =
512 fidl::encoding::decode_envelope_header(decoder, next_offset)?
513 {
514 let member_inline_size =
515 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
516 if inlined != (member_inline_size <= 4) {
517 return Err(fidl::Error::InvalidInlineBitInEnvelope);
518 }
519 let inner_offset;
520 let mut inner_depth = depth.clone();
521 if inlined {
522 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
523 inner_offset = next_offset;
524 } else {
525 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
526 inner_depth.increment()?;
527 }
528 let val_ref =
529 self.max_charge_voltage_uv.get_or_insert_with(|| fidl::new_empty!(u32, D));
530 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
531 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
532 {
533 return Err(fidl::Error::InvalidNumBytesInEnvelope);
534 }
535 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
536 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
537 }
538 }
539
540 next_offset += envelope_size;
541
542 while next_offset < end_offset {
544 _next_ordinal_to_read += 1;
545 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
546 next_offset += envelope_size;
547 }
548
549 Ok(())
550 }
551 }
552
553 impl Status {
554 #[inline(always)]
555 fn max_ordinal_present(&self) -> u64 {
556 if let Some(_) = self.source_status {
557 return 1;
558 }
559 0
560 }
561 }
562
563 impl fidl::encoding::ValueTypeMarker for Status {
564 type Borrowed<'a> = &'a Self;
565 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
566 value
567 }
568 }
569
570 unsafe impl fidl::encoding::TypeMarker for Status {
571 type Owned = Self;
572
573 #[inline(always)]
574 fn inline_align(_context: fidl::encoding::Context) -> usize {
575 8
576 }
577
578 #[inline(always)]
579 fn inline_size(_context: fidl::encoding::Context) -> usize {
580 16
581 }
582 }
583
584 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Status, D> for &Status {
585 unsafe fn encode(
586 self,
587 encoder: &mut fidl::encoding::Encoder<'_, D>,
588 offset: usize,
589 mut depth: fidl::encoding::Depth,
590 ) -> fidl::Result<()> {
591 encoder.debug_check_bounds::<Status>(offset);
592 let max_ordinal: u64 = self.max_ordinal_present();
594 encoder.write_num(max_ordinal, offset);
595 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
596 if max_ordinal == 0 {
598 return Ok(());
599 }
600 depth.increment()?;
601 let envelope_size = 8;
602 let bytes_len = max_ordinal as usize * envelope_size;
603 #[allow(unused_variables)]
604 let offset = encoder.out_of_line_offset(bytes_len);
605 let mut _prev_end_offset: usize = 0;
606 if 1 > max_ordinal {
607 return Ok(());
608 }
609
610 let cur_offset: usize = (1 - 1) * envelope_size;
613
614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
616
617 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_hardware_power_source_common::Status, D>(
622 self.source_status.as_ref().map(<fidl_fuchsia_hardware_power_source_common::Status as fidl::encoding::ValueTypeMarker>::borrow),
623 encoder, offset + cur_offset, depth
624 )?;
625
626 _prev_end_offset = cur_offset + envelope_size;
627
628 Ok(())
629 }
630 }
631
632 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Status {
633 #[inline(always)]
634 fn new_empty() -> Self {
635 Self::default()
636 }
637
638 unsafe fn decode(
639 &mut self,
640 decoder: &mut fidl::encoding::Decoder<'_, D>,
641 offset: usize,
642 mut depth: fidl::encoding::Depth,
643 ) -> fidl::Result<()> {
644 decoder.debug_check_bounds::<Self>(offset);
645 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
646 None => return Err(fidl::Error::NotNullable),
647 Some(len) => len,
648 };
649 if len == 0 {
651 return Ok(());
652 };
653 depth.increment()?;
654 let envelope_size = 8;
655 let bytes_len = len * envelope_size;
656 let offset = decoder.out_of_line_offset(bytes_len)?;
657 let mut _next_ordinal_to_read = 0;
659 let mut next_offset = offset;
660 let end_offset = offset + bytes_len;
661 _next_ordinal_to_read += 1;
662 if next_offset >= end_offset {
663 return Ok(());
664 }
665
666 while _next_ordinal_to_read < 1 {
668 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
669 _next_ordinal_to_read += 1;
670 next_offset += envelope_size;
671 }
672
673 let next_out_of_line = decoder.next_out_of_line();
674 let handles_before = decoder.remaining_handles();
675 if let Some((inlined, num_bytes, num_handles)) =
676 fidl::encoding::decode_envelope_header(decoder, next_offset)?
677 {
678 let member_inline_size = <fidl_fuchsia_hardware_power_source_common::Status as fidl::encoding::TypeMarker>::inline_size(decoder.context);
679 if inlined != (member_inline_size <= 4) {
680 return Err(fidl::Error::InvalidInlineBitInEnvelope);
681 }
682 let inner_offset;
683 let mut inner_depth = depth.clone();
684 if inlined {
685 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
686 inner_offset = next_offset;
687 } else {
688 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
689 inner_depth.increment()?;
690 }
691 let val_ref = self.source_status.get_or_insert_with(|| {
692 fidl::new_empty!(fidl_fuchsia_hardware_power_source_common::Status, D)
693 });
694 fidl::decode!(
695 fidl_fuchsia_hardware_power_source_common::Status,
696 D,
697 val_ref,
698 decoder,
699 inner_offset,
700 inner_depth
701 )?;
702 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
703 {
704 return Err(fidl::Error::InvalidNumBytesInEnvelope);
705 }
706 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
707 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
708 }
709 }
710
711 next_offset += envelope_size;
712
713 while next_offset < end_offset {
715 _next_ordinal_to_read += 1;
716 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
717 next_offset += envelope_size;
718 }
719
720 Ok(())
721 }
722 }
723}