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
11pub type RailName = String;
13
14pub const MAX_AVAILABLE_RAILS: u32 = 128;
16
17pub const MAX_RAILS: u32 = 32;
19
20pub const MAX_RAIL_NAME_SIZE: u32 = 256;
21
22pub const MIN_POLL_INTERVAL: i64 = 10000000;
24
25#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
26pub enum MeasurementType {
27 Average,
29 Instantaneous,
31 Cumulative,
33 #[doc(hidden)]
34 __SourceBreaking { unknown_ordinal: u32 },
35}
36
37#[macro_export]
39macro_rules! MeasurementTypeUnknown {
40 () => {
41 _
42 };
43}
44
45impl MeasurementType {
46 #[inline]
47 pub fn from_primitive(prim: u32) -> Option<Self> {
48 match prim {
49 1 => Some(Self::Average),
50 2 => Some(Self::Instantaneous),
51 3 => Some(Self::Cumulative),
52 _ => None,
53 }
54 }
55
56 #[inline]
57 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
58 match prim {
59 1 => Self::Average,
60 2 => Self::Instantaneous,
61 3 => Self::Cumulative,
62 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
63 }
64 }
65
66 #[inline]
67 pub fn unknown() -> Self {
68 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
69 }
70
71 #[inline]
72 pub const fn into_primitive(self) -> u32 {
73 match self {
74 Self::Average => 1,
75 Self::Instantaneous => 2,
76 Self::Cumulative => 3,
77 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
78 }
79 }
80
81 #[inline]
82 pub fn is_unknown(&self) -> bool {
83 match self {
84 Self::__SourceBreaking { unknown_ordinal: _ } => true,
85 _ => false,
86 }
87 }
88}
89
90#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
91pub struct OdpmDeviceSetChannelRailRequest {
92 pub channel_id: u32,
93 pub rail_name: String,
94}
95
96impl fidl::Persistable for OdpmDeviceSetChannelRailRequest {}
97
98#[derive(Clone, Debug, PartialEq)]
99pub struct OdpmDeviceGetAvailableRailsResponse {
100 pub rails: Vec<RailMetadata>,
101}
102
103impl fidl::Persistable for OdpmDeviceGetAvailableRailsResponse {}
104
105#[derive(Clone, Debug, PartialEq)]
106pub struct OdpmDeviceGetCurrentAmperesResponse {
107 pub readings: Vec<CurrentReading>,
108}
109
110impl fidl::Persistable for OdpmDeviceGetCurrentAmperesResponse {}
111
112#[derive(Clone, Debug, PartialEq)]
113pub struct OdpmDeviceGetEnergyJoulesResponse {
114 pub readings: Vec<EnergyReading>,
115}
116
117impl fidl::Persistable for OdpmDeviceGetEnergyJoulesResponse {}
118
119#[derive(Clone, Debug, PartialEq)]
120pub struct OdpmDeviceGetPowerWattsResponse {
121 pub readings: Vec<PowerReading>,
122}
123
124impl fidl::Persistable for OdpmDeviceGetPowerWattsResponse {}
125
126#[derive(Clone, Debug, PartialEq)]
127pub struct OdpmDeviceGetRailMetadataResponse {
128 pub rails: Vec<RailMetadata>,
129}
130
131impl fidl::Persistable for OdpmDeviceGetRailMetadataResponse {}
132
133#[derive(Clone, Debug, Default, PartialEq)]
134pub struct CurrentReading {
135 pub channel_id: Option<u32>,
137 pub current_ua: Option<i32>,
139 pub interval: Option<i64>,
141 pub timestamp: Option<i64>,
143 #[doc(hidden)]
144 pub __source_breaking: fidl::marker::SourceBreaking,
145}
146
147impl fidl::Persistable for CurrentReading {}
148
149#[derive(Clone, Debug, Default, PartialEq)]
150pub struct EnergyReading {
151 pub channel_id: Option<u32>,
153 pub energy_uj: Option<i64>,
155 pub interval: Option<i64>,
157 pub timestamp: Option<i64>,
159 #[doc(hidden)]
160 pub __source_breaking: fidl::marker::SourceBreaking,
161}
162
163impl fidl::Persistable for EnergyReading {}
164
165#[derive(Clone, Debug, Default, PartialEq)]
166pub struct Options {
167 pub measurement_type: Option<MeasurementType>,
170 #[doc(hidden)]
171 pub __source_breaking: fidl::marker::SourceBreaking,
172}
173
174impl fidl::Persistable for Options {}
175
176#[derive(Clone, Debug, Default, PartialEq)]
178pub struct PollingConfig {
179 pub poll_interval: Option<i64>,
181 pub polls_per_series_entry: Option<u32>,
183 #[doc(hidden)]
184 pub __source_breaking: fidl::marker::SourceBreaking,
185}
186
187impl fidl::Persistable for PollingConfig {}
188
189#[derive(Clone, Debug, Default, PartialEq)]
190pub struct PowerReading {
191 pub channel_id: Option<u32>,
193 pub power_uw: Option<i32>,
195 pub interval: Option<i64>,
197 pub timestamp: Option<i64>,
199 #[doc(hidden)]
200 pub __source_breaking: fidl::marker::SourceBreaking,
201}
202
203impl fidl::Persistable for PowerReading {}
204
205#[derive(Clone, Debug, Default, PartialEq)]
206pub struct RailMetadata {
207 pub name: Option<String>,
209 pub channel_id: Option<u32>,
212 pub schematic_name: Option<String>,
214 pub regulator_name: Option<String>,
216 pub measurement_start: Option<fidl::BootInstant>,
219 pub measurement_stop: Option<fidl::BootInstant>,
222 pub energy_uj: Option<i64>,
225 #[doc(hidden)]
226 pub __source_breaking: fidl::marker::SourceBreaking,
227}
228
229impl fidl::Persistable for RailMetadata {}
230
231pub mod odpm_device_ordinals {
232 pub const GET_RAIL_METADATA: u64 = 0x1370e2e1a26954e7;
233 pub const GET_AVAILABLE_RAILS: u64 = 0x5d2f432497df351a;
234 pub const SET_CHANNEL_RAIL: u64 = 0x59748499a188a657;
235 pub const GET_POWER_WATTS: u64 = 0x2e26ec237d170791;
236 pub const GET_CURRENT_AMPERES: u64 = 0x2efa123da8afbcec;
237 pub const GET_ENERGY_JOULES: u64 = 0x25bf6e4b27991b1c;
238 pub const SET_POLLING_CONFIG: u64 = 0x23821a66e6c6647d;
239 pub const GET_POLLING_CONFIG: u64 = 0x476f23167a254bd3;
240 pub const RESET_POLLING_CONFIG: u64 = 0x182591ccbe96a9d;
241}
242
243mod internal {
244 use super::*;
245 unsafe impl fidl::encoding::TypeMarker for MeasurementType {
246 type Owned = Self;
247
248 #[inline(always)]
249 fn inline_align(_context: fidl::encoding::Context) -> usize {
250 std::mem::align_of::<u32>()
251 }
252
253 #[inline(always)]
254 fn inline_size(_context: fidl::encoding::Context) -> usize {
255 std::mem::size_of::<u32>()
256 }
257
258 #[inline(always)]
259 fn encode_is_copy() -> bool {
260 false
261 }
262
263 #[inline(always)]
264 fn decode_is_copy() -> bool {
265 false
266 }
267 }
268
269 impl fidl::encoding::ValueTypeMarker for MeasurementType {
270 type Borrowed<'a> = Self;
271 #[inline(always)]
272 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
273 *value
274 }
275 }
276
277 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
278 for MeasurementType
279 {
280 #[inline]
281 unsafe fn encode(
282 self,
283 encoder: &mut fidl::encoding::Encoder<'_, D>,
284 offset: usize,
285 _depth: fidl::encoding::Depth,
286 ) -> fidl::Result<()> {
287 encoder.debug_check_bounds::<Self>(offset);
288 encoder.write_num(self.into_primitive(), offset);
289 Ok(())
290 }
291 }
292
293 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MeasurementType {
294 #[inline(always)]
295 fn new_empty() -> Self {
296 Self::unknown()
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 let prim = decoder.read_num::<u32>(offset);
308
309 *self = Self::from_primitive_allow_unknown(prim);
310 Ok(())
311 }
312 }
313
314 impl fidl::encoding::ValueTypeMarker for OdpmDeviceSetChannelRailRequest {
315 type Borrowed<'a> = &'a Self;
316 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
317 value
318 }
319 }
320
321 unsafe impl fidl::encoding::TypeMarker for OdpmDeviceSetChannelRailRequest {
322 type Owned = Self;
323
324 #[inline(always)]
325 fn inline_align(_context: fidl::encoding::Context) -> usize {
326 8
327 }
328
329 #[inline(always)]
330 fn inline_size(_context: fidl::encoding::Context) -> usize {
331 24
332 }
333 }
334
335 unsafe impl<D: fidl::encoding::ResourceDialect>
336 fidl::encoding::Encode<OdpmDeviceSetChannelRailRequest, D>
337 for &OdpmDeviceSetChannelRailRequest
338 {
339 #[inline]
340 unsafe fn encode(
341 self,
342 encoder: &mut fidl::encoding::Encoder<'_, D>,
343 offset: usize,
344 _depth: fidl::encoding::Depth,
345 ) -> fidl::Result<()> {
346 encoder.debug_check_bounds::<OdpmDeviceSetChannelRailRequest>(offset);
347 fidl::encoding::Encode::<OdpmDeviceSetChannelRailRequest, D>::encode(
349 (
350 <u32 as fidl::encoding::ValueTypeMarker>::borrow(&self.channel_id),
351 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow(
352 &self.rail_name,
353 ),
354 ),
355 encoder,
356 offset,
357 _depth,
358 )
359 }
360 }
361 unsafe impl<
362 D: fidl::encoding::ResourceDialect,
363 T0: fidl::encoding::Encode<u32, D>,
364 T1: fidl::encoding::Encode<fidl::encoding::BoundedString<256>, D>,
365 > fidl::encoding::Encode<OdpmDeviceSetChannelRailRequest, D> for (T0, T1)
366 {
367 #[inline]
368 unsafe fn encode(
369 self,
370 encoder: &mut fidl::encoding::Encoder<'_, D>,
371 offset: usize,
372 depth: fidl::encoding::Depth,
373 ) -> fidl::Result<()> {
374 encoder.debug_check_bounds::<OdpmDeviceSetChannelRailRequest>(offset);
375 unsafe {
378 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
379 (ptr as *mut u64).write_unaligned(0);
380 }
381 self.0.encode(encoder, offset + 0, depth)?;
383 self.1.encode(encoder, offset + 8, depth)?;
384 Ok(())
385 }
386 }
387
388 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
389 for OdpmDeviceSetChannelRailRequest
390 {
391 #[inline(always)]
392 fn new_empty() -> Self {
393 Self {
394 channel_id: fidl::new_empty!(u32, D),
395 rail_name: fidl::new_empty!(fidl::encoding::BoundedString<256>, D),
396 }
397 }
398
399 #[inline]
400 unsafe fn decode(
401 &mut self,
402 decoder: &mut fidl::encoding::Decoder<'_, D>,
403 offset: usize,
404 _depth: fidl::encoding::Depth,
405 ) -> fidl::Result<()> {
406 decoder.debug_check_bounds::<Self>(offset);
407 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
409 let padval = unsafe { (ptr as *const u64).read_unaligned() };
410 let mask = 0xffffffff00000000u64;
411 let maskedval = padval & mask;
412 if maskedval != 0 {
413 return Err(fidl::Error::NonZeroPadding {
414 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
415 });
416 }
417 fidl::decode!(u32, D, &mut self.channel_id, decoder, offset + 0, _depth)?;
418 fidl::decode!(
419 fidl::encoding::BoundedString<256>,
420 D,
421 &mut self.rail_name,
422 decoder,
423 offset + 8,
424 _depth
425 )?;
426 Ok(())
427 }
428 }
429
430 impl fidl::encoding::ValueTypeMarker for OdpmDeviceGetAvailableRailsResponse {
431 type Borrowed<'a> = &'a Self;
432 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
433 value
434 }
435 }
436
437 unsafe impl fidl::encoding::TypeMarker for OdpmDeviceGetAvailableRailsResponse {
438 type Owned = Self;
439
440 #[inline(always)]
441 fn inline_align(_context: fidl::encoding::Context) -> usize {
442 8
443 }
444
445 #[inline(always)]
446 fn inline_size(_context: fidl::encoding::Context) -> usize {
447 16
448 }
449 }
450
451 unsafe impl<D: fidl::encoding::ResourceDialect>
452 fidl::encoding::Encode<OdpmDeviceGetAvailableRailsResponse, D>
453 for &OdpmDeviceGetAvailableRailsResponse
454 {
455 #[inline]
456 unsafe fn encode(
457 self,
458 encoder: &mut fidl::encoding::Encoder<'_, D>,
459 offset: usize,
460 _depth: fidl::encoding::Depth,
461 ) -> fidl::Result<()> {
462 encoder.debug_check_bounds::<OdpmDeviceGetAvailableRailsResponse>(offset);
463 fidl::encoding::Encode::<OdpmDeviceGetAvailableRailsResponse, D>::encode(
465 (
466 <fidl::encoding::Vector<RailMetadata, 128> as fidl::encoding::ValueTypeMarker>::borrow(&self.rails),
467 ),
468 encoder, offset, _depth
469 )
470 }
471 }
472 unsafe impl<
473 D: fidl::encoding::ResourceDialect,
474 T0: fidl::encoding::Encode<fidl::encoding::Vector<RailMetadata, 128>, D>,
475 > fidl::encoding::Encode<OdpmDeviceGetAvailableRailsResponse, D> for (T0,)
476 {
477 #[inline]
478 unsafe fn encode(
479 self,
480 encoder: &mut fidl::encoding::Encoder<'_, D>,
481 offset: usize,
482 depth: fidl::encoding::Depth,
483 ) -> fidl::Result<()> {
484 encoder.debug_check_bounds::<OdpmDeviceGetAvailableRailsResponse>(offset);
485 self.0.encode(encoder, offset + 0, depth)?;
489 Ok(())
490 }
491 }
492
493 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
494 for OdpmDeviceGetAvailableRailsResponse
495 {
496 #[inline(always)]
497 fn new_empty() -> Self {
498 Self { rails: fidl::new_empty!(fidl::encoding::Vector<RailMetadata, 128>, D) }
499 }
500
501 #[inline]
502 unsafe fn decode(
503 &mut self,
504 decoder: &mut fidl::encoding::Decoder<'_, D>,
505 offset: usize,
506 _depth: fidl::encoding::Depth,
507 ) -> fidl::Result<()> {
508 decoder.debug_check_bounds::<Self>(offset);
509 fidl::decode!(fidl::encoding::Vector<RailMetadata, 128>, D, &mut self.rails, decoder, offset + 0, _depth)?;
511 Ok(())
512 }
513 }
514
515 impl fidl::encoding::ValueTypeMarker for OdpmDeviceGetCurrentAmperesResponse {
516 type Borrowed<'a> = &'a Self;
517 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
518 value
519 }
520 }
521
522 unsafe impl fidl::encoding::TypeMarker for OdpmDeviceGetCurrentAmperesResponse {
523 type Owned = Self;
524
525 #[inline(always)]
526 fn inline_align(_context: fidl::encoding::Context) -> usize {
527 8
528 }
529
530 #[inline(always)]
531 fn inline_size(_context: fidl::encoding::Context) -> usize {
532 16
533 }
534 }
535
536 unsafe impl<D: fidl::encoding::ResourceDialect>
537 fidl::encoding::Encode<OdpmDeviceGetCurrentAmperesResponse, D>
538 for &OdpmDeviceGetCurrentAmperesResponse
539 {
540 #[inline]
541 unsafe fn encode(
542 self,
543 encoder: &mut fidl::encoding::Encoder<'_, D>,
544 offset: usize,
545 _depth: fidl::encoding::Depth,
546 ) -> fidl::Result<()> {
547 encoder.debug_check_bounds::<OdpmDeviceGetCurrentAmperesResponse>(offset);
548 fidl::encoding::Encode::<OdpmDeviceGetCurrentAmperesResponse, D>::encode(
550 (
551 <fidl::encoding::Vector<CurrentReading, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.readings),
552 ),
553 encoder, offset, _depth
554 )
555 }
556 }
557 unsafe impl<
558 D: fidl::encoding::ResourceDialect,
559 T0: fidl::encoding::Encode<fidl::encoding::Vector<CurrentReading, 32>, D>,
560 > fidl::encoding::Encode<OdpmDeviceGetCurrentAmperesResponse, D> for (T0,)
561 {
562 #[inline]
563 unsafe fn encode(
564 self,
565 encoder: &mut fidl::encoding::Encoder<'_, D>,
566 offset: usize,
567 depth: fidl::encoding::Depth,
568 ) -> fidl::Result<()> {
569 encoder.debug_check_bounds::<OdpmDeviceGetCurrentAmperesResponse>(offset);
570 self.0.encode(encoder, offset + 0, depth)?;
574 Ok(())
575 }
576 }
577
578 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
579 for OdpmDeviceGetCurrentAmperesResponse
580 {
581 #[inline(always)]
582 fn new_empty() -> Self {
583 Self { readings: fidl::new_empty!(fidl::encoding::Vector<CurrentReading, 32>, D) }
584 }
585
586 #[inline]
587 unsafe fn decode(
588 &mut self,
589 decoder: &mut fidl::encoding::Decoder<'_, D>,
590 offset: usize,
591 _depth: fidl::encoding::Depth,
592 ) -> fidl::Result<()> {
593 decoder.debug_check_bounds::<Self>(offset);
594 fidl::decode!(fidl::encoding::Vector<CurrentReading, 32>, D, &mut self.readings, decoder, offset + 0, _depth)?;
596 Ok(())
597 }
598 }
599
600 impl fidl::encoding::ValueTypeMarker for OdpmDeviceGetEnergyJoulesResponse {
601 type Borrowed<'a> = &'a Self;
602 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
603 value
604 }
605 }
606
607 unsafe impl fidl::encoding::TypeMarker for OdpmDeviceGetEnergyJoulesResponse {
608 type Owned = Self;
609
610 #[inline(always)]
611 fn inline_align(_context: fidl::encoding::Context) -> usize {
612 8
613 }
614
615 #[inline(always)]
616 fn inline_size(_context: fidl::encoding::Context) -> usize {
617 16
618 }
619 }
620
621 unsafe impl<D: fidl::encoding::ResourceDialect>
622 fidl::encoding::Encode<OdpmDeviceGetEnergyJoulesResponse, D>
623 for &OdpmDeviceGetEnergyJoulesResponse
624 {
625 #[inline]
626 unsafe fn encode(
627 self,
628 encoder: &mut fidl::encoding::Encoder<'_, D>,
629 offset: usize,
630 _depth: fidl::encoding::Depth,
631 ) -> fidl::Result<()> {
632 encoder.debug_check_bounds::<OdpmDeviceGetEnergyJoulesResponse>(offset);
633 fidl::encoding::Encode::<OdpmDeviceGetEnergyJoulesResponse, D>::encode(
635 (
636 <fidl::encoding::Vector<EnergyReading, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.readings),
637 ),
638 encoder, offset, _depth
639 )
640 }
641 }
642 unsafe impl<
643 D: fidl::encoding::ResourceDialect,
644 T0: fidl::encoding::Encode<fidl::encoding::Vector<EnergyReading, 32>, D>,
645 > fidl::encoding::Encode<OdpmDeviceGetEnergyJoulesResponse, D> for (T0,)
646 {
647 #[inline]
648 unsafe fn encode(
649 self,
650 encoder: &mut fidl::encoding::Encoder<'_, D>,
651 offset: usize,
652 depth: fidl::encoding::Depth,
653 ) -> fidl::Result<()> {
654 encoder.debug_check_bounds::<OdpmDeviceGetEnergyJoulesResponse>(offset);
655 self.0.encode(encoder, offset + 0, depth)?;
659 Ok(())
660 }
661 }
662
663 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
664 for OdpmDeviceGetEnergyJoulesResponse
665 {
666 #[inline(always)]
667 fn new_empty() -> Self {
668 Self { readings: fidl::new_empty!(fidl::encoding::Vector<EnergyReading, 32>, D) }
669 }
670
671 #[inline]
672 unsafe fn decode(
673 &mut self,
674 decoder: &mut fidl::encoding::Decoder<'_, D>,
675 offset: usize,
676 _depth: fidl::encoding::Depth,
677 ) -> fidl::Result<()> {
678 decoder.debug_check_bounds::<Self>(offset);
679 fidl::decode!(fidl::encoding::Vector<EnergyReading, 32>, D, &mut self.readings, decoder, offset + 0, _depth)?;
681 Ok(())
682 }
683 }
684
685 impl fidl::encoding::ValueTypeMarker for OdpmDeviceGetPowerWattsResponse {
686 type Borrowed<'a> = &'a Self;
687 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
688 value
689 }
690 }
691
692 unsafe impl fidl::encoding::TypeMarker for OdpmDeviceGetPowerWattsResponse {
693 type Owned = Self;
694
695 #[inline(always)]
696 fn inline_align(_context: fidl::encoding::Context) -> usize {
697 8
698 }
699
700 #[inline(always)]
701 fn inline_size(_context: fidl::encoding::Context) -> usize {
702 16
703 }
704 }
705
706 unsafe impl<D: fidl::encoding::ResourceDialect>
707 fidl::encoding::Encode<OdpmDeviceGetPowerWattsResponse, D>
708 for &OdpmDeviceGetPowerWattsResponse
709 {
710 #[inline]
711 unsafe fn encode(
712 self,
713 encoder: &mut fidl::encoding::Encoder<'_, D>,
714 offset: usize,
715 _depth: fidl::encoding::Depth,
716 ) -> fidl::Result<()> {
717 encoder.debug_check_bounds::<OdpmDeviceGetPowerWattsResponse>(offset);
718 fidl::encoding::Encode::<OdpmDeviceGetPowerWattsResponse, D>::encode(
720 (
721 <fidl::encoding::Vector<PowerReading, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.readings),
722 ),
723 encoder, offset, _depth
724 )
725 }
726 }
727 unsafe impl<
728 D: fidl::encoding::ResourceDialect,
729 T0: fidl::encoding::Encode<fidl::encoding::Vector<PowerReading, 32>, D>,
730 > fidl::encoding::Encode<OdpmDeviceGetPowerWattsResponse, D> for (T0,)
731 {
732 #[inline]
733 unsafe fn encode(
734 self,
735 encoder: &mut fidl::encoding::Encoder<'_, D>,
736 offset: usize,
737 depth: fidl::encoding::Depth,
738 ) -> fidl::Result<()> {
739 encoder.debug_check_bounds::<OdpmDeviceGetPowerWattsResponse>(offset);
740 self.0.encode(encoder, offset + 0, depth)?;
744 Ok(())
745 }
746 }
747
748 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
749 for OdpmDeviceGetPowerWattsResponse
750 {
751 #[inline(always)]
752 fn new_empty() -> Self {
753 Self { readings: fidl::new_empty!(fidl::encoding::Vector<PowerReading, 32>, D) }
754 }
755
756 #[inline]
757 unsafe fn decode(
758 &mut self,
759 decoder: &mut fidl::encoding::Decoder<'_, D>,
760 offset: usize,
761 _depth: fidl::encoding::Depth,
762 ) -> fidl::Result<()> {
763 decoder.debug_check_bounds::<Self>(offset);
764 fidl::decode!(fidl::encoding::Vector<PowerReading, 32>, D, &mut self.readings, decoder, offset + 0, _depth)?;
766 Ok(())
767 }
768 }
769
770 impl fidl::encoding::ValueTypeMarker for OdpmDeviceGetRailMetadataResponse {
771 type Borrowed<'a> = &'a Self;
772 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
773 value
774 }
775 }
776
777 unsafe impl fidl::encoding::TypeMarker for OdpmDeviceGetRailMetadataResponse {
778 type Owned = Self;
779
780 #[inline(always)]
781 fn inline_align(_context: fidl::encoding::Context) -> usize {
782 8
783 }
784
785 #[inline(always)]
786 fn inline_size(_context: fidl::encoding::Context) -> usize {
787 16
788 }
789 }
790
791 unsafe impl<D: fidl::encoding::ResourceDialect>
792 fidl::encoding::Encode<OdpmDeviceGetRailMetadataResponse, D>
793 for &OdpmDeviceGetRailMetadataResponse
794 {
795 #[inline]
796 unsafe fn encode(
797 self,
798 encoder: &mut fidl::encoding::Encoder<'_, D>,
799 offset: usize,
800 _depth: fidl::encoding::Depth,
801 ) -> fidl::Result<()> {
802 encoder.debug_check_bounds::<OdpmDeviceGetRailMetadataResponse>(offset);
803 fidl::encoding::Encode::<OdpmDeviceGetRailMetadataResponse, D>::encode(
805 (
806 <fidl::encoding::Vector<RailMetadata, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.rails),
807 ),
808 encoder, offset, _depth
809 )
810 }
811 }
812 unsafe impl<
813 D: fidl::encoding::ResourceDialect,
814 T0: fidl::encoding::Encode<fidl::encoding::Vector<RailMetadata, 32>, D>,
815 > fidl::encoding::Encode<OdpmDeviceGetRailMetadataResponse, D> for (T0,)
816 {
817 #[inline]
818 unsafe fn encode(
819 self,
820 encoder: &mut fidl::encoding::Encoder<'_, D>,
821 offset: usize,
822 depth: fidl::encoding::Depth,
823 ) -> fidl::Result<()> {
824 encoder.debug_check_bounds::<OdpmDeviceGetRailMetadataResponse>(offset);
825 self.0.encode(encoder, offset + 0, depth)?;
829 Ok(())
830 }
831 }
832
833 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
834 for OdpmDeviceGetRailMetadataResponse
835 {
836 #[inline(always)]
837 fn new_empty() -> Self {
838 Self { rails: fidl::new_empty!(fidl::encoding::Vector<RailMetadata, 32>, D) }
839 }
840
841 #[inline]
842 unsafe fn decode(
843 &mut self,
844 decoder: &mut fidl::encoding::Decoder<'_, D>,
845 offset: usize,
846 _depth: fidl::encoding::Depth,
847 ) -> fidl::Result<()> {
848 decoder.debug_check_bounds::<Self>(offset);
849 fidl::decode!(fidl::encoding::Vector<RailMetadata, 32>, D, &mut self.rails, decoder, offset + 0, _depth)?;
851 Ok(())
852 }
853 }
854
855 impl CurrentReading {
856 #[inline(always)]
857 fn max_ordinal_present(&self) -> u64 {
858 if let Some(_) = self.timestamp {
859 return 4;
860 }
861 if let Some(_) = self.interval {
862 return 3;
863 }
864 if let Some(_) = self.current_ua {
865 return 2;
866 }
867 if let Some(_) = self.channel_id {
868 return 1;
869 }
870 0
871 }
872 }
873
874 impl fidl::encoding::ValueTypeMarker for CurrentReading {
875 type Borrowed<'a> = &'a Self;
876 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
877 value
878 }
879 }
880
881 unsafe impl fidl::encoding::TypeMarker for CurrentReading {
882 type Owned = Self;
883
884 #[inline(always)]
885 fn inline_align(_context: fidl::encoding::Context) -> usize {
886 8
887 }
888
889 #[inline(always)]
890 fn inline_size(_context: fidl::encoding::Context) -> usize {
891 16
892 }
893 }
894
895 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<CurrentReading, D>
896 for &CurrentReading
897 {
898 unsafe fn encode(
899 self,
900 encoder: &mut fidl::encoding::Encoder<'_, D>,
901 offset: usize,
902 mut depth: fidl::encoding::Depth,
903 ) -> fidl::Result<()> {
904 encoder.debug_check_bounds::<CurrentReading>(offset);
905 let max_ordinal: u64 = self.max_ordinal_present();
907 encoder.write_num(max_ordinal, offset);
908 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
909 if max_ordinal == 0 {
911 return Ok(());
912 }
913 depth.increment()?;
914 let envelope_size = 8;
915 let bytes_len = max_ordinal as usize * envelope_size;
916 #[allow(unused_variables)]
917 let offset = encoder.out_of_line_offset(bytes_len);
918 let mut _prev_end_offset: usize = 0;
919 if 1 > max_ordinal {
920 return Ok(());
921 }
922
923 let cur_offset: usize = (1 - 1) * envelope_size;
926
927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
929
930 fidl::encoding::encode_in_envelope_optional::<u32, D>(
935 self.channel_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
936 encoder,
937 offset + cur_offset,
938 depth,
939 )?;
940
941 _prev_end_offset = cur_offset + envelope_size;
942 if 2 > max_ordinal {
943 return Ok(());
944 }
945
946 let cur_offset: usize = (2 - 1) * envelope_size;
949
950 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
952
953 fidl::encoding::encode_in_envelope_optional::<i32, D>(
958 self.current_ua.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
959 encoder,
960 offset + cur_offset,
961 depth,
962 )?;
963
964 _prev_end_offset = cur_offset + envelope_size;
965 if 3 > max_ordinal {
966 return Ok(());
967 }
968
969 let cur_offset: usize = (3 - 1) * envelope_size;
972
973 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
975
976 fidl::encoding::encode_in_envelope_optional::<i64, D>(
981 self.interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
982 encoder,
983 offset + cur_offset,
984 depth,
985 )?;
986
987 _prev_end_offset = cur_offset + envelope_size;
988 if 4 > max_ordinal {
989 return Ok(());
990 }
991
992 let cur_offset: usize = (4 - 1) * envelope_size;
995
996 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
998
999 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1004 self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1005 encoder,
1006 offset + cur_offset,
1007 depth,
1008 )?;
1009
1010 _prev_end_offset = cur_offset + envelope_size;
1011
1012 Ok(())
1013 }
1014 }
1015
1016 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for CurrentReading {
1017 #[inline(always)]
1018 fn new_empty() -> Self {
1019 Self::default()
1020 }
1021
1022 unsafe fn decode(
1023 &mut self,
1024 decoder: &mut fidl::encoding::Decoder<'_, D>,
1025 offset: usize,
1026 mut depth: fidl::encoding::Depth,
1027 ) -> fidl::Result<()> {
1028 decoder.debug_check_bounds::<Self>(offset);
1029 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1030 None => return Err(fidl::Error::NotNullable),
1031 Some(len) => len,
1032 };
1033 if len == 0 {
1035 return Ok(());
1036 };
1037 depth.increment()?;
1038 let envelope_size = 8;
1039 let bytes_len = len * envelope_size;
1040 let offset = decoder.out_of_line_offset(bytes_len)?;
1041 let mut _next_ordinal_to_read = 0;
1043 let mut next_offset = offset;
1044 let end_offset = offset + bytes_len;
1045 _next_ordinal_to_read += 1;
1046 if next_offset >= end_offset {
1047 return Ok(());
1048 }
1049
1050 while _next_ordinal_to_read < 1 {
1052 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1053 _next_ordinal_to_read += 1;
1054 next_offset += envelope_size;
1055 }
1056
1057 let next_out_of_line = decoder.next_out_of_line();
1058 let handles_before = decoder.remaining_handles();
1059 if let Some((inlined, num_bytes, num_handles)) =
1060 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1061 {
1062 let member_inline_size =
1063 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1064 if inlined != (member_inline_size <= 4) {
1065 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1066 }
1067 let inner_offset;
1068 let mut inner_depth = depth.clone();
1069 if inlined {
1070 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1071 inner_offset = next_offset;
1072 } else {
1073 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1074 inner_depth.increment()?;
1075 }
1076 let val_ref = self.channel_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1077 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1079 {
1080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1081 }
1082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1084 }
1085 }
1086
1087 next_offset += envelope_size;
1088 _next_ordinal_to_read += 1;
1089 if next_offset >= end_offset {
1090 return Ok(());
1091 }
1092
1093 while _next_ordinal_to_read < 2 {
1095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1096 _next_ordinal_to_read += 1;
1097 next_offset += envelope_size;
1098 }
1099
1100 let next_out_of_line = decoder.next_out_of_line();
1101 let handles_before = decoder.remaining_handles();
1102 if let Some((inlined, num_bytes, num_handles)) =
1103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1104 {
1105 let member_inline_size =
1106 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1107 if inlined != (member_inline_size <= 4) {
1108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1109 }
1110 let inner_offset;
1111 let mut inner_depth = depth.clone();
1112 if inlined {
1113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1114 inner_offset = next_offset;
1115 } else {
1116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1117 inner_depth.increment()?;
1118 }
1119 let val_ref = self.current_ua.get_or_insert_with(|| fidl::new_empty!(i32, D));
1120 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
1121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1122 {
1123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1124 }
1125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1127 }
1128 }
1129
1130 next_offset += envelope_size;
1131 _next_ordinal_to_read += 1;
1132 if next_offset >= end_offset {
1133 return Ok(());
1134 }
1135
1136 while _next_ordinal_to_read < 3 {
1138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1139 _next_ordinal_to_read += 1;
1140 next_offset += envelope_size;
1141 }
1142
1143 let next_out_of_line = decoder.next_out_of_line();
1144 let handles_before = decoder.remaining_handles();
1145 if let Some((inlined, num_bytes, num_handles)) =
1146 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1147 {
1148 let member_inline_size =
1149 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1150 if inlined != (member_inline_size <= 4) {
1151 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1152 }
1153 let inner_offset;
1154 let mut inner_depth = depth.clone();
1155 if inlined {
1156 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1157 inner_offset = next_offset;
1158 } else {
1159 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1160 inner_depth.increment()?;
1161 }
1162 let val_ref = self.interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
1163 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1164 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1165 {
1166 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1167 }
1168 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1169 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1170 }
1171 }
1172
1173 next_offset += envelope_size;
1174 _next_ordinal_to_read += 1;
1175 if next_offset >= end_offset {
1176 return Ok(());
1177 }
1178
1179 while _next_ordinal_to_read < 4 {
1181 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1182 _next_ordinal_to_read += 1;
1183 next_offset += envelope_size;
1184 }
1185
1186 let next_out_of_line = decoder.next_out_of_line();
1187 let handles_before = decoder.remaining_handles();
1188 if let Some((inlined, num_bytes, num_handles)) =
1189 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1190 {
1191 let member_inline_size =
1192 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1193 if inlined != (member_inline_size <= 4) {
1194 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1195 }
1196 let inner_offset;
1197 let mut inner_depth = depth.clone();
1198 if inlined {
1199 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1200 inner_offset = next_offset;
1201 } else {
1202 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1203 inner_depth.increment()?;
1204 }
1205 let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
1206 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1207 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1208 {
1209 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1210 }
1211 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1212 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1213 }
1214 }
1215
1216 next_offset += envelope_size;
1217
1218 while next_offset < end_offset {
1220 _next_ordinal_to_read += 1;
1221 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1222 next_offset += envelope_size;
1223 }
1224
1225 Ok(())
1226 }
1227 }
1228
1229 impl EnergyReading {
1230 #[inline(always)]
1231 fn max_ordinal_present(&self) -> u64 {
1232 if let Some(_) = self.timestamp {
1233 return 4;
1234 }
1235 if let Some(_) = self.interval {
1236 return 3;
1237 }
1238 if let Some(_) = self.energy_uj {
1239 return 2;
1240 }
1241 if let Some(_) = self.channel_id {
1242 return 1;
1243 }
1244 0
1245 }
1246 }
1247
1248 impl fidl::encoding::ValueTypeMarker for EnergyReading {
1249 type Borrowed<'a> = &'a Self;
1250 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1251 value
1252 }
1253 }
1254
1255 unsafe impl fidl::encoding::TypeMarker for EnergyReading {
1256 type Owned = Self;
1257
1258 #[inline(always)]
1259 fn inline_align(_context: fidl::encoding::Context) -> usize {
1260 8
1261 }
1262
1263 #[inline(always)]
1264 fn inline_size(_context: fidl::encoding::Context) -> usize {
1265 16
1266 }
1267 }
1268
1269 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EnergyReading, D>
1270 for &EnergyReading
1271 {
1272 unsafe fn encode(
1273 self,
1274 encoder: &mut fidl::encoding::Encoder<'_, D>,
1275 offset: usize,
1276 mut depth: fidl::encoding::Depth,
1277 ) -> fidl::Result<()> {
1278 encoder.debug_check_bounds::<EnergyReading>(offset);
1279 let max_ordinal: u64 = self.max_ordinal_present();
1281 encoder.write_num(max_ordinal, offset);
1282 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1283 if max_ordinal == 0 {
1285 return Ok(());
1286 }
1287 depth.increment()?;
1288 let envelope_size = 8;
1289 let bytes_len = max_ordinal as usize * envelope_size;
1290 #[allow(unused_variables)]
1291 let offset = encoder.out_of_line_offset(bytes_len);
1292 let mut _prev_end_offset: usize = 0;
1293 if 1 > max_ordinal {
1294 return Ok(());
1295 }
1296
1297 let cur_offset: usize = (1 - 1) * envelope_size;
1300
1301 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1303
1304 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1309 self.channel_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1310 encoder,
1311 offset + cur_offset,
1312 depth,
1313 )?;
1314
1315 _prev_end_offset = cur_offset + envelope_size;
1316 if 2 > max_ordinal {
1317 return Ok(());
1318 }
1319
1320 let cur_offset: usize = (2 - 1) * envelope_size;
1323
1324 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1326
1327 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1332 self.energy_uj.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1333 encoder,
1334 offset + cur_offset,
1335 depth,
1336 )?;
1337
1338 _prev_end_offset = cur_offset + envelope_size;
1339 if 3 > max_ordinal {
1340 return Ok(());
1341 }
1342
1343 let cur_offset: usize = (3 - 1) * envelope_size;
1346
1347 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1349
1350 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1355 self.interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1356 encoder,
1357 offset + cur_offset,
1358 depth,
1359 )?;
1360
1361 _prev_end_offset = cur_offset + envelope_size;
1362 if 4 > max_ordinal {
1363 return Ok(());
1364 }
1365
1366 let cur_offset: usize = (4 - 1) * envelope_size;
1369
1370 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1372
1373 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1378 self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1379 encoder,
1380 offset + cur_offset,
1381 depth,
1382 )?;
1383
1384 _prev_end_offset = cur_offset + envelope_size;
1385
1386 Ok(())
1387 }
1388 }
1389
1390 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EnergyReading {
1391 #[inline(always)]
1392 fn new_empty() -> Self {
1393 Self::default()
1394 }
1395
1396 unsafe fn decode(
1397 &mut self,
1398 decoder: &mut fidl::encoding::Decoder<'_, D>,
1399 offset: usize,
1400 mut depth: fidl::encoding::Depth,
1401 ) -> fidl::Result<()> {
1402 decoder.debug_check_bounds::<Self>(offset);
1403 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1404 None => return Err(fidl::Error::NotNullable),
1405 Some(len) => len,
1406 };
1407 if len == 0 {
1409 return Ok(());
1410 };
1411 depth.increment()?;
1412 let envelope_size = 8;
1413 let bytes_len = len * envelope_size;
1414 let offset = decoder.out_of_line_offset(bytes_len)?;
1415 let mut _next_ordinal_to_read = 0;
1417 let mut next_offset = offset;
1418 let end_offset = offset + bytes_len;
1419 _next_ordinal_to_read += 1;
1420 if next_offset >= end_offset {
1421 return Ok(());
1422 }
1423
1424 while _next_ordinal_to_read < 1 {
1426 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1427 _next_ordinal_to_read += 1;
1428 next_offset += envelope_size;
1429 }
1430
1431 let next_out_of_line = decoder.next_out_of_line();
1432 let handles_before = decoder.remaining_handles();
1433 if let Some((inlined, num_bytes, num_handles)) =
1434 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1435 {
1436 let member_inline_size =
1437 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1438 if inlined != (member_inline_size <= 4) {
1439 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1440 }
1441 let inner_offset;
1442 let mut inner_depth = depth.clone();
1443 if inlined {
1444 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1445 inner_offset = next_offset;
1446 } else {
1447 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1448 inner_depth.increment()?;
1449 }
1450 let val_ref = self.channel_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
1451 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1452 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1453 {
1454 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1455 }
1456 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1457 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1458 }
1459 }
1460
1461 next_offset += envelope_size;
1462 _next_ordinal_to_read += 1;
1463 if next_offset >= end_offset {
1464 return Ok(());
1465 }
1466
1467 while _next_ordinal_to_read < 2 {
1469 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1470 _next_ordinal_to_read += 1;
1471 next_offset += envelope_size;
1472 }
1473
1474 let next_out_of_line = decoder.next_out_of_line();
1475 let handles_before = decoder.remaining_handles();
1476 if let Some((inlined, num_bytes, num_handles)) =
1477 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1478 {
1479 let member_inline_size =
1480 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1481 if inlined != (member_inline_size <= 4) {
1482 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1483 }
1484 let inner_offset;
1485 let mut inner_depth = depth.clone();
1486 if inlined {
1487 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1488 inner_offset = next_offset;
1489 } else {
1490 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1491 inner_depth.increment()?;
1492 }
1493 let val_ref = self.energy_uj.get_or_insert_with(|| fidl::new_empty!(i64, D));
1494 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1495 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1496 {
1497 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1498 }
1499 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1500 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1501 }
1502 }
1503
1504 next_offset += envelope_size;
1505 _next_ordinal_to_read += 1;
1506 if next_offset >= end_offset {
1507 return Ok(());
1508 }
1509
1510 while _next_ordinal_to_read < 3 {
1512 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1513 _next_ordinal_to_read += 1;
1514 next_offset += envelope_size;
1515 }
1516
1517 let next_out_of_line = decoder.next_out_of_line();
1518 let handles_before = decoder.remaining_handles();
1519 if let Some((inlined, num_bytes, num_handles)) =
1520 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1521 {
1522 let member_inline_size =
1523 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1524 if inlined != (member_inline_size <= 4) {
1525 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1526 }
1527 let inner_offset;
1528 let mut inner_depth = depth.clone();
1529 if inlined {
1530 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1531 inner_offset = next_offset;
1532 } else {
1533 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1534 inner_depth.increment()?;
1535 }
1536 let val_ref = self.interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
1537 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1538 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1539 {
1540 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1541 }
1542 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1543 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1544 }
1545 }
1546
1547 next_offset += envelope_size;
1548 _next_ordinal_to_read += 1;
1549 if next_offset >= end_offset {
1550 return Ok(());
1551 }
1552
1553 while _next_ordinal_to_read < 4 {
1555 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1556 _next_ordinal_to_read += 1;
1557 next_offset += envelope_size;
1558 }
1559
1560 let next_out_of_line = decoder.next_out_of_line();
1561 let handles_before = decoder.remaining_handles();
1562 if let Some((inlined, num_bytes, num_handles)) =
1563 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1564 {
1565 let member_inline_size =
1566 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1567 if inlined != (member_inline_size <= 4) {
1568 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1569 }
1570 let inner_offset;
1571 let mut inner_depth = depth.clone();
1572 if inlined {
1573 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1574 inner_offset = next_offset;
1575 } else {
1576 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1577 inner_depth.increment()?;
1578 }
1579 let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
1580 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1581 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1582 {
1583 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1584 }
1585 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1586 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1587 }
1588 }
1589
1590 next_offset += envelope_size;
1591
1592 while next_offset < end_offset {
1594 _next_ordinal_to_read += 1;
1595 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1596 next_offset += envelope_size;
1597 }
1598
1599 Ok(())
1600 }
1601 }
1602
1603 impl Options {
1604 #[inline(always)]
1605 fn max_ordinal_present(&self) -> u64 {
1606 if let Some(_) = self.measurement_type {
1607 return 1;
1608 }
1609 0
1610 }
1611 }
1612
1613 impl fidl::encoding::ValueTypeMarker for Options {
1614 type Borrowed<'a> = &'a Self;
1615 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1616 value
1617 }
1618 }
1619
1620 unsafe impl fidl::encoding::TypeMarker for Options {
1621 type Owned = Self;
1622
1623 #[inline(always)]
1624 fn inline_align(_context: fidl::encoding::Context) -> usize {
1625 8
1626 }
1627
1628 #[inline(always)]
1629 fn inline_size(_context: fidl::encoding::Context) -> usize {
1630 16
1631 }
1632 }
1633
1634 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Options, D> for &Options {
1635 unsafe fn encode(
1636 self,
1637 encoder: &mut fidl::encoding::Encoder<'_, D>,
1638 offset: usize,
1639 mut depth: fidl::encoding::Depth,
1640 ) -> fidl::Result<()> {
1641 encoder.debug_check_bounds::<Options>(offset);
1642 let max_ordinal: u64 = self.max_ordinal_present();
1644 encoder.write_num(max_ordinal, offset);
1645 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1646 if max_ordinal == 0 {
1648 return Ok(());
1649 }
1650 depth.increment()?;
1651 let envelope_size = 8;
1652 let bytes_len = max_ordinal as usize * envelope_size;
1653 #[allow(unused_variables)]
1654 let offset = encoder.out_of_line_offset(bytes_len);
1655 let mut _prev_end_offset: usize = 0;
1656 if 1 > max_ordinal {
1657 return Ok(());
1658 }
1659
1660 let cur_offset: usize = (1 - 1) * envelope_size;
1663
1664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1666
1667 fidl::encoding::encode_in_envelope_optional::<MeasurementType, D>(
1672 self.measurement_type
1673 .as_ref()
1674 .map(<MeasurementType as fidl::encoding::ValueTypeMarker>::borrow),
1675 encoder,
1676 offset + cur_offset,
1677 depth,
1678 )?;
1679
1680 _prev_end_offset = cur_offset + envelope_size;
1681
1682 Ok(())
1683 }
1684 }
1685
1686 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Options {
1687 #[inline(always)]
1688 fn new_empty() -> Self {
1689 Self::default()
1690 }
1691
1692 unsafe fn decode(
1693 &mut self,
1694 decoder: &mut fidl::encoding::Decoder<'_, D>,
1695 offset: usize,
1696 mut depth: fidl::encoding::Depth,
1697 ) -> fidl::Result<()> {
1698 decoder.debug_check_bounds::<Self>(offset);
1699 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1700 None => return Err(fidl::Error::NotNullable),
1701 Some(len) => len,
1702 };
1703 if len == 0 {
1705 return Ok(());
1706 };
1707 depth.increment()?;
1708 let envelope_size = 8;
1709 let bytes_len = len * envelope_size;
1710 let offset = decoder.out_of_line_offset(bytes_len)?;
1711 let mut _next_ordinal_to_read = 0;
1713 let mut next_offset = offset;
1714 let end_offset = offset + bytes_len;
1715 _next_ordinal_to_read += 1;
1716 if next_offset >= end_offset {
1717 return Ok(());
1718 }
1719
1720 while _next_ordinal_to_read < 1 {
1722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1723 _next_ordinal_to_read += 1;
1724 next_offset += envelope_size;
1725 }
1726
1727 let next_out_of_line = decoder.next_out_of_line();
1728 let handles_before = decoder.remaining_handles();
1729 if let Some((inlined, num_bytes, num_handles)) =
1730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1731 {
1732 let member_inline_size =
1733 <MeasurementType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1734 if inlined != (member_inline_size <= 4) {
1735 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1736 }
1737 let inner_offset;
1738 let mut inner_depth = depth.clone();
1739 if inlined {
1740 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1741 inner_offset = next_offset;
1742 } else {
1743 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1744 inner_depth.increment()?;
1745 }
1746 let val_ref = self
1747 .measurement_type
1748 .get_or_insert_with(|| fidl::new_empty!(MeasurementType, D));
1749 fidl::decode!(MeasurementType, D, val_ref, decoder, inner_offset, inner_depth)?;
1750 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1751 {
1752 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1753 }
1754 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1755 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1756 }
1757 }
1758
1759 next_offset += envelope_size;
1760
1761 while next_offset < end_offset {
1763 _next_ordinal_to_read += 1;
1764 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1765 next_offset += envelope_size;
1766 }
1767
1768 Ok(())
1769 }
1770 }
1771
1772 impl PollingConfig {
1773 #[inline(always)]
1774 fn max_ordinal_present(&self) -> u64 {
1775 if let Some(_) = self.polls_per_series_entry {
1776 return 2;
1777 }
1778 if let Some(_) = self.poll_interval {
1779 return 1;
1780 }
1781 0
1782 }
1783 }
1784
1785 impl fidl::encoding::ValueTypeMarker for PollingConfig {
1786 type Borrowed<'a> = &'a Self;
1787 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1788 value
1789 }
1790 }
1791
1792 unsafe impl fidl::encoding::TypeMarker for PollingConfig {
1793 type Owned = Self;
1794
1795 #[inline(always)]
1796 fn inline_align(_context: fidl::encoding::Context) -> usize {
1797 8
1798 }
1799
1800 #[inline(always)]
1801 fn inline_size(_context: fidl::encoding::Context) -> usize {
1802 16
1803 }
1804 }
1805
1806 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PollingConfig, D>
1807 for &PollingConfig
1808 {
1809 unsafe fn encode(
1810 self,
1811 encoder: &mut fidl::encoding::Encoder<'_, D>,
1812 offset: usize,
1813 mut depth: fidl::encoding::Depth,
1814 ) -> fidl::Result<()> {
1815 encoder.debug_check_bounds::<PollingConfig>(offset);
1816 let max_ordinal: u64 = self.max_ordinal_present();
1818 encoder.write_num(max_ordinal, offset);
1819 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1820 if max_ordinal == 0 {
1822 return Ok(());
1823 }
1824 depth.increment()?;
1825 let envelope_size = 8;
1826 let bytes_len = max_ordinal as usize * envelope_size;
1827 #[allow(unused_variables)]
1828 let offset = encoder.out_of_line_offset(bytes_len);
1829 let mut _prev_end_offset: usize = 0;
1830 if 1 > max_ordinal {
1831 return Ok(());
1832 }
1833
1834 let cur_offset: usize = (1 - 1) * envelope_size;
1837
1838 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1840
1841 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1846 self.poll_interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1847 encoder,
1848 offset + cur_offset,
1849 depth,
1850 )?;
1851
1852 _prev_end_offset = cur_offset + envelope_size;
1853 if 2 > max_ordinal {
1854 return Ok(());
1855 }
1856
1857 let cur_offset: usize = (2 - 1) * envelope_size;
1860
1861 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1863
1864 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1869 self.polls_per_series_entry
1870 .as_ref()
1871 .map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1872 encoder,
1873 offset + cur_offset,
1874 depth,
1875 )?;
1876
1877 _prev_end_offset = cur_offset + envelope_size;
1878
1879 Ok(())
1880 }
1881 }
1882
1883 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PollingConfig {
1884 #[inline(always)]
1885 fn new_empty() -> Self {
1886 Self::default()
1887 }
1888
1889 unsafe fn decode(
1890 &mut self,
1891 decoder: &mut fidl::encoding::Decoder<'_, D>,
1892 offset: usize,
1893 mut depth: fidl::encoding::Depth,
1894 ) -> fidl::Result<()> {
1895 decoder.debug_check_bounds::<Self>(offset);
1896 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1897 None => return Err(fidl::Error::NotNullable),
1898 Some(len) => len,
1899 };
1900 if len == 0 {
1902 return Ok(());
1903 };
1904 depth.increment()?;
1905 let envelope_size = 8;
1906 let bytes_len = len * envelope_size;
1907 let offset = decoder.out_of_line_offset(bytes_len)?;
1908 let mut _next_ordinal_to_read = 0;
1910 let mut next_offset = offset;
1911 let end_offset = offset + bytes_len;
1912 _next_ordinal_to_read += 1;
1913 if next_offset >= end_offset {
1914 return Ok(());
1915 }
1916
1917 while _next_ordinal_to_read < 1 {
1919 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1920 _next_ordinal_to_read += 1;
1921 next_offset += envelope_size;
1922 }
1923
1924 let next_out_of_line = decoder.next_out_of_line();
1925 let handles_before = decoder.remaining_handles();
1926 if let Some((inlined, num_bytes, num_handles)) =
1927 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1928 {
1929 let member_inline_size =
1930 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1931 if inlined != (member_inline_size <= 4) {
1932 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1933 }
1934 let inner_offset;
1935 let mut inner_depth = depth.clone();
1936 if inlined {
1937 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1938 inner_offset = next_offset;
1939 } else {
1940 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1941 inner_depth.increment()?;
1942 }
1943 let val_ref = self.poll_interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
1944 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
1945 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1946 {
1947 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1948 }
1949 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1950 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1951 }
1952 }
1953
1954 next_offset += envelope_size;
1955 _next_ordinal_to_read += 1;
1956 if next_offset >= end_offset {
1957 return Ok(());
1958 }
1959
1960 while _next_ordinal_to_read < 2 {
1962 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1963 _next_ordinal_to_read += 1;
1964 next_offset += envelope_size;
1965 }
1966
1967 let next_out_of_line = decoder.next_out_of_line();
1968 let handles_before = decoder.remaining_handles();
1969 if let Some((inlined, num_bytes, num_handles)) =
1970 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1971 {
1972 let member_inline_size =
1973 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1974 if inlined != (member_inline_size <= 4) {
1975 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1976 }
1977 let inner_offset;
1978 let mut inner_depth = depth.clone();
1979 if inlined {
1980 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1981 inner_offset = next_offset;
1982 } else {
1983 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1984 inner_depth.increment()?;
1985 }
1986 let val_ref =
1987 self.polls_per_series_entry.get_or_insert_with(|| fidl::new_empty!(u32, D));
1988 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
1989 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1990 {
1991 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1992 }
1993 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1994 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1995 }
1996 }
1997
1998 next_offset += envelope_size;
1999
2000 while next_offset < end_offset {
2002 _next_ordinal_to_read += 1;
2003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2004 next_offset += envelope_size;
2005 }
2006
2007 Ok(())
2008 }
2009 }
2010
2011 impl PowerReading {
2012 #[inline(always)]
2013 fn max_ordinal_present(&self) -> u64 {
2014 if let Some(_) = self.timestamp {
2015 return 4;
2016 }
2017 if let Some(_) = self.interval {
2018 return 3;
2019 }
2020 if let Some(_) = self.power_uw {
2021 return 2;
2022 }
2023 if let Some(_) = self.channel_id {
2024 return 1;
2025 }
2026 0
2027 }
2028 }
2029
2030 impl fidl::encoding::ValueTypeMarker for PowerReading {
2031 type Borrowed<'a> = &'a Self;
2032 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2033 value
2034 }
2035 }
2036
2037 unsafe impl fidl::encoding::TypeMarker for PowerReading {
2038 type Owned = Self;
2039
2040 #[inline(always)]
2041 fn inline_align(_context: fidl::encoding::Context) -> usize {
2042 8
2043 }
2044
2045 #[inline(always)]
2046 fn inline_size(_context: fidl::encoding::Context) -> usize {
2047 16
2048 }
2049 }
2050
2051 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<PowerReading, D>
2052 for &PowerReading
2053 {
2054 unsafe fn encode(
2055 self,
2056 encoder: &mut fidl::encoding::Encoder<'_, D>,
2057 offset: usize,
2058 mut depth: fidl::encoding::Depth,
2059 ) -> fidl::Result<()> {
2060 encoder.debug_check_bounds::<PowerReading>(offset);
2061 let max_ordinal: u64 = self.max_ordinal_present();
2063 encoder.write_num(max_ordinal, offset);
2064 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2065 if max_ordinal == 0 {
2067 return Ok(());
2068 }
2069 depth.increment()?;
2070 let envelope_size = 8;
2071 let bytes_len = max_ordinal as usize * envelope_size;
2072 #[allow(unused_variables)]
2073 let offset = encoder.out_of_line_offset(bytes_len);
2074 let mut _prev_end_offset: usize = 0;
2075 if 1 > max_ordinal {
2076 return Ok(());
2077 }
2078
2079 let cur_offset: usize = (1 - 1) * envelope_size;
2082
2083 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2085
2086 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2091 self.channel_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2092 encoder,
2093 offset + cur_offset,
2094 depth,
2095 )?;
2096
2097 _prev_end_offset = cur_offset + envelope_size;
2098 if 2 > max_ordinal {
2099 return Ok(());
2100 }
2101
2102 let cur_offset: usize = (2 - 1) * envelope_size;
2105
2106 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2108
2109 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2114 self.power_uw.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2115 encoder,
2116 offset + cur_offset,
2117 depth,
2118 )?;
2119
2120 _prev_end_offset = cur_offset + envelope_size;
2121 if 3 > max_ordinal {
2122 return Ok(());
2123 }
2124
2125 let cur_offset: usize = (3 - 1) * envelope_size;
2128
2129 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2131
2132 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2137 self.interval.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2138 encoder,
2139 offset + cur_offset,
2140 depth,
2141 )?;
2142
2143 _prev_end_offset = cur_offset + envelope_size;
2144 if 4 > max_ordinal {
2145 return Ok(());
2146 }
2147
2148 let cur_offset: usize = (4 - 1) * envelope_size;
2151
2152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2154
2155 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2160 self.timestamp.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2161 encoder,
2162 offset + cur_offset,
2163 depth,
2164 )?;
2165
2166 _prev_end_offset = cur_offset + envelope_size;
2167
2168 Ok(())
2169 }
2170 }
2171
2172 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerReading {
2173 #[inline(always)]
2174 fn new_empty() -> Self {
2175 Self::default()
2176 }
2177
2178 unsafe fn decode(
2179 &mut self,
2180 decoder: &mut fidl::encoding::Decoder<'_, D>,
2181 offset: usize,
2182 mut depth: fidl::encoding::Depth,
2183 ) -> fidl::Result<()> {
2184 decoder.debug_check_bounds::<Self>(offset);
2185 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2186 None => return Err(fidl::Error::NotNullable),
2187 Some(len) => len,
2188 };
2189 if len == 0 {
2191 return Ok(());
2192 };
2193 depth.increment()?;
2194 let envelope_size = 8;
2195 let bytes_len = len * envelope_size;
2196 let offset = decoder.out_of_line_offset(bytes_len)?;
2197 let mut _next_ordinal_to_read = 0;
2199 let mut next_offset = offset;
2200 let end_offset = offset + bytes_len;
2201 _next_ordinal_to_read += 1;
2202 if next_offset >= end_offset {
2203 return Ok(());
2204 }
2205
2206 while _next_ordinal_to_read < 1 {
2208 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2209 _next_ordinal_to_read += 1;
2210 next_offset += envelope_size;
2211 }
2212
2213 let next_out_of_line = decoder.next_out_of_line();
2214 let handles_before = decoder.remaining_handles();
2215 if let Some((inlined, num_bytes, num_handles)) =
2216 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2217 {
2218 let member_inline_size =
2219 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2220 if inlined != (member_inline_size <= 4) {
2221 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2222 }
2223 let inner_offset;
2224 let mut inner_depth = depth.clone();
2225 if inlined {
2226 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2227 inner_offset = next_offset;
2228 } else {
2229 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2230 inner_depth.increment()?;
2231 }
2232 let val_ref = self.channel_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2233 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2234 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2235 {
2236 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2237 }
2238 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2239 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2240 }
2241 }
2242
2243 next_offset += envelope_size;
2244 _next_ordinal_to_read += 1;
2245 if next_offset >= end_offset {
2246 return Ok(());
2247 }
2248
2249 while _next_ordinal_to_read < 2 {
2251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2252 _next_ordinal_to_read += 1;
2253 next_offset += envelope_size;
2254 }
2255
2256 let next_out_of_line = decoder.next_out_of_line();
2257 let handles_before = decoder.remaining_handles();
2258 if let Some((inlined, num_bytes, num_handles)) =
2259 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2260 {
2261 let member_inline_size =
2262 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2263 if inlined != (member_inline_size <= 4) {
2264 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2265 }
2266 let inner_offset;
2267 let mut inner_depth = depth.clone();
2268 if inlined {
2269 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2270 inner_offset = next_offset;
2271 } else {
2272 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2273 inner_depth.increment()?;
2274 }
2275 let val_ref = self.power_uw.get_or_insert_with(|| fidl::new_empty!(i32, D));
2276 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2277 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2278 {
2279 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2280 }
2281 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2282 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2283 }
2284 }
2285
2286 next_offset += envelope_size;
2287 _next_ordinal_to_read += 1;
2288 if next_offset >= end_offset {
2289 return Ok(());
2290 }
2291
2292 while _next_ordinal_to_read < 3 {
2294 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2295 _next_ordinal_to_read += 1;
2296 next_offset += envelope_size;
2297 }
2298
2299 let next_out_of_line = decoder.next_out_of_line();
2300 let handles_before = decoder.remaining_handles();
2301 if let Some((inlined, num_bytes, num_handles)) =
2302 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2303 {
2304 let member_inline_size =
2305 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2306 if inlined != (member_inline_size <= 4) {
2307 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2308 }
2309 let inner_offset;
2310 let mut inner_depth = depth.clone();
2311 if inlined {
2312 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2313 inner_offset = next_offset;
2314 } else {
2315 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2316 inner_depth.increment()?;
2317 }
2318 let val_ref = self.interval.get_or_insert_with(|| fidl::new_empty!(i64, D));
2319 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2320 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2321 {
2322 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2323 }
2324 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2325 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2326 }
2327 }
2328
2329 next_offset += envelope_size;
2330 _next_ordinal_to_read += 1;
2331 if next_offset >= end_offset {
2332 return Ok(());
2333 }
2334
2335 while _next_ordinal_to_read < 4 {
2337 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2338 _next_ordinal_to_read += 1;
2339 next_offset += envelope_size;
2340 }
2341
2342 let next_out_of_line = decoder.next_out_of_line();
2343 let handles_before = decoder.remaining_handles();
2344 if let Some((inlined, num_bytes, num_handles)) =
2345 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2346 {
2347 let member_inline_size =
2348 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2349 if inlined != (member_inline_size <= 4) {
2350 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2351 }
2352 let inner_offset;
2353 let mut inner_depth = depth.clone();
2354 if inlined {
2355 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2356 inner_offset = next_offset;
2357 } else {
2358 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2359 inner_depth.increment()?;
2360 }
2361 let val_ref = self.timestamp.get_or_insert_with(|| fidl::new_empty!(i64, D));
2362 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2363 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2364 {
2365 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2366 }
2367 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2368 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2369 }
2370 }
2371
2372 next_offset += envelope_size;
2373
2374 while next_offset < end_offset {
2376 _next_ordinal_to_read += 1;
2377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2378 next_offset += envelope_size;
2379 }
2380
2381 Ok(())
2382 }
2383 }
2384
2385 impl RailMetadata {
2386 #[inline(always)]
2387 fn max_ordinal_present(&self) -> u64 {
2388 if let Some(_) = self.energy_uj {
2389 return 7;
2390 }
2391 if let Some(_) = self.measurement_stop {
2392 return 6;
2393 }
2394 if let Some(_) = self.measurement_start {
2395 return 5;
2396 }
2397 if let Some(_) = self.regulator_name {
2398 return 4;
2399 }
2400 if let Some(_) = self.schematic_name {
2401 return 3;
2402 }
2403 if let Some(_) = self.channel_id {
2404 return 2;
2405 }
2406 if let Some(_) = self.name {
2407 return 1;
2408 }
2409 0
2410 }
2411 }
2412
2413 impl fidl::encoding::ValueTypeMarker for RailMetadata {
2414 type Borrowed<'a> = &'a Self;
2415 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2416 value
2417 }
2418 }
2419
2420 unsafe impl fidl::encoding::TypeMarker for RailMetadata {
2421 type Owned = Self;
2422
2423 #[inline(always)]
2424 fn inline_align(_context: fidl::encoding::Context) -> usize {
2425 8
2426 }
2427
2428 #[inline(always)]
2429 fn inline_size(_context: fidl::encoding::Context) -> usize {
2430 16
2431 }
2432 }
2433
2434 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RailMetadata, D>
2435 for &RailMetadata
2436 {
2437 unsafe fn encode(
2438 self,
2439 encoder: &mut fidl::encoding::Encoder<'_, D>,
2440 offset: usize,
2441 mut depth: fidl::encoding::Depth,
2442 ) -> fidl::Result<()> {
2443 encoder.debug_check_bounds::<RailMetadata>(offset);
2444 let max_ordinal: u64 = self.max_ordinal_present();
2446 encoder.write_num(max_ordinal, offset);
2447 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2448 if max_ordinal == 0 {
2450 return Ok(());
2451 }
2452 depth.increment()?;
2453 let envelope_size = 8;
2454 let bytes_len = max_ordinal as usize * envelope_size;
2455 #[allow(unused_variables)]
2456 let offset = encoder.out_of_line_offset(bytes_len);
2457 let mut _prev_end_offset: usize = 0;
2458 if 1 > max_ordinal {
2459 return Ok(());
2460 }
2461
2462 let cur_offset: usize = (1 - 1) * envelope_size;
2465
2466 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2468
2469 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
2474 self.name.as_ref().map(
2475 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
2476 ),
2477 encoder,
2478 offset + cur_offset,
2479 depth,
2480 )?;
2481
2482 _prev_end_offset = cur_offset + envelope_size;
2483 if 2 > max_ordinal {
2484 return Ok(());
2485 }
2486
2487 let cur_offset: usize = (2 - 1) * envelope_size;
2490
2491 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2493
2494 fidl::encoding::encode_in_envelope_optional::<u32, D>(
2499 self.channel_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
2500 encoder,
2501 offset + cur_offset,
2502 depth,
2503 )?;
2504
2505 _prev_end_offset = cur_offset + envelope_size;
2506 if 3 > max_ordinal {
2507 return Ok(());
2508 }
2509
2510 let cur_offset: usize = (3 - 1) * envelope_size;
2513
2514 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2516
2517 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
2522 self.schematic_name.as_ref().map(
2523 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
2524 ),
2525 encoder,
2526 offset + cur_offset,
2527 depth,
2528 )?;
2529
2530 _prev_end_offset = cur_offset + envelope_size;
2531 if 4 > max_ordinal {
2532 return Ok(());
2533 }
2534
2535 let cur_offset: usize = (4 - 1) * envelope_size;
2538
2539 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2541
2542 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
2547 self.regulator_name.as_ref().map(
2548 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
2549 ),
2550 encoder,
2551 offset + cur_offset,
2552 depth,
2553 )?;
2554
2555 _prev_end_offset = cur_offset + envelope_size;
2556 if 5 > max_ordinal {
2557 return Ok(());
2558 }
2559
2560 let cur_offset: usize = (5 - 1) * envelope_size;
2563
2564 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2566
2567 fidl::encoding::encode_in_envelope_optional::<fidl::BootInstant, D>(
2572 self.measurement_start
2573 .as_ref()
2574 .map(<fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow),
2575 encoder,
2576 offset + cur_offset,
2577 depth,
2578 )?;
2579
2580 _prev_end_offset = cur_offset + envelope_size;
2581 if 6 > max_ordinal {
2582 return Ok(());
2583 }
2584
2585 let cur_offset: usize = (6 - 1) * envelope_size;
2588
2589 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2591
2592 fidl::encoding::encode_in_envelope_optional::<fidl::BootInstant, D>(
2597 self.measurement_stop
2598 .as_ref()
2599 .map(<fidl::BootInstant as fidl::encoding::ValueTypeMarker>::borrow),
2600 encoder,
2601 offset + cur_offset,
2602 depth,
2603 )?;
2604
2605 _prev_end_offset = cur_offset + envelope_size;
2606 if 7 > max_ordinal {
2607 return Ok(());
2608 }
2609
2610 let cur_offset: usize = (7 - 1) * envelope_size;
2613
2614 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2616
2617 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2622 self.energy_uj.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2623 encoder,
2624 offset + cur_offset,
2625 depth,
2626 )?;
2627
2628 _prev_end_offset = cur_offset + envelope_size;
2629
2630 Ok(())
2631 }
2632 }
2633
2634 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RailMetadata {
2635 #[inline(always)]
2636 fn new_empty() -> Self {
2637 Self::default()
2638 }
2639
2640 unsafe fn decode(
2641 &mut self,
2642 decoder: &mut fidl::encoding::Decoder<'_, D>,
2643 offset: usize,
2644 mut depth: fidl::encoding::Depth,
2645 ) -> fidl::Result<()> {
2646 decoder.debug_check_bounds::<Self>(offset);
2647 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2648 None => return Err(fidl::Error::NotNullable),
2649 Some(len) => len,
2650 };
2651 if len == 0 {
2653 return Ok(());
2654 };
2655 depth.increment()?;
2656 let envelope_size = 8;
2657 let bytes_len = len * envelope_size;
2658 let offset = decoder.out_of_line_offset(bytes_len)?;
2659 let mut _next_ordinal_to_read = 0;
2661 let mut next_offset = offset;
2662 let end_offset = offset + bytes_len;
2663 _next_ordinal_to_read += 1;
2664 if next_offset >= end_offset {
2665 return Ok(());
2666 }
2667
2668 while _next_ordinal_to_read < 1 {
2670 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2671 _next_ordinal_to_read += 1;
2672 next_offset += envelope_size;
2673 }
2674
2675 let next_out_of_line = decoder.next_out_of_line();
2676 let handles_before = decoder.remaining_handles();
2677 if let Some((inlined, num_bytes, num_handles)) =
2678 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2679 {
2680 let member_inline_size =
2681 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
2682 decoder.context,
2683 );
2684 if inlined != (member_inline_size <= 4) {
2685 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2686 }
2687 let inner_offset;
2688 let mut inner_depth = depth.clone();
2689 if inlined {
2690 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2691 inner_offset = next_offset;
2692 } else {
2693 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2694 inner_depth.increment()?;
2695 }
2696 let val_ref = self
2697 .name
2698 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
2699 fidl::decode!(
2700 fidl::encoding::BoundedString<256>,
2701 D,
2702 val_ref,
2703 decoder,
2704 inner_offset,
2705 inner_depth
2706 )?;
2707 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2708 {
2709 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2710 }
2711 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2712 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2713 }
2714 }
2715
2716 next_offset += envelope_size;
2717 _next_ordinal_to_read += 1;
2718 if next_offset >= end_offset {
2719 return Ok(());
2720 }
2721
2722 while _next_ordinal_to_read < 2 {
2724 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2725 _next_ordinal_to_read += 1;
2726 next_offset += envelope_size;
2727 }
2728
2729 let next_out_of_line = decoder.next_out_of_line();
2730 let handles_before = decoder.remaining_handles();
2731 if let Some((inlined, num_bytes, num_handles)) =
2732 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2733 {
2734 let member_inline_size =
2735 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2736 if inlined != (member_inline_size <= 4) {
2737 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2738 }
2739 let inner_offset;
2740 let mut inner_depth = depth.clone();
2741 if inlined {
2742 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2743 inner_offset = next_offset;
2744 } else {
2745 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2746 inner_depth.increment()?;
2747 }
2748 let val_ref = self.channel_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2749 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2750 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2751 {
2752 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2753 }
2754 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2755 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2756 }
2757 }
2758
2759 next_offset += envelope_size;
2760 _next_ordinal_to_read += 1;
2761 if next_offset >= end_offset {
2762 return Ok(());
2763 }
2764
2765 while _next_ordinal_to_read < 3 {
2767 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2768 _next_ordinal_to_read += 1;
2769 next_offset += envelope_size;
2770 }
2771
2772 let next_out_of_line = decoder.next_out_of_line();
2773 let handles_before = decoder.remaining_handles();
2774 if let Some((inlined, num_bytes, num_handles)) =
2775 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2776 {
2777 let member_inline_size =
2778 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
2779 decoder.context,
2780 );
2781 if inlined != (member_inline_size <= 4) {
2782 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2783 }
2784 let inner_offset;
2785 let mut inner_depth = depth.clone();
2786 if inlined {
2787 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2788 inner_offset = next_offset;
2789 } else {
2790 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2791 inner_depth.increment()?;
2792 }
2793 let val_ref = self
2794 .schematic_name
2795 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
2796 fidl::decode!(
2797 fidl::encoding::BoundedString<256>,
2798 D,
2799 val_ref,
2800 decoder,
2801 inner_offset,
2802 inner_depth
2803 )?;
2804 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2805 {
2806 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2807 }
2808 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2809 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2810 }
2811 }
2812
2813 next_offset += envelope_size;
2814 _next_ordinal_to_read += 1;
2815 if next_offset >= end_offset {
2816 return Ok(());
2817 }
2818
2819 while _next_ordinal_to_read < 4 {
2821 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2822 _next_ordinal_to_read += 1;
2823 next_offset += envelope_size;
2824 }
2825
2826 let next_out_of_line = decoder.next_out_of_line();
2827 let handles_before = decoder.remaining_handles();
2828 if let Some((inlined, num_bytes, num_handles)) =
2829 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2830 {
2831 let member_inline_size =
2832 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
2833 decoder.context,
2834 );
2835 if inlined != (member_inline_size <= 4) {
2836 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2837 }
2838 let inner_offset;
2839 let mut inner_depth = depth.clone();
2840 if inlined {
2841 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2842 inner_offset = next_offset;
2843 } else {
2844 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2845 inner_depth.increment()?;
2846 }
2847 let val_ref = self
2848 .regulator_name
2849 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
2850 fidl::decode!(
2851 fidl::encoding::BoundedString<256>,
2852 D,
2853 val_ref,
2854 decoder,
2855 inner_offset,
2856 inner_depth
2857 )?;
2858 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2859 {
2860 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2861 }
2862 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2863 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2864 }
2865 }
2866
2867 next_offset += envelope_size;
2868 _next_ordinal_to_read += 1;
2869 if next_offset >= end_offset {
2870 return Ok(());
2871 }
2872
2873 while _next_ordinal_to_read < 5 {
2875 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2876 _next_ordinal_to_read += 1;
2877 next_offset += envelope_size;
2878 }
2879
2880 let next_out_of_line = decoder.next_out_of_line();
2881 let handles_before = decoder.remaining_handles();
2882 if let Some((inlined, num_bytes, num_handles)) =
2883 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2884 {
2885 let member_inline_size =
2886 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2887 if inlined != (member_inline_size <= 4) {
2888 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2889 }
2890 let inner_offset;
2891 let mut inner_depth = depth.clone();
2892 if inlined {
2893 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2894 inner_offset = next_offset;
2895 } else {
2896 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2897 inner_depth.increment()?;
2898 }
2899 let val_ref = self
2900 .measurement_start
2901 .get_or_insert_with(|| fidl::new_empty!(fidl::BootInstant, D));
2902 fidl::decode!(fidl::BootInstant, D, val_ref, decoder, inner_offset, inner_depth)?;
2903 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2904 {
2905 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2906 }
2907 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2908 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2909 }
2910 }
2911
2912 next_offset += envelope_size;
2913 _next_ordinal_to_read += 1;
2914 if next_offset >= end_offset {
2915 return Ok(());
2916 }
2917
2918 while _next_ordinal_to_read < 6 {
2920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2921 _next_ordinal_to_read += 1;
2922 next_offset += envelope_size;
2923 }
2924
2925 let next_out_of_line = decoder.next_out_of_line();
2926 let handles_before = decoder.remaining_handles();
2927 if let Some((inlined, num_bytes, num_handles)) =
2928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2929 {
2930 let member_inline_size =
2931 <fidl::BootInstant as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2932 if inlined != (member_inline_size <= 4) {
2933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2934 }
2935 let inner_offset;
2936 let mut inner_depth = depth.clone();
2937 if inlined {
2938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2939 inner_offset = next_offset;
2940 } else {
2941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2942 inner_depth.increment()?;
2943 }
2944 let val_ref = self
2945 .measurement_stop
2946 .get_or_insert_with(|| fidl::new_empty!(fidl::BootInstant, D));
2947 fidl::decode!(fidl::BootInstant, D, val_ref, decoder, inner_offset, inner_depth)?;
2948 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2949 {
2950 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2951 }
2952 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2953 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2954 }
2955 }
2956
2957 next_offset += envelope_size;
2958 _next_ordinal_to_read += 1;
2959 if next_offset >= end_offset {
2960 return Ok(());
2961 }
2962
2963 while _next_ordinal_to_read < 7 {
2965 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2966 _next_ordinal_to_read += 1;
2967 next_offset += envelope_size;
2968 }
2969
2970 let next_out_of_line = decoder.next_out_of_line();
2971 let handles_before = decoder.remaining_handles();
2972 if let Some((inlined, num_bytes, num_handles)) =
2973 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2974 {
2975 let member_inline_size =
2976 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2977 if inlined != (member_inline_size <= 4) {
2978 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2979 }
2980 let inner_offset;
2981 let mut inner_depth = depth.clone();
2982 if inlined {
2983 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2984 inner_offset = next_offset;
2985 } else {
2986 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2987 inner_depth.increment()?;
2988 }
2989 let val_ref = self.energy_uj.get_or_insert_with(|| fidl::new_empty!(i64, D));
2990 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2991 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2992 {
2993 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2994 }
2995 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2996 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2997 }
2998 }
2999
3000 next_offset += envelope_size;
3001
3002 while next_offset < end_offset {
3004 _next_ordinal_to_read += 1;
3005 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3006 next_offset += envelope_size;
3007 }
3008
3009 Ok(())
3010 }
3011 }
3012}