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 SensorId = i32;
16
17pub type SensorVersion = i32;
24
25#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
27pub enum Scale {
28 Nano,
29 Micro,
30 Milli,
31 Centi,
32 Deci,
33 None,
34 Deca,
35 Hecto,
36 Kilo,
37 Mega,
38 Giga,
39 #[doc(hidden)]
40 __SourceBreaking {
41 unknown_ordinal: i16,
42 },
43}
44
45#[macro_export]
47macro_rules! ScaleUnknown {
48 () => {
49 _
50 };
51}
52
53impl Scale {
54 #[inline]
55 pub fn from_primitive(prim: i16) -> Option<Self> {
56 match prim {
57 -9 => Some(Self::Nano),
58 -6 => Some(Self::Micro),
59 -3 => Some(Self::Milli),
60 -2 => Some(Self::Centi),
61 -1 => Some(Self::Deci),
62 0 => Some(Self::None),
63 1 => Some(Self::Deca),
64 2 => Some(Self::Hecto),
65 3 => Some(Self::Kilo),
66 6 => Some(Self::Mega),
67 9 => Some(Self::Giga),
68 _ => None,
69 }
70 }
71
72 #[inline]
73 pub fn from_primitive_allow_unknown(prim: i16) -> Self {
74 match prim {
75 -9 => Self::Nano,
76 -6 => Self::Micro,
77 -3 => Self::Milli,
78 -2 => Self::Centi,
79 -1 => Self::Deci,
80 0 => Self::None,
81 1 => Self::Deca,
82 2 => Self::Hecto,
83 3 => Self::Kilo,
84 6 => Self::Mega,
85 9 => Self::Giga,
86 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
87 }
88 }
89
90 #[inline]
91 pub fn unknown() -> Self {
92 Self::__SourceBreaking { unknown_ordinal: 0x7fff }
93 }
94
95 #[inline]
96 pub const fn into_primitive(self) -> i16 {
97 match self {
98 Self::Nano => -9,
99 Self::Micro => -6,
100 Self::Milli => -3,
101 Self::Centi => -2,
102 Self::Deci => -1,
103 Self::None => 0,
104 Self::Deca => 1,
105 Self::Hecto => 2,
106 Self::Kilo => 3,
107 Self::Mega => 6,
108 Self::Giga => 9,
109 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
110 }
111 }
112
113 #[inline]
114 pub fn is_unknown(&self) -> bool {
115 match self {
116 Self::__SourceBreaking { unknown_ordinal: _ } => true,
117 _ => false,
118 }
119 }
120}
121
122#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
124pub enum SensorReportingMode {
125 Continuous,
128 OnChange,
132 OneShot,
133 #[doc(hidden)]
134 __SourceBreaking {
135 unknown_ordinal: u32,
136 },
137}
138
139#[macro_export]
141macro_rules! SensorReportingModeUnknown {
142 () => {
143 _
144 };
145}
146
147impl SensorReportingMode {
148 #[inline]
149 pub fn from_primitive(prim: u32) -> Option<Self> {
150 match prim {
151 0 => Some(Self::Continuous),
152 1 => Some(Self::OnChange),
153 2 => Some(Self::OneShot),
154 _ => None,
155 }
156 }
157
158 #[inline]
159 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
160 match prim {
161 0 => Self::Continuous,
162 1 => Self::OnChange,
163 2 => Self::OneShot,
164 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
165 }
166 }
167
168 #[inline]
169 pub fn unknown() -> Self {
170 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
171 }
172
173 #[inline]
174 pub const fn into_primitive(self) -> u32 {
175 match self {
176 Self::Continuous => 0,
177 Self::OnChange => 1,
178 Self::OneShot => 2,
179 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
180 }
181 }
182
183 #[inline]
184 pub fn is_unknown(&self) -> bool {
185 match self {
186 Self::__SourceBreaking { unknown_ordinal: _ } => true,
187 _ => false,
188 }
189 }
190}
191
192#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
197pub enum SensorType {
198 AccelerometerUncalibrated,
200 GyroscopeUncalibrated,
201 MagneticFieldUncalibrated,
202 Accelerometer,
204 Gyroscope,
205 MagneticField,
206 Orientation,
208 Gravity,
209 LinearAcceleration,
210 RotationVector,
211 GameRotationVector,
212 SignificantMotion,
213 StepDetector,
214 StepCounter,
215 GeomagneticRotationVector,
216 TiltDetector,
217 WakeGesture,
218 GlanceGesture,
219 PickUpGesture,
220 WristTiltGesture,
221 DeviceOrientation,
222 Pose6Dof,
223 StationaryDetect,
224 MotionDetect,
225 LowLatencyOffbodyDetect,
226 Light,
228 Pressure,
229 Proximity,
230 RelativeHumidity,
231 AmbientTemperature,
232 HeartRate,
234 HeartBeat,
235 Power,
237 DevicePrivateBase,
239 #[doc(hidden)]
240 __SourceBreaking {
241 unknown_ordinal: u32,
242 },
243}
244
245#[macro_export]
247macro_rules! SensorTypeUnknown {
248 () => {
249 _
250 };
251}
252
253impl SensorType {
254 #[inline]
255 pub fn from_primitive(prim: u32) -> Option<Self> {
256 match prim {
257 35 => Some(Self::AccelerometerUncalibrated),
258 16 => Some(Self::GyroscopeUncalibrated),
259 14 => Some(Self::MagneticFieldUncalibrated),
260 1 => Some(Self::Accelerometer),
261 4 => Some(Self::Gyroscope),
262 2 => Some(Self::MagneticField),
263 3 => Some(Self::Orientation),
264 9 => Some(Self::Gravity),
265 10 => Some(Self::LinearAcceleration),
266 11 => Some(Self::RotationVector),
267 15 => Some(Self::GameRotationVector),
268 17 => Some(Self::SignificantMotion),
269 18 => Some(Self::StepDetector),
270 19 => Some(Self::StepCounter),
271 20 => Some(Self::GeomagneticRotationVector),
272 22 => Some(Self::TiltDetector),
273 23 => Some(Self::WakeGesture),
274 24 => Some(Self::GlanceGesture),
275 25 => Some(Self::PickUpGesture),
276 26 => Some(Self::WristTiltGesture),
277 27 => Some(Self::DeviceOrientation),
278 28 => Some(Self::Pose6Dof),
279 29 => Some(Self::StationaryDetect),
280 30 => Some(Self::MotionDetect),
281 34 => Some(Self::LowLatencyOffbodyDetect),
282 5 => Some(Self::Light),
283 6 => Some(Self::Pressure),
284 8 => Some(Self::Proximity),
285 12 => Some(Self::RelativeHumidity),
286 13 => Some(Self::AmbientTemperature),
287 21 => Some(Self::HeartRate),
288 31 => Some(Self::HeartBeat),
289 1001 => Some(Self::Power),
290 65536 => Some(Self::DevicePrivateBase),
291 _ => None,
292 }
293 }
294
295 #[inline]
296 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
297 match prim {
298 35 => Self::AccelerometerUncalibrated,
299 16 => Self::GyroscopeUncalibrated,
300 14 => Self::MagneticFieldUncalibrated,
301 1 => Self::Accelerometer,
302 4 => Self::Gyroscope,
303 2 => Self::MagneticField,
304 3 => Self::Orientation,
305 9 => Self::Gravity,
306 10 => Self::LinearAcceleration,
307 11 => Self::RotationVector,
308 15 => Self::GameRotationVector,
309 17 => Self::SignificantMotion,
310 18 => Self::StepDetector,
311 19 => Self::StepCounter,
312 20 => Self::GeomagneticRotationVector,
313 22 => Self::TiltDetector,
314 23 => Self::WakeGesture,
315 24 => Self::GlanceGesture,
316 25 => Self::PickUpGesture,
317 26 => Self::WristTiltGesture,
318 27 => Self::DeviceOrientation,
319 28 => Self::Pose6Dof,
320 29 => Self::StationaryDetect,
321 30 => Self::MotionDetect,
322 34 => Self::LowLatencyOffbodyDetect,
323 5 => Self::Light,
324 6 => Self::Pressure,
325 8 => Self::Proximity,
326 12 => Self::RelativeHumidity,
327 13 => Self::AmbientTemperature,
328 21 => Self::HeartRate,
329 31 => Self::HeartBeat,
330 1001 => Self::Power,
331 65536 => Self::DevicePrivateBase,
332 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
333 }
334 }
335
336 #[inline]
337 pub fn unknown() -> Self {
338 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
339 }
340
341 #[inline]
342 pub const fn into_primitive(self) -> u32 {
343 match self {
344 Self::AccelerometerUncalibrated => 35,
345 Self::GyroscopeUncalibrated => 16,
346 Self::MagneticFieldUncalibrated => 14,
347 Self::Accelerometer => 1,
348 Self::Gyroscope => 4,
349 Self::MagneticField => 2,
350 Self::Orientation => 3,
351 Self::Gravity => 9,
352 Self::LinearAcceleration => 10,
353 Self::RotationVector => 11,
354 Self::GameRotationVector => 15,
355 Self::SignificantMotion => 17,
356 Self::StepDetector => 18,
357 Self::StepCounter => 19,
358 Self::GeomagneticRotationVector => 20,
359 Self::TiltDetector => 22,
360 Self::WakeGesture => 23,
361 Self::GlanceGesture => 24,
362 Self::PickUpGesture => 25,
363 Self::WristTiltGesture => 26,
364 Self::DeviceOrientation => 27,
365 Self::Pose6Dof => 28,
366 Self::StationaryDetect => 29,
367 Self::MotionDetect => 30,
368 Self::LowLatencyOffbodyDetect => 34,
369 Self::Light => 5,
370 Self::Pressure => 6,
371 Self::Proximity => 8,
372 Self::RelativeHumidity => 12,
373 Self::AmbientTemperature => 13,
374 Self::HeartRate => 21,
375 Self::HeartBeat => 31,
376 Self::Power => 1001,
377 Self::DevicePrivateBase => 65536,
378 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
379 }
380 }
381
382 #[inline]
383 pub fn is_unknown(&self) -> bool {
384 match self {
385 Self::__SourceBreaking { unknown_ordinal: _ } => true,
386 _ => false,
387 }
388 }
389}
390
391#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
395pub enum SensorWakeUpType {
396 NonWakeUp,
397 WakeUp,
398 #[doc(hidden)]
399 __SourceBreaking {
400 unknown_ordinal: u32,
401 },
402}
403
404#[macro_export]
406macro_rules! SensorWakeUpTypeUnknown {
407 () => {
408 _
409 };
410}
411
412impl SensorWakeUpType {
413 #[inline]
414 pub fn from_primitive(prim: u32) -> Option<Self> {
415 match prim {
416 0 => Some(Self::NonWakeUp),
417 1 => Some(Self::WakeUp),
418 _ => None,
419 }
420 }
421
422 #[inline]
423 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
424 match prim {
425 0 => Self::NonWakeUp,
426 1 => Self::WakeUp,
427 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
428 }
429 }
430
431 #[inline]
432 pub fn unknown() -> Self {
433 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
434 }
435
436 #[inline]
437 pub const fn into_primitive(self) -> u32 {
438 match self {
439 Self::NonWakeUp => 0,
440 Self::WakeUp => 1,
441 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
442 }
443 }
444
445 #[inline]
446 pub fn is_unknown(&self) -> bool {
447 match self {
448 Self::__SourceBreaking { unknown_ordinal: _ } => true,
449 _ => false,
450 }
451 }
452}
453
454#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
456pub enum Unit {
457 None,
459 MPerSecSqrd,
461 Degrees,
462 RadPerSecond,
463 QuaternionAndMeters,
464 Tesla,
466 Pascal,
467 Meter,
468 RelativeHumidity,
469 Celsius,
470 Lux,
471 Steps,
473 BeatsPerMin,
474 Watts,
476 Volts,
477 Amps,
478 Joules,
479 Coulombs,
480 #[doc(hidden)]
481 __SourceBreaking {
482 unknown_ordinal: u32,
483 },
484}
485
486#[macro_export]
488macro_rules! UnitUnknown {
489 () => {
490 _
491 };
492}
493
494impl Unit {
495 #[inline]
496 pub fn from_primitive(prim: u32) -> Option<Self> {
497 match prim {
498 0 => Some(Self::None),
499 1 => Some(Self::MPerSecSqrd),
500 2 => Some(Self::Degrees),
501 3 => Some(Self::RadPerSecond),
502 4 => Some(Self::QuaternionAndMeters),
503 5 => Some(Self::Tesla),
504 6 => Some(Self::Pascal),
505 7 => Some(Self::Meter),
506 8 => Some(Self::RelativeHumidity),
507 9 => Some(Self::Celsius),
508 10 => Some(Self::Lux),
509 11 => Some(Self::Steps),
510 12 => Some(Self::BeatsPerMin),
511 21 => Some(Self::Watts),
512 22 => Some(Self::Volts),
513 23 => Some(Self::Amps),
514 24 => Some(Self::Joules),
515 25 => Some(Self::Coulombs),
516 _ => None,
517 }
518 }
519
520 #[inline]
521 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
522 match prim {
523 0 => Self::None,
524 1 => Self::MPerSecSqrd,
525 2 => Self::Degrees,
526 3 => Self::RadPerSecond,
527 4 => Self::QuaternionAndMeters,
528 5 => Self::Tesla,
529 6 => Self::Pascal,
530 7 => Self::Meter,
531 8 => Self::RelativeHumidity,
532 9 => Self::Celsius,
533 10 => Self::Lux,
534 11 => Self::Steps,
535 12 => Self::BeatsPerMin,
536 21 => Self::Watts,
537 22 => Self::Volts,
538 23 => Self::Amps,
539 24 => Self::Joules,
540 25 => Self::Coulombs,
541 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
542 }
543 }
544
545 #[inline]
546 pub fn unknown() -> Self {
547 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
548 }
549
550 #[inline]
551 pub const fn into_primitive(self) -> u32 {
552 match self {
553 Self::None => 0,
554 Self::MPerSecSqrd => 1,
555 Self::Degrees => 2,
556 Self::RadPerSecond => 3,
557 Self::QuaternionAndMeters => 4,
558 Self::Tesla => 5,
559 Self::Pascal => 6,
560 Self::Meter => 7,
561 Self::RelativeHumidity => 8,
562 Self::Celsius => 9,
563 Self::Lux => 10,
564 Self::Steps => 11,
565 Self::BeatsPerMin => 12,
566 Self::Watts => 21,
567 Self::Volts => 22,
568 Self::Amps => 23,
569 Self::Joules => 24,
570 Self::Coulombs => 25,
571 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
572 }
573 }
574
575 #[inline]
576 pub fn is_unknown(&self) -> bool {
577 match self {
578 Self::__SourceBreaking { unknown_ordinal: _ } => true,
579 _ => false,
580 }
581 }
582}
583
584#[derive(Clone, Debug, PartialEq)]
587pub struct Pose {
588 pub rotation: fidl_fuchsia_math__common::Vec4F,
590 pub translation: fidl_fuchsia_math__common::Vec3F,
592 pub rotation_delta: fidl_fuchsia_math__common::Vec4F,
594 pub translation_delta: fidl_fuchsia_math__common::Vec3F,
596}
597
598impl fidl::Persistable for Pose {}
599
600#[derive(Clone, Debug, PartialEq)]
602pub struct SensorEvent {
603 pub timestamp: i64,
605 pub sensor_id: i32,
607 pub sensor_type: SensorType,
609 pub sequence_number: u64,
612 pub payload: EventPayload,
614}
615
616impl fidl::Persistable for SensorEvent {}
617
618#[derive(Clone, Debug, PartialEq)]
621pub struct UncalibratedVec3FSample {
622 pub sample: fidl_fuchsia_math__common::Vec3F,
623 pub biases: fidl_fuchsia_math__common::Vec3F,
624}
625
626impl fidl::Persistable for UncalibratedVec3FSample {}
627
628#[derive(Clone, Debug, Default, PartialEq)]
630pub struct SensorInfo {
631 pub sensor_id: Option<i32>,
635 pub name: Option<String>,
640 pub vendor: Option<String>,
644 pub version: Option<i32>,
648 pub sensor_type: Option<SensorType>,
652 pub wake_up: Option<SensorWakeUpType>,
656 pub reporting_mode: Option<SensorReportingMode>,
660 pub measurement_unit: Option<Unit>,
662 pub measurement_scale: Option<Scale>,
665 #[doc(hidden)]
666 pub __source_breaking: fidl::marker::SourceBreaking,
667}
668
669impl fidl::Persistable for SensorInfo {}
670
671#[derive(Clone, Debug, Default, PartialEq)]
674pub struct SensorRateConfig {
675 pub sampling_period_ns: Option<i64>,
679 pub max_reporting_latency_ns: Option<i64>,
684 #[doc(hidden)]
685 pub __source_breaking: fidl::marker::SourceBreaking,
686}
687
688impl fidl::Persistable for SensorRateConfig {}
689
690#[derive(Clone, Debug)]
693pub enum EventPayload {
694 Vec3(fidl_fuchsia_math__common::Vec3F),
698 Quaternion(fidl_fuchsia_math__common::Vec4F),
701 UncalibratedVec3(UncalibratedVec3FSample),
706 Float(f32),
713 Integer(u64),
716 Pose(Pose),
719 #[doc(hidden)]
720 __SourceBreaking { unknown_ordinal: u64 },
721}
722
723#[macro_export]
725macro_rules! EventPayloadUnknown {
726 () => {
727 _
728 };
729}
730
731impl PartialEq for EventPayload {
733 fn eq(&self, other: &Self) -> bool {
734 match (self, other) {
735 (Self::Vec3(x), Self::Vec3(y)) => *x == *y,
736 (Self::Quaternion(x), Self::Quaternion(y)) => *x == *y,
737 (Self::UncalibratedVec3(x), Self::UncalibratedVec3(y)) => *x == *y,
738 (Self::Float(x), Self::Float(y)) => *x == *y,
739 (Self::Integer(x), Self::Integer(y)) => *x == *y,
740 (Self::Pose(x), Self::Pose(y)) => *x == *y,
741 _ => false,
742 }
743 }
744}
745
746impl EventPayload {
747 #[inline]
748 pub fn ordinal(&self) -> u64 {
749 match *self {
750 Self::Vec3(_) => 1,
751 Self::Quaternion(_) => 2,
752 Self::UncalibratedVec3(_) => 3,
753 Self::Float(_) => 4,
754 Self::Integer(_) => 5,
755 Self::Pose(_) => 6,
756 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
757 }
758 }
759
760 #[inline]
761 pub fn unknown_variant_for_testing() -> Self {
762 Self::__SourceBreaking { unknown_ordinal: 0 }
763 }
764
765 #[inline]
766 pub fn is_unknown(&self) -> bool {
767 match self {
768 Self::__SourceBreaking { .. } => true,
769 _ => false,
770 }
771 }
772}
773
774impl fidl::Persistable for EventPayload {}
775
776mod internal {
777 use super::*;
778 unsafe impl fidl::encoding::TypeMarker for Scale {
779 type Owned = Self;
780
781 #[inline(always)]
782 fn inline_align(_context: fidl::encoding::Context) -> usize {
783 std::mem::align_of::<i16>()
784 }
785
786 #[inline(always)]
787 fn inline_size(_context: fidl::encoding::Context) -> usize {
788 std::mem::size_of::<i16>()
789 }
790
791 #[inline(always)]
792 fn encode_is_copy() -> bool {
793 false
794 }
795
796 #[inline(always)]
797 fn decode_is_copy() -> bool {
798 false
799 }
800 }
801
802 impl fidl::encoding::ValueTypeMarker for Scale {
803 type Borrowed<'a> = Self;
804 #[inline(always)]
805 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
806 *value
807 }
808 }
809
810 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Scale {
811 #[inline]
812 unsafe fn encode(
813 self,
814 encoder: &mut fidl::encoding::Encoder<'_, D>,
815 offset: usize,
816 _depth: fidl::encoding::Depth,
817 ) -> fidl::Result<()> {
818 encoder.debug_check_bounds::<Self>(offset);
819 encoder.write_num(self.into_primitive(), offset);
820 Ok(())
821 }
822 }
823
824 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Scale {
825 #[inline(always)]
826 fn new_empty() -> Self {
827 Self::unknown()
828 }
829
830 #[inline]
831 unsafe fn decode(
832 &mut self,
833 decoder: &mut fidl::encoding::Decoder<'_, D>,
834 offset: usize,
835 _depth: fidl::encoding::Depth,
836 ) -> fidl::Result<()> {
837 decoder.debug_check_bounds::<Self>(offset);
838 let prim = decoder.read_num::<i16>(offset);
839
840 *self = Self::from_primitive_allow_unknown(prim);
841 Ok(())
842 }
843 }
844 unsafe impl fidl::encoding::TypeMarker for SensorReportingMode {
845 type Owned = Self;
846
847 #[inline(always)]
848 fn inline_align(_context: fidl::encoding::Context) -> usize {
849 std::mem::align_of::<u32>()
850 }
851
852 #[inline(always)]
853 fn inline_size(_context: fidl::encoding::Context) -> usize {
854 std::mem::size_of::<u32>()
855 }
856
857 #[inline(always)]
858 fn encode_is_copy() -> bool {
859 false
860 }
861
862 #[inline(always)]
863 fn decode_is_copy() -> bool {
864 false
865 }
866 }
867
868 impl fidl::encoding::ValueTypeMarker for SensorReportingMode {
869 type Borrowed<'a> = Self;
870 #[inline(always)]
871 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
872 *value
873 }
874 }
875
876 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
877 for SensorReportingMode
878 {
879 #[inline]
880 unsafe fn encode(
881 self,
882 encoder: &mut fidl::encoding::Encoder<'_, D>,
883 offset: usize,
884 _depth: fidl::encoding::Depth,
885 ) -> fidl::Result<()> {
886 encoder.debug_check_bounds::<Self>(offset);
887 encoder.write_num(self.into_primitive(), offset);
888 Ok(())
889 }
890 }
891
892 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SensorReportingMode {
893 #[inline(always)]
894 fn new_empty() -> Self {
895 Self::unknown()
896 }
897
898 #[inline]
899 unsafe fn decode(
900 &mut self,
901 decoder: &mut fidl::encoding::Decoder<'_, D>,
902 offset: usize,
903 _depth: fidl::encoding::Depth,
904 ) -> fidl::Result<()> {
905 decoder.debug_check_bounds::<Self>(offset);
906 let prim = decoder.read_num::<u32>(offset);
907
908 *self = Self::from_primitive_allow_unknown(prim);
909 Ok(())
910 }
911 }
912 unsafe impl fidl::encoding::TypeMarker for SensorType {
913 type Owned = Self;
914
915 #[inline(always)]
916 fn inline_align(_context: fidl::encoding::Context) -> usize {
917 std::mem::align_of::<u32>()
918 }
919
920 #[inline(always)]
921 fn inline_size(_context: fidl::encoding::Context) -> usize {
922 std::mem::size_of::<u32>()
923 }
924
925 #[inline(always)]
926 fn encode_is_copy() -> bool {
927 false
928 }
929
930 #[inline(always)]
931 fn decode_is_copy() -> bool {
932 false
933 }
934 }
935
936 impl fidl::encoding::ValueTypeMarker for SensorType {
937 type Borrowed<'a> = Self;
938 #[inline(always)]
939 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
940 *value
941 }
942 }
943
944 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for SensorType {
945 #[inline]
946 unsafe fn encode(
947 self,
948 encoder: &mut fidl::encoding::Encoder<'_, D>,
949 offset: usize,
950 _depth: fidl::encoding::Depth,
951 ) -> fidl::Result<()> {
952 encoder.debug_check_bounds::<Self>(offset);
953 encoder.write_num(self.into_primitive(), offset);
954 Ok(())
955 }
956 }
957
958 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SensorType {
959 #[inline(always)]
960 fn new_empty() -> Self {
961 Self::unknown()
962 }
963
964 #[inline]
965 unsafe fn decode(
966 &mut self,
967 decoder: &mut fidl::encoding::Decoder<'_, D>,
968 offset: usize,
969 _depth: fidl::encoding::Depth,
970 ) -> fidl::Result<()> {
971 decoder.debug_check_bounds::<Self>(offset);
972 let prim = decoder.read_num::<u32>(offset);
973
974 *self = Self::from_primitive_allow_unknown(prim);
975 Ok(())
976 }
977 }
978 unsafe impl fidl::encoding::TypeMarker for SensorWakeUpType {
979 type Owned = Self;
980
981 #[inline(always)]
982 fn inline_align(_context: fidl::encoding::Context) -> usize {
983 std::mem::align_of::<u32>()
984 }
985
986 #[inline(always)]
987 fn inline_size(_context: fidl::encoding::Context) -> usize {
988 std::mem::size_of::<u32>()
989 }
990
991 #[inline(always)]
992 fn encode_is_copy() -> bool {
993 false
994 }
995
996 #[inline(always)]
997 fn decode_is_copy() -> bool {
998 false
999 }
1000 }
1001
1002 impl fidl::encoding::ValueTypeMarker for SensorWakeUpType {
1003 type Borrowed<'a> = Self;
1004 #[inline(always)]
1005 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1006 *value
1007 }
1008 }
1009
1010 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1011 for SensorWakeUpType
1012 {
1013 #[inline]
1014 unsafe fn encode(
1015 self,
1016 encoder: &mut fidl::encoding::Encoder<'_, D>,
1017 offset: usize,
1018 _depth: fidl::encoding::Depth,
1019 ) -> fidl::Result<()> {
1020 encoder.debug_check_bounds::<Self>(offset);
1021 encoder.write_num(self.into_primitive(), offset);
1022 Ok(())
1023 }
1024 }
1025
1026 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SensorWakeUpType {
1027 #[inline(always)]
1028 fn new_empty() -> Self {
1029 Self::unknown()
1030 }
1031
1032 #[inline]
1033 unsafe fn decode(
1034 &mut self,
1035 decoder: &mut fidl::encoding::Decoder<'_, D>,
1036 offset: usize,
1037 _depth: fidl::encoding::Depth,
1038 ) -> fidl::Result<()> {
1039 decoder.debug_check_bounds::<Self>(offset);
1040 let prim = decoder.read_num::<u32>(offset);
1041
1042 *self = Self::from_primitive_allow_unknown(prim);
1043 Ok(())
1044 }
1045 }
1046 unsafe impl fidl::encoding::TypeMarker for Unit {
1047 type Owned = Self;
1048
1049 #[inline(always)]
1050 fn inline_align(_context: fidl::encoding::Context) -> usize {
1051 std::mem::align_of::<u32>()
1052 }
1053
1054 #[inline(always)]
1055 fn inline_size(_context: fidl::encoding::Context) -> usize {
1056 std::mem::size_of::<u32>()
1057 }
1058
1059 #[inline(always)]
1060 fn encode_is_copy() -> bool {
1061 false
1062 }
1063
1064 #[inline(always)]
1065 fn decode_is_copy() -> bool {
1066 false
1067 }
1068 }
1069
1070 impl fidl::encoding::ValueTypeMarker for Unit {
1071 type Borrowed<'a> = Self;
1072 #[inline(always)]
1073 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1074 *value
1075 }
1076 }
1077
1078 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for Unit {
1079 #[inline]
1080 unsafe fn encode(
1081 self,
1082 encoder: &mut fidl::encoding::Encoder<'_, D>,
1083 offset: usize,
1084 _depth: fidl::encoding::Depth,
1085 ) -> fidl::Result<()> {
1086 encoder.debug_check_bounds::<Self>(offset);
1087 encoder.write_num(self.into_primitive(), offset);
1088 Ok(())
1089 }
1090 }
1091
1092 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Unit {
1093 #[inline(always)]
1094 fn new_empty() -> Self {
1095 Self::unknown()
1096 }
1097
1098 #[inline]
1099 unsafe fn decode(
1100 &mut self,
1101 decoder: &mut fidl::encoding::Decoder<'_, D>,
1102 offset: usize,
1103 _depth: fidl::encoding::Depth,
1104 ) -> fidl::Result<()> {
1105 decoder.debug_check_bounds::<Self>(offset);
1106 let prim = decoder.read_num::<u32>(offset);
1107
1108 *self = Self::from_primitive_allow_unknown(prim);
1109 Ok(())
1110 }
1111 }
1112
1113 impl fidl::encoding::ValueTypeMarker for Pose {
1114 type Borrowed<'a> = &'a Self;
1115 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1116 value
1117 }
1118 }
1119
1120 unsafe impl fidl::encoding::TypeMarker for Pose {
1121 type Owned = Self;
1122
1123 #[inline(always)]
1124 fn inline_align(_context: fidl::encoding::Context) -> usize {
1125 4
1126 }
1127
1128 #[inline(always)]
1129 fn inline_size(_context: fidl::encoding::Context) -> usize {
1130 56
1131 }
1132 }
1133
1134 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Pose, D> for &Pose {
1135 #[inline]
1136 unsafe fn encode(
1137 self,
1138 encoder: &mut fidl::encoding::Encoder<'_, D>,
1139 offset: usize,
1140 _depth: fidl::encoding::Depth,
1141 ) -> fidl::Result<()> {
1142 encoder.debug_check_bounds::<Pose>(offset);
1143 fidl::encoding::Encode::<Pose, D>::encode(
1145 (
1146 <fidl_fuchsia_math__common::Vec4F as fidl::encoding::ValueTypeMarker>::borrow(
1147 &self.rotation,
1148 ),
1149 <fidl_fuchsia_math__common::Vec3F as fidl::encoding::ValueTypeMarker>::borrow(
1150 &self.translation,
1151 ),
1152 <fidl_fuchsia_math__common::Vec4F as fidl::encoding::ValueTypeMarker>::borrow(
1153 &self.rotation_delta,
1154 ),
1155 <fidl_fuchsia_math__common::Vec3F as fidl::encoding::ValueTypeMarker>::borrow(
1156 &self.translation_delta,
1157 ),
1158 ),
1159 encoder,
1160 offset,
1161 _depth,
1162 )
1163 }
1164 }
1165 unsafe impl<
1166 D: fidl::encoding::ResourceDialect,
1167 T0: fidl::encoding::Encode<fidl_fuchsia_math__common::Vec4F, D>,
1168 T1: fidl::encoding::Encode<fidl_fuchsia_math__common::Vec3F, D>,
1169 T2: fidl::encoding::Encode<fidl_fuchsia_math__common::Vec4F, D>,
1170 T3: fidl::encoding::Encode<fidl_fuchsia_math__common::Vec3F, D>,
1171 > fidl::encoding::Encode<Pose, D> for (T0, T1, T2, T3)
1172 {
1173 #[inline]
1174 unsafe fn encode(
1175 self,
1176 encoder: &mut fidl::encoding::Encoder<'_, D>,
1177 offset: usize,
1178 depth: fidl::encoding::Depth,
1179 ) -> fidl::Result<()> {
1180 encoder.debug_check_bounds::<Pose>(offset);
1181 self.0.encode(encoder, offset + 0, depth)?;
1185 self.1.encode(encoder, offset + 16, depth)?;
1186 self.2.encode(encoder, offset + 28, depth)?;
1187 self.3.encode(encoder, offset + 44, depth)?;
1188 Ok(())
1189 }
1190 }
1191
1192 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Pose {
1193 #[inline(always)]
1194 fn new_empty() -> Self {
1195 Self {
1196 rotation: fidl::new_empty!(fidl_fuchsia_math__common::Vec4F, D),
1197 translation: fidl::new_empty!(fidl_fuchsia_math__common::Vec3F, D),
1198 rotation_delta: fidl::new_empty!(fidl_fuchsia_math__common::Vec4F, D),
1199 translation_delta: fidl::new_empty!(fidl_fuchsia_math__common::Vec3F, D),
1200 }
1201 }
1202
1203 #[inline]
1204 unsafe fn decode(
1205 &mut self,
1206 decoder: &mut fidl::encoding::Decoder<'_, D>,
1207 offset: usize,
1208 _depth: fidl::encoding::Depth,
1209 ) -> fidl::Result<()> {
1210 decoder.debug_check_bounds::<Self>(offset);
1211 fidl::decode!(
1213 fidl_fuchsia_math__common::Vec4F,
1214 D,
1215 &mut self.rotation,
1216 decoder,
1217 offset + 0,
1218 _depth
1219 )?;
1220 fidl::decode!(
1221 fidl_fuchsia_math__common::Vec3F,
1222 D,
1223 &mut self.translation,
1224 decoder,
1225 offset + 16,
1226 _depth
1227 )?;
1228 fidl::decode!(
1229 fidl_fuchsia_math__common::Vec4F,
1230 D,
1231 &mut self.rotation_delta,
1232 decoder,
1233 offset + 28,
1234 _depth
1235 )?;
1236 fidl::decode!(
1237 fidl_fuchsia_math__common::Vec3F,
1238 D,
1239 &mut self.translation_delta,
1240 decoder,
1241 offset + 44,
1242 _depth
1243 )?;
1244 Ok(())
1245 }
1246 }
1247
1248 impl fidl::encoding::ValueTypeMarker for SensorEvent {
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 SensorEvent {
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 40
1266 }
1267 }
1268
1269 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SensorEvent, D>
1270 for &SensorEvent
1271 {
1272 #[inline]
1273 unsafe fn encode(
1274 self,
1275 encoder: &mut fidl::encoding::Encoder<'_, D>,
1276 offset: usize,
1277 _depth: fidl::encoding::Depth,
1278 ) -> fidl::Result<()> {
1279 encoder.debug_check_bounds::<SensorEvent>(offset);
1280 fidl::encoding::Encode::<SensorEvent, D>::encode(
1282 (
1283 <i64 as fidl::encoding::ValueTypeMarker>::borrow(&self.timestamp),
1284 <i32 as fidl::encoding::ValueTypeMarker>::borrow(&self.sensor_id),
1285 <SensorType as fidl::encoding::ValueTypeMarker>::borrow(&self.sensor_type),
1286 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.sequence_number),
1287 <EventPayload as fidl::encoding::ValueTypeMarker>::borrow(&self.payload),
1288 ),
1289 encoder,
1290 offset,
1291 _depth,
1292 )
1293 }
1294 }
1295 unsafe impl<
1296 D: fidl::encoding::ResourceDialect,
1297 T0: fidl::encoding::Encode<i64, D>,
1298 T1: fidl::encoding::Encode<i32, D>,
1299 T2: fidl::encoding::Encode<SensorType, D>,
1300 T3: fidl::encoding::Encode<u64, D>,
1301 T4: fidl::encoding::Encode<EventPayload, D>,
1302 > fidl::encoding::Encode<SensorEvent, D> for (T0, T1, T2, T3, T4)
1303 {
1304 #[inline]
1305 unsafe fn encode(
1306 self,
1307 encoder: &mut fidl::encoding::Encoder<'_, D>,
1308 offset: usize,
1309 depth: fidl::encoding::Depth,
1310 ) -> fidl::Result<()> {
1311 encoder.debug_check_bounds::<SensorEvent>(offset);
1312 self.0.encode(encoder, offset + 0, depth)?;
1316 self.1.encode(encoder, offset + 8, depth)?;
1317 self.2.encode(encoder, offset + 12, depth)?;
1318 self.3.encode(encoder, offset + 16, depth)?;
1319 self.4.encode(encoder, offset + 24, depth)?;
1320 Ok(())
1321 }
1322 }
1323
1324 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SensorEvent {
1325 #[inline(always)]
1326 fn new_empty() -> Self {
1327 Self {
1328 timestamp: fidl::new_empty!(i64, D),
1329 sensor_id: fidl::new_empty!(i32, D),
1330 sensor_type: fidl::new_empty!(SensorType, D),
1331 sequence_number: fidl::new_empty!(u64, D),
1332 payload: fidl::new_empty!(EventPayload, D),
1333 }
1334 }
1335
1336 #[inline]
1337 unsafe fn decode(
1338 &mut self,
1339 decoder: &mut fidl::encoding::Decoder<'_, D>,
1340 offset: usize,
1341 _depth: fidl::encoding::Depth,
1342 ) -> fidl::Result<()> {
1343 decoder.debug_check_bounds::<Self>(offset);
1344 fidl::decode!(i64, D, &mut self.timestamp, decoder, offset + 0, _depth)?;
1346 fidl::decode!(i32, D, &mut self.sensor_id, decoder, offset + 8, _depth)?;
1347 fidl::decode!(SensorType, D, &mut self.sensor_type, decoder, offset + 12, _depth)?;
1348 fidl::decode!(u64, D, &mut self.sequence_number, decoder, offset + 16, _depth)?;
1349 fidl::decode!(EventPayload, D, &mut self.payload, decoder, offset + 24, _depth)?;
1350 Ok(())
1351 }
1352 }
1353
1354 impl fidl::encoding::ValueTypeMarker for UncalibratedVec3FSample {
1355 type Borrowed<'a> = &'a Self;
1356 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1357 value
1358 }
1359 }
1360
1361 unsafe impl fidl::encoding::TypeMarker for UncalibratedVec3FSample {
1362 type Owned = Self;
1363
1364 #[inline(always)]
1365 fn inline_align(_context: fidl::encoding::Context) -> usize {
1366 4
1367 }
1368
1369 #[inline(always)]
1370 fn inline_size(_context: fidl::encoding::Context) -> usize {
1371 24
1372 }
1373 }
1374
1375 unsafe impl<D: fidl::encoding::ResourceDialect>
1376 fidl::encoding::Encode<UncalibratedVec3FSample, D> for &UncalibratedVec3FSample
1377 {
1378 #[inline]
1379 unsafe fn encode(
1380 self,
1381 encoder: &mut fidl::encoding::Encoder<'_, D>,
1382 offset: usize,
1383 _depth: fidl::encoding::Depth,
1384 ) -> fidl::Result<()> {
1385 encoder.debug_check_bounds::<UncalibratedVec3FSample>(offset);
1386 fidl::encoding::Encode::<UncalibratedVec3FSample, D>::encode(
1388 (
1389 <fidl_fuchsia_math__common::Vec3F as fidl::encoding::ValueTypeMarker>::borrow(
1390 &self.sample,
1391 ),
1392 <fidl_fuchsia_math__common::Vec3F as fidl::encoding::ValueTypeMarker>::borrow(
1393 &self.biases,
1394 ),
1395 ),
1396 encoder,
1397 offset,
1398 _depth,
1399 )
1400 }
1401 }
1402 unsafe impl<
1403 D: fidl::encoding::ResourceDialect,
1404 T0: fidl::encoding::Encode<fidl_fuchsia_math__common::Vec3F, D>,
1405 T1: fidl::encoding::Encode<fidl_fuchsia_math__common::Vec3F, D>,
1406 > fidl::encoding::Encode<UncalibratedVec3FSample, D> for (T0, T1)
1407 {
1408 #[inline]
1409 unsafe fn encode(
1410 self,
1411 encoder: &mut fidl::encoding::Encoder<'_, D>,
1412 offset: usize,
1413 depth: fidl::encoding::Depth,
1414 ) -> fidl::Result<()> {
1415 encoder.debug_check_bounds::<UncalibratedVec3FSample>(offset);
1416 self.0.encode(encoder, offset + 0, depth)?;
1420 self.1.encode(encoder, offset + 12, depth)?;
1421 Ok(())
1422 }
1423 }
1424
1425 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1426 for UncalibratedVec3FSample
1427 {
1428 #[inline(always)]
1429 fn new_empty() -> Self {
1430 Self {
1431 sample: fidl::new_empty!(fidl_fuchsia_math__common::Vec3F, D),
1432 biases: fidl::new_empty!(fidl_fuchsia_math__common::Vec3F, D),
1433 }
1434 }
1435
1436 #[inline]
1437 unsafe fn decode(
1438 &mut self,
1439 decoder: &mut fidl::encoding::Decoder<'_, D>,
1440 offset: usize,
1441 _depth: fidl::encoding::Depth,
1442 ) -> fidl::Result<()> {
1443 decoder.debug_check_bounds::<Self>(offset);
1444 fidl::decode!(
1446 fidl_fuchsia_math__common::Vec3F,
1447 D,
1448 &mut self.sample,
1449 decoder,
1450 offset + 0,
1451 _depth
1452 )?;
1453 fidl::decode!(
1454 fidl_fuchsia_math__common::Vec3F,
1455 D,
1456 &mut self.biases,
1457 decoder,
1458 offset + 12,
1459 _depth
1460 )?;
1461 Ok(())
1462 }
1463 }
1464
1465 impl SensorInfo {
1466 #[inline(always)]
1467 fn max_ordinal_present(&self) -> u64 {
1468 if let Some(_) = self.measurement_scale {
1469 return 9;
1470 }
1471 if let Some(_) = self.measurement_unit {
1472 return 8;
1473 }
1474 if let Some(_) = self.reporting_mode {
1475 return 7;
1476 }
1477 if let Some(_) = self.wake_up {
1478 return 6;
1479 }
1480 if let Some(_) = self.sensor_type {
1481 return 5;
1482 }
1483 if let Some(_) = self.version {
1484 return 4;
1485 }
1486 if let Some(_) = self.vendor {
1487 return 3;
1488 }
1489 if let Some(_) = self.name {
1490 return 2;
1491 }
1492 if let Some(_) = self.sensor_id {
1493 return 1;
1494 }
1495 0
1496 }
1497 }
1498
1499 impl fidl::encoding::ValueTypeMarker for SensorInfo {
1500 type Borrowed<'a> = &'a Self;
1501 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1502 value
1503 }
1504 }
1505
1506 unsafe impl fidl::encoding::TypeMarker for SensorInfo {
1507 type Owned = Self;
1508
1509 #[inline(always)]
1510 fn inline_align(_context: fidl::encoding::Context) -> usize {
1511 8
1512 }
1513
1514 #[inline(always)]
1515 fn inline_size(_context: fidl::encoding::Context) -> usize {
1516 16
1517 }
1518 }
1519
1520 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SensorInfo, D>
1521 for &SensorInfo
1522 {
1523 unsafe fn encode(
1524 self,
1525 encoder: &mut fidl::encoding::Encoder<'_, D>,
1526 offset: usize,
1527 mut depth: fidl::encoding::Depth,
1528 ) -> fidl::Result<()> {
1529 encoder.debug_check_bounds::<SensorInfo>(offset);
1530 let max_ordinal: u64 = self.max_ordinal_present();
1532 encoder.write_num(max_ordinal, offset);
1533 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1534 if max_ordinal == 0 {
1536 return Ok(());
1537 }
1538 depth.increment()?;
1539 let envelope_size = 8;
1540 let bytes_len = max_ordinal as usize * envelope_size;
1541 #[allow(unused_variables)]
1542 let offset = encoder.out_of_line_offset(bytes_len);
1543 let mut _prev_end_offset: usize = 0;
1544 if 1 > max_ordinal {
1545 return Ok(());
1546 }
1547
1548 let cur_offset: usize = (1 - 1) * envelope_size;
1551
1552 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1554
1555 fidl::encoding::encode_in_envelope_optional::<i32, D>(
1560 self.sensor_id.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
1561 encoder,
1562 offset + cur_offset,
1563 depth,
1564 )?;
1565
1566 _prev_end_offset = cur_offset + envelope_size;
1567 if 2 > max_ordinal {
1568 return Ok(());
1569 }
1570
1571 let cur_offset: usize = (2 - 1) * envelope_size;
1574
1575 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1577
1578 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1583 self.name.as_ref().map(
1584 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1585 ),
1586 encoder,
1587 offset + cur_offset,
1588 depth,
1589 )?;
1590
1591 _prev_end_offset = cur_offset + envelope_size;
1592 if 3 > max_ordinal {
1593 return Ok(());
1594 }
1595
1596 let cur_offset: usize = (3 - 1) * envelope_size;
1599
1600 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1602
1603 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedString, D>(
1608 self.vendor.as_ref().map(
1609 <fidl::encoding::UnboundedString as fidl::encoding::ValueTypeMarker>::borrow,
1610 ),
1611 encoder,
1612 offset + cur_offset,
1613 depth,
1614 )?;
1615
1616 _prev_end_offset = cur_offset + envelope_size;
1617 if 4 > max_ordinal {
1618 return Ok(());
1619 }
1620
1621 let cur_offset: usize = (4 - 1) * envelope_size;
1624
1625 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1627
1628 fidl::encoding::encode_in_envelope_optional::<i32, D>(
1633 self.version.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
1634 encoder,
1635 offset + cur_offset,
1636 depth,
1637 )?;
1638
1639 _prev_end_offset = cur_offset + envelope_size;
1640 if 5 > max_ordinal {
1641 return Ok(());
1642 }
1643
1644 let cur_offset: usize = (5 - 1) * envelope_size;
1647
1648 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1650
1651 fidl::encoding::encode_in_envelope_optional::<SensorType, D>(
1656 self.sensor_type
1657 .as_ref()
1658 .map(<SensorType as fidl::encoding::ValueTypeMarker>::borrow),
1659 encoder,
1660 offset + cur_offset,
1661 depth,
1662 )?;
1663
1664 _prev_end_offset = cur_offset + envelope_size;
1665 if 6 > max_ordinal {
1666 return Ok(());
1667 }
1668
1669 let cur_offset: usize = (6 - 1) * envelope_size;
1672
1673 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1675
1676 fidl::encoding::encode_in_envelope_optional::<SensorWakeUpType, D>(
1681 self.wake_up
1682 .as_ref()
1683 .map(<SensorWakeUpType as fidl::encoding::ValueTypeMarker>::borrow),
1684 encoder,
1685 offset + cur_offset,
1686 depth,
1687 )?;
1688
1689 _prev_end_offset = cur_offset + envelope_size;
1690 if 7 > max_ordinal {
1691 return Ok(());
1692 }
1693
1694 let cur_offset: usize = (7 - 1) * envelope_size;
1697
1698 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1700
1701 fidl::encoding::encode_in_envelope_optional::<SensorReportingMode, D>(
1706 self.reporting_mode
1707 .as_ref()
1708 .map(<SensorReportingMode as fidl::encoding::ValueTypeMarker>::borrow),
1709 encoder,
1710 offset + cur_offset,
1711 depth,
1712 )?;
1713
1714 _prev_end_offset = cur_offset + envelope_size;
1715 if 8 > max_ordinal {
1716 return Ok(());
1717 }
1718
1719 let cur_offset: usize = (8 - 1) * envelope_size;
1722
1723 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1725
1726 fidl::encoding::encode_in_envelope_optional::<Unit, D>(
1731 self.measurement_unit
1732 .as_ref()
1733 .map(<Unit as fidl::encoding::ValueTypeMarker>::borrow),
1734 encoder,
1735 offset + cur_offset,
1736 depth,
1737 )?;
1738
1739 _prev_end_offset = cur_offset + envelope_size;
1740 if 9 > max_ordinal {
1741 return Ok(());
1742 }
1743
1744 let cur_offset: usize = (9 - 1) * envelope_size;
1747
1748 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1750
1751 fidl::encoding::encode_in_envelope_optional::<Scale, D>(
1756 self.measurement_scale
1757 .as_ref()
1758 .map(<Scale as fidl::encoding::ValueTypeMarker>::borrow),
1759 encoder,
1760 offset + cur_offset,
1761 depth,
1762 )?;
1763
1764 _prev_end_offset = cur_offset + envelope_size;
1765
1766 Ok(())
1767 }
1768 }
1769
1770 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SensorInfo {
1771 #[inline(always)]
1772 fn new_empty() -> Self {
1773 Self::default()
1774 }
1775
1776 unsafe fn decode(
1777 &mut self,
1778 decoder: &mut fidl::encoding::Decoder<'_, D>,
1779 offset: usize,
1780 mut depth: fidl::encoding::Depth,
1781 ) -> fidl::Result<()> {
1782 decoder.debug_check_bounds::<Self>(offset);
1783 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1784 None => return Err(fidl::Error::NotNullable),
1785 Some(len) => len,
1786 };
1787 if len == 0 {
1789 return Ok(());
1790 };
1791 depth.increment()?;
1792 let envelope_size = 8;
1793 let bytes_len = len * envelope_size;
1794 let offset = decoder.out_of_line_offset(bytes_len)?;
1795 let mut _next_ordinal_to_read = 0;
1797 let mut next_offset = offset;
1798 let end_offset = offset + bytes_len;
1799 _next_ordinal_to_read += 1;
1800 if next_offset >= end_offset {
1801 return Ok(());
1802 }
1803
1804 while _next_ordinal_to_read < 1 {
1806 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1807 _next_ordinal_to_read += 1;
1808 next_offset += envelope_size;
1809 }
1810
1811 let next_out_of_line = decoder.next_out_of_line();
1812 let handles_before = decoder.remaining_handles();
1813 if let Some((inlined, num_bytes, num_handles)) =
1814 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1815 {
1816 let member_inline_size =
1817 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1818 if inlined != (member_inline_size <= 4) {
1819 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1820 }
1821 let inner_offset;
1822 let mut inner_depth = depth.clone();
1823 if inlined {
1824 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1825 inner_offset = next_offset;
1826 } else {
1827 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1828 inner_depth.increment()?;
1829 }
1830 let val_ref = self.sensor_id.get_or_insert_with(|| fidl::new_empty!(i32, D));
1831 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
1832 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1833 {
1834 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1835 }
1836 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1837 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1838 }
1839 }
1840
1841 next_offset += envelope_size;
1842 _next_ordinal_to_read += 1;
1843 if next_offset >= end_offset {
1844 return Ok(());
1845 }
1846
1847 while _next_ordinal_to_read < 2 {
1849 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1850 _next_ordinal_to_read += 1;
1851 next_offset += envelope_size;
1852 }
1853
1854 let next_out_of_line = decoder.next_out_of_line();
1855 let handles_before = decoder.remaining_handles();
1856 if let Some((inlined, num_bytes, num_handles)) =
1857 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1858 {
1859 let member_inline_size =
1860 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1861 decoder.context,
1862 );
1863 if inlined != (member_inline_size <= 4) {
1864 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1865 }
1866 let inner_offset;
1867 let mut inner_depth = depth.clone();
1868 if inlined {
1869 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1870 inner_offset = next_offset;
1871 } else {
1872 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1873 inner_depth.increment()?;
1874 }
1875 let val_ref = self
1876 .name
1877 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1878 fidl::decode!(
1879 fidl::encoding::UnboundedString,
1880 D,
1881 val_ref,
1882 decoder,
1883 inner_offset,
1884 inner_depth
1885 )?;
1886 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1887 {
1888 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1889 }
1890 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1891 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1892 }
1893 }
1894
1895 next_offset += envelope_size;
1896 _next_ordinal_to_read += 1;
1897 if next_offset >= end_offset {
1898 return Ok(());
1899 }
1900
1901 while _next_ordinal_to_read < 3 {
1903 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1904 _next_ordinal_to_read += 1;
1905 next_offset += envelope_size;
1906 }
1907
1908 let next_out_of_line = decoder.next_out_of_line();
1909 let handles_before = decoder.remaining_handles();
1910 if let Some((inlined, num_bytes, num_handles)) =
1911 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1912 {
1913 let member_inline_size =
1914 <fidl::encoding::UnboundedString as fidl::encoding::TypeMarker>::inline_size(
1915 decoder.context,
1916 );
1917 if inlined != (member_inline_size <= 4) {
1918 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1919 }
1920 let inner_offset;
1921 let mut inner_depth = depth.clone();
1922 if inlined {
1923 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1924 inner_offset = next_offset;
1925 } else {
1926 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1927 inner_depth.increment()?;
1928 }
1929 let val_ref = self
1930 .vendor
1931 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::UnboundedString, D));
1932 fidl::decode!(
1933 fidl::encoding::UnboundedString,
1934 D,
1935 val_ref,
1936 decoder,
1937 inner_offset,
1938 inner_depth
1939 )?;
1940 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1941 {
1942 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1943 }
1944 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1945 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1946 }
1947 }
1948
1949 next_offset += envelope_size;
1950 _next_ordinal_to_read += 1;
1951 if next_offset >= end_offset {
1952 return Ok(());
1953 }
1954
1955 while _next_ordinal_to_read < 4 {
1957 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1958 _next_ordinal_to_read += 1;
1959 next_offset += envelope_size;
1960 }
1961
1962 let next_out_of_line = decoder.next_out_of_line();
1963 let handles_before = decoder.remaining_handles();
1964 if let Some((inlined, num_bytes, num_handles)) =
1965 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1966 {
1967 let member_inline_size =
1968 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1969 if inlined != (member_inline_size <= 4) {
1970 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1971 }
1972 let inner_offset;
1973 let mut inner_depth = depth.clone();
1974 if inlined {
1975 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1976 inner_offset = next_offset;
1977 } else {
1978 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1979 inner_depth.increment()?;
1980 }
1981 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(i32, D));
1982 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
1983 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1984 {
1985 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1986 }
1987 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1988 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1989 }
1990 }
1991
1992 next_offset += envelope_size;
1993 _next_ordinal_to_read += 1;
1994 if next_offset >= end_offset {
1995 return Ok(());
1996 }
1997
1998 while _next_ordinal_to_read < 5 {
2000 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2001 _next_ordinal_to_read += 1;
2002 next_offset += envelope_size;
2003 }
2004
2005 let next_out_of_line = decoder.next_out_of_line();
2006 let handles_before = decoder.remaining_handles();
2007 if let Some((inlined, num_bytes, num_handles)) =
2008 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2009 {
2010 let member_inline_size =
2011 <SensorType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2012 if inlined != (member_inline_size <= 4) {
2013 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2014 }
2015 let inner_offset;
2016 let mut inner_depth = depth.clone();
2017 if inlined {
2018 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2019 inner_offset = next_offset;
2020 } else {
2021 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2022 inner_depth.increment()?;
2023 }
2024 let val_ref =
2025 self.sensor_type.get_or_insert_with(|| fidl::new_empty!(SensorType, D));
2026 fidl::decode!(SensorType, D, val_ref, decoder, inner_offset, inner_depth)?;
2027 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2028 {
2029 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2030 }
2031 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2032 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2033 }
2034 }
2035
2036 next_offset += envelope_size;
2037 _next_ordinal_to_read += 1;
2038 if next_offset >= end_offset {
2039 return Ok(());
2040 }
2041
2042 while _next_ordinal_to_read < 6 {
2044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2045 _next_ordinal_to_read += 1;
2046 next_offset += envelope_size;
2047 }
2048
2049 let next_out_of_line = decoder.next_out_of_line();
2050 let handles_before = decoder.remaining_handles();
2051 if let Some((inlined, num_bytes, num_handles)) =
2052 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2053 {
2054 let member_inline_size =
2055 <SensorWakeUpType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2056 if inlined != (member_inline_size <= 4) {
2057 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2058 }
2059 let inner_offset;
2060 let mut inner_depth = depth.clone();
2061 if inlined {
2062 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2063 inner_offset = next_offset;
2064 } else {
2065 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2066 inner_depth.increment()?;
2067 }
2068 let val_ref =
2069 self.wake_up.get_or_insert_with(|| fidl::new_empty!(SensorWakeUpType, D));
2070 fidl::decode!(SensorWakeUpType, D, val_ref, decoder, inner_offset, inner_depth)?;
2071 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2072 {
2073 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2074 }
2075 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2076 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2077 }
2078 }
2079
2080 next_offset += envelope_size;
2081 _next_ordinal_to_read += 1;
2082 if next_offset >= end_offset {
2083 return Ok(());
2084 }
2085
2086 while _next_ordinal_to_read < 7 {
2088 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2089 _next_ordinal_to_read += 1;
2090 next_offset += envelope_size;
2091 }
2092
2093 let next_out_of_line = decoder.next_out_of_line();
2094 let handles_before = decoder.remaining_handles();
2095 if let Some((inlined, num_bytes, num_handles)) =
2096 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2097 {
2098 let member_inline_size =
2099 <SensorReportingMode as fidl::encoding::TypeMarker>::inline_size(
2100 decoder.context,
2101 );
2102 if inlined != (member_inline_size <= 4) {
2103 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2104 }
2105 let inner_offset;
2106 let mut inner_depth = depth.clone();
2107 if inlined {
2108 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2109 inner_offset = next_offset;
2110 } else {
2111 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2112 inner_depth.increment()?;
2113 }
2114 let val_ref = self
2115 .reporting_mode
2116 .get_or_insert_with(|| fidl::new_empty!(SensorReportingMode, D));
2117 fidl::decode!(SensorReportingMode, D, val_ref, decoder, inner_offset, inner_depth)?;
2118 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2119 {
2120 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2121 }
2122 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2123 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2124 }
2125 }
2126
2127 next_offset += envelope_size;
2128 _next_ordinal_to_read += 1;
2129 if next_offset >= end_offset {
2130 return Ok(());
2131 }
2132
2133 while _next_ordinal_to_read < 8 {
2135 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2136 _next_ordinal_to_read += 1;
2137 next_offset += envelope_size;
2138 }
2139
2140 let next_out_of_line = decoder.next_out_of_line();
2141 let handles_before = decoder.remaining_handles();
2142 if let Some((inlined, num_bytes, num_handles)) =
2143 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2144 {
2145 let member_inline_size =
2146 <Unit as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2147 if inlined != (member_inline_size <= 4) {
2148 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2149 }
2150 let inner_offset;
2151 let mut inner_depth = depth.clone();
2152 if inlined {
2153 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2154 inner_offset = next_offset;
2155 } else {
2156 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2157 inner_depth.increment()?;
2158 }
2159 let val_ref =
2160 self.measurement_unit.get_or_insert_with(|| fidl::new_empty!(Unit, D));
2161 fidl::decode!(Unit, D, val_ref, decoder, inner_offset, inner_depth)?;
2162 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2163 {
2164 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2165 }
2166 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2167 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2168 }
2169 }
2170
2171 next_offset += envelope_size;
2172 _next_ordinal_to_read += 1;
2173 if next_offset >= end_offset {
2174 return Ok(());
2175 }
2176
2177 while _next_ordinal_to_read < 9 {
2179 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2180 _next_ordinal_to_read += 1;
2181 next_offset += envelope_size;
2182 }
2183
2184 let next_out_of_line = decoder.next_out_of_line();
2185 let handles_before = decoder.remaining_handles();
2186 if let Some((inlined, num_bytes, num_handles)) =
2187 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2188 {
2189 let member_inline_size =
2190 <Scale as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2191 if inlined != (member_inline_size <= 4) {
2192 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2193 }
2194 let inner_offset;
2195 let mut inner_depth = depth.clone();
2196 if inlined {
2197 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2198 inner_offset = next_offset;
2199 } else {
2200 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2201 inner_depth.increment()?;
2202 }
2203 let val_ref =
2204 self.measurement_scale.get_or_insert_with(|| fidl::new_empty!(Scale, D));
2205 fidl::decode!(Scale, D, val_ref, decoder, inner_offset, inner_depth)?;
2206 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2207 {
2208 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2209 }
2210 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2211 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2212 }
2213 }
2214
2215 next_offset += envelope_size;
2216
2217 while next_offset < end_offset {
2219 _next_ordinal_to_read += 1;
2220 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2221 next_offset += envelope_size;
2222 }
2223
2224 Ok(())
2225 }
2226 }
2227
2228 impl SensorRateConfig {
2229 #[inline(always)]
2230 fn max_ordinal_present(&self) -> u64 {
2231 if let Some(_) = self.max_reporting_latency_ns {
2232 return 2;
2233 }
2234 if let Some(_) = self.sampling_period_ns {
2235 return 1;
2236 }
2237 0
2238 }
2239 }
2240
2241 impl fidl::encoding::ValueTypeMarker for SensorRateConfig {
2242 type Borrowed<'a> = &'a Self;
2243 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2244 value
2245 }
2246 }
2247
2248 unsafe impl fidl::encoding::TypeMarker for SensorRateConfig {
2249 type Owned = Self;
2250
2251 #[inline(always)]
2252 fn inline_align(_context: fidl::encoding::Context) -> usize {
2253 8
2254 }
2255
2256 #[inline(always)]
2257 fn inline_size(_context: fidl::encoding::Context) -> usize {
2258 16
2259 }
2260 }
2261
2262 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SensorRateConfig, D>
2263 for &SensorRateConfig
2264 {
2265 unsafe fn encode(
2266 self,
2267 encoder: &mut fidl::encoding::Encoder<'_, D>,
2268 offset: usize,
2269 mut depth: fidl::encoding::Depth,
2270 ) -> fidl::Result<()> {
2271 encoder.debug_check_bounds::<SensorRateConfig>(offset);
2272 let max_ordinal: u64 = self.max_ordinal_present();
2274 encoder.write_num(max_ordinal, offset);
2275 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2276 if max_ordinal == 0 {
2278 return Ok(());
2279 }
2280 depth.increment()?;
2281 let envelope_size = 8;
2282 let bytes_len = max_ordinal as usize * envelope_size;
2283 #[allow(unused_variables)]
2284 let offset = encoder.out_of_line_offset(bytes_len);
2285 let mut _prev_end_offset: usize = 0;
2286 if 1 > max_ordinal {
2287 return Ok(());
2288 }
2289
2290 let cur_offset: usize = (1 - 1) * envelope_size;
2293
2294 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2296
2297 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2302 self.sampling_period_ns
2303 .as_ref()
2304 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2305 encoder,
2306 offset + cur_offset,
2307 depth,
2308 )?;
2309
2310 _prev_end_offset = cur_offset + envelope_size;
2311 if 2 > max_ordinal {
2312 return Ok(());
2313 }
2314
2315 let cur_offset: usize = (2 - 1) * envelope_size;
2318
2319 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2321
2322 fidl::encoding::encode_in_envelope_optional::<i64, D>(
2327 self.max_reporting_latency_ns
2328 .as_ref()
2329 .map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
2330 encoder,
2331 offset + cur_offset,
2332 depth,
2333 )?;
2334
2335 _prev_end_offset = cur_offset + envelope_size;
2336
2337 Ok(())
2338 }
2339 }
2340
2341 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SensorRateConfig {
2342 #[inline(always)]
2343 fn new_empty() -> Self {
2344 Self::default()
2345 }
2346
2347 unsafe fn decode(
2348 &mut self,
2349 decoder: &mut fidl::encoding::Decoder<'_, D>,
2350 offset: usize,
2351 mut depth: fidl::encoding::Depth,
2352 ) -> fidl::Result<()> {
2353 decoder.debug_check_bounds::<Self>(offset);
2354 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2355 None => return Err(fidl::Error::NotNullable),
2356 Some(len) => len,
2357 };
2358 if len == 0 {
2360 return Ok(());
2361 };
2362 depth.increment()?;
2363 let envelope_size = 8;
2364 let bytes_len = len * envelope_size;
2365 let offset = decoder.out_of_line_offset(bytes_len)?;
2366 let mut _next_ordinal_to_read = 0;
2368 let mut next_offset = offset;
2369 let end_offset = offset + bytes_len;
2370 _next_ordinal_to_read += 1;
2371 if next_offset >= end_offset {
2372 return Ok(());
2373 }
2374
2375 while _next_ordinal_to_read < 1 {
2377 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2378 _next_ordinal_to_read += 1;
2379 next_offset += envelope_size;
2380 }
2381
2382 let next_out_of_line = decoder.next_out_of_line();
2383 let handles_before = decoder.remaining_handles();
2384 if let Some((inlined, num_bytes, num_handles)) =
2385 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2386 {
2387 let member_inline_size =
2388 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2389 if inlined != (member_inline_size <= 4) {
2390 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2391 }
2392 let inner_offset;
2393 let mut inner_depth = depth.clone();
2394 if inlined {
2395 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2396 inner_offset = next_offset;
2397 } else {
2398 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2399 inner_depth.increment()?;
2400 }
2401 let val_ref =
2402 self.sampling_period_ns.get_or_insert_with(|| fidl::new_empty!(i64, D));
2403 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2405 {
2406 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2407 }
2408 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2409 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2410 }
2411 }
2412
2413 next_offset += envelope_size;
2414 _next_ordinal_to_read += 1;
2415 if next_offset >= end_offset {
2416 return Ok(());
2417 }
2418
2419 while _next_ordinal_to_read < 2 {
2421 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2422 _next_ordinal_to_read += 1;
2423 next_offset += envelope_size;
2424 }
2425
2426 let next_out_of_line = decoder.next_out_of_line();
2427 let handles_before = decoder.remaining_handles();
2428 if let Some((inlined, num_bytes, num_handles)) =
2429 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2430 {
2431 let member_inline_size =
2432 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2433 if inlined != (member_inline_size <= 4) {
2434 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2435 }
2436 let inner_offset;
2437 let mut inner_depth = depth.clone();
2438 if inlined {
2439 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2440 inner_offset = next_offset;
2441 } else {
2442 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2443 inner_depth.increment()?;
2444 }
2445 let val_ref =
2446 self.max_reporting_latency_ns.get_or_insert_with(|| fidl::new_empty!(i64, D));
2447 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2448 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2449 {
2450 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2451 }
2452 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2453 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2454 }
2455 }
2456
2457 next_offset += envelope_size;
2458
2459 while next_offset < end_offset {
2461 _next_ordinal_to_read += 1;
2462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2463 next_offset += envelope_size;
2464 }
2465
2466 Ok(())
2467 }
2468 }
2469
2470 impl fidl::encoding::ValueTypeMarker for EventPayload {
2471 type Borrowed<'a> = &'a Self;
2472 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2473 value
2474 }
2475 }
2476
2477 unsafe impl fidl::encoding::TypeMarker for EventPayload {
2478 type Owned = Self;
2479
2480 #[inline(always)]
2481 fn inline_align(_context: fidl::encoding::Context) -> usize {
2482 8
2483 }
2484
2485 #[inline(always)]
2486 fn inline_size(_context: fidl::encoding::Context) -> usize {
2487 16
2488 }
2489 }
2490
2491 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<EventPayload, D>
2492 for &EventPayload
2493 {
2494 #[inline]
2495 unsafe fn encode(
2496 self,
2497 encoder: &mut fidl::encoding::Encoder<'_, D>,
2498 offset: usize,
2499 _depth: fidl::encoding::Depth,
2500 ) -> fidl::Result<()> {
2501 encoder.debug_check_bounds::<EventPayload>(offset);
2502 encoder.write_num::<u64>(self.ordinal(), offset);
2503 match self {
2504 EventPayload::Vec3(ref val) => fidl::encoding::encode_in_envelope::<
2505 fidl_fuchsia_math__common::Vec3F,
2506 D,
2507 >(
2508 <fidl_fuchsia_math__common::Vec3F as fidl::encoding::ValueTypeMarker>::borrow(
2509 val,
2510 ),
2511 encoder,
2512 offset + 8,
2513 _depth,
2514 ),
2515 EventPayload::Quaternion(ref val) => fidl::encoding::encode_in_envelope::<
2516 fidl_fuchsia_math__common::Vec4F,
2517 D,
2518 >(
2519 <fidl_fuchsia_math__common::Vec4F as fidl::encoding::ValueTypeMarker>::borrow(
2520 val,
2521 ),
2522 encoder,
2523 offset + 8,
2524 _depth,
2525 ),
2526 EventPayload::UncalibratedVec3(ref val) => {
2527 fidl::encoding::encode_in_envelope::<UncalibratedVec3FSample, D>(
2528 <UncalibratedVec3FSample as fidl::encoding::ValueTypeMarker>::borrow(val),
2529 encoder,
2530 offset + 8,
2531 _depth,
2532 )
2533 }
2534 EventPayload::Float(ref val) => fidl::encoding::encode_in_envelope::<f32, D>(
2535 <f32 as fidl::encoding::ValueTypeMarker>::borrow(val),
2536 encoder,
2537 offset + 8,
2538 _depth,
2539 ),
2540 EventPayload::Integer(ref val) => fidl::encoding::encode_in_envelope::<u64, D>(
2541 <u64 as fidl::encoding::ValueTypeMarker>::borrow(val),
2542 encoder,
2543 offset + 8,
2544 _depth,
2545 ),
2546 EventPayload::Pose(ref val) => fidl::encoding::encode_in_envelope::<Pose, D>(
2547 <Pose as fidl::encoding::ValueTypeMarker>::borrow(val),
2548 encoder,
2549 offset + 8,
2550 _depth,
2551 ),
2552 EventPayload::__SourceBreaking { .. } => Err(fidl::Error::UnknownUnionTag),
2553 }
2554 }
2555 }
2556
2557 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EventPayload {
2558 #[inline(always)]
2559 fn new_empty() -> Self {
2560 Self::__SourceBreaking { unknown_ordinal: 0 }
2561 }
2562
2563 #[inline]
2564 unsafe fn decode(
2565 &mut self,
2566 decoder: &mut fidl::encoding::Decoder<'_, D>,
2567 offset: usize,
2568 mut depth: fidl::encoding::Depth,
2569 ) -> fidl::Result<()> {
2570 decoder.debug_check_bounds::<Self>(offset);
2571 #[allow(unused_variables)]
2572 let next_out_of_line = decoder.next_out_of_line();
2573 let handles_before = decoder.remaining_handles();
2574 let (ordinal, inlined, num_bytes, num_handles) =
2575 fidl::encoding::decode_union_inline_portion(decoder, offset)?;
2576
2577 let member_inline_size = match ordinal {
2578 1 => <fidl_fuchsia_math__common::Vec3F as fidl::encoding::TypeMarker>::inline_size(
2579 decoder.context,
2580 ),
2581 2 => <fidl_fuchsia_math__common::Vec4F as fidl::encoding::TypeMarker>::inline_size(
2582 decoder.context,
2583 ),
2584 3 => <UncalibratedVec3FSample as fidl::encoding::TypeMarker>::inline_size(
2585 decoder.context,
2586 ),
2587 4 => <f32 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2588 5 => <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2589 6 => <Pose as fidl::encoding::TypeMarker>::inline_size(decoder.context),
2590 0 => return Err(fidl::Error::UnknownUnionTag),
2591 _ => num_bytes as usize,
2592 };
2593
2594 if inlined != (member_inline_size <= 4) {
2595 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2596 }
2597 let _inner_offset;
2598 if inlined {
2599 decoder.check_inline_envelope_padding(offset + 8, member_inline_size)?;
2600 _inner_offset = offset + 8;
2601 } else {
2602 depth.increment()?;
2603 _inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2604 }
2605 match ordinal {
2606 1 => {
2607 #[allow(irrefutable_let_patterns)]
2608 if let EventPayload::Vec3(_) = self {
2609 } else {
2611 *self = EventPayload::Vec3(fidl::new_empty!(
2613 fidl_fuchsia_math__common::Vec3F,
2614 D
2615 ));
2616 }
2617 #[allow(irrefutable_let_patterns)]
2618 if let EventPayload::Vec3(ref mut val) = self {
2619 fidl::decode!(
2620 fidl_fuchsia_math__common::Vec3F,
2621 D,
2622 val,
2623 decoder,
2624 _inner_offset,
2625 depth
2626 )?;
2627 } else {
2628 unreachable!()
2629 }
2630 }
2631 2 => {
2632 #[allow(irrefutable_let_patterns)]
2633 if let EventPayload::Quaternion(_) = self {
2634 } else {
2636 *self = EventPayload::Quaternion(fidl::new_empty!(
2638 fidl_fuchsia_math__common::Vec4F,
2639 D
2640 ));
2641 }
2642 #[allow(irrefutable_let_patterns)]
2643 if let EventPayload::Quaternion(ref mut val) = self {
2644 fidl::decode!(
2645 fidl_fuchsia_math__common::Vec4F,
2646 D,
2647 val,
2648 decoder,
2649 _inner_offset,
2650 depth
2651 )?;
2652 } else {
2653 unreachable!()
2654 }
2655 }
2656 3 => {
2657 #[allow(irrefutable_let_patterns)]
2658 if let EventPayload::UncalibratedVec3(_) = self {
2659 } else {
2661 *self = EventPayload::UncalibratedVec3(fidl::new_empty!(
2663 UncalibratedVec3FSample,
2664 D
2665 ));
2666 }
2667 #[allow(irrefutable_let_patterns)]
2668 if let EventPayload::UncalibratedVec3(ref mut val) = self {
2669 fidl::decode!(
2670 UncalibratedVec3FSample,
2671 D,
2672 val,
2673 decoder,
2674 _inner_offset,
2675 depth
2676 )?;
2677 } else {
2678 unreachable!()
2679 }
2680 }
2681 4 => {
2682 #[allow(irrefutable_let_patterns)]
2683 if let EventPayload::Float(_) = self {
2684 } else {
2686 *self = EventPayload::Float(fidl::new_empty!(f32, D));
2688 }
2689 #[allow(irrefutable_let_patterns)]
2690 if let EventPayload::Float(ref mut val) = self {
2691 fidl::decode!(f32, D, val, decoder, _inner_offset, depth)?;
2692 } else {
2693 unreachable!()
2694 }
2695 }
2696 5 => {
2697 #[allow(irrefutable_let_patterns)]
2698 if let EventPayload::Integer(_) = self {
2699 } else {
2701 *self = EventPayload::Integer(fidl::new_empty!(u64, D));
2703 }
2704 #[allow(irrefutable_let_patterns)]
2705 if let EventPayload::Integer(ref mut val) = self {
2706 fidl::decode!(u64, D, val, decoder, _inner_offset, depth)?;
2707 } else {
2708 unreachable!()
2709 }
2710 }
2711 6 => {
2712 #[allow(irrefutable_let_patterns)]
2713 if let EventPayload::Pose(_) = self {
2714 } else {
2716 *self = EventPayload::Pose(fidl::new_empty!(Pose, D));
2718 }
2719 #[allow(irrefutable_let_patterns)]
2720 if let EventPayload::Pose(ref mut val) = self {
2721 fidl::decode!(Pose, D, val, decoder, _inner_offset, depth)?;
2722 } else {
2723 unreachable!()
2724 }
2725 }
2726 #[allow(deprecated)]
2727 ordinal => {
2728 for _ in 0..num_handles {
2729 decoder.drop_next_handle()?;
2730 }
2731 *self = EventPayload::__SourceBreaking { unknown_ordinal: ordinal };
2732 }
2733 }
2734 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize) {
2735 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2736 }
2737 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2738 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2739 }
2740 Ok(())
2741 }
2742 }
2743}