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 ReportId = u8;
12
13pub const MAX_DESC_LEN: u16 = 8192;
14
15pub const MAX_REPORT_DATA: u16 = 8192;
16
17pub const MAX_REPORT_LEN: u16 = 8192;
18
19#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
21#[repr(u8)]
22pub enum HidBootProtocol {
23 None = 0,
24 Kbd = 1,
25 Pointer = 2,
26 Other = 3,
27}
28
29impl HidBootProtocol {
30 #[inline]
31 pub fn from_primitive(prim: u8) -> Option<Self> {
32 match prim {
33 0 => Some(Self::None),
34 1 => Some(Self::Kbd),
35 2 => Some(Self::Pointer),
36 3 => Some(Self::Other),
37 _ => None,
38 }
39 }
40
41 #[inline]
42 pub const fn into_primitive(self) -> u8 {
43 self as u8
44 }
45}
46
47#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
49#[repr(u8)]
50pub enum HidDescriptorType {
51 Hid = 33,
52 Report = 34,
53 Physical = 35,
54}
55
56impl HidDescriptorType {
57 #[inline]
58 pub fn from_primitive(prim: u8) -> Option<Self> {
59 match prim {
60 33 => Some(Self::Hid),
61 34 => Some(Self::Report),
62 35 => Some(Self::Physical),
63 _ => None,
64 }
65 }
66
67 #[inline]
68 pub const fn into_primitive(self) -> u8 {
69 self as u8
70 }
71}
72
73#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
75#[repr(u8)]
76pub enum HidProtocol {
77 Boot = 0,
78 Report = 1,
79}
80
81impl HidProtocol {
82 #[inline]
83 pub fn from_primitive(prim: u8) -> Option<Self> {
84 match prim {
85 0 => Some(Self::Boot),
86 1 => Some(Self::Report),
87 _ => None,
88 }
89 }
90
91 #[inline]
92 pub const fn into_primitive(self) -> u8 {
93 self as u8
94 }
95}
96
97#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
98#[repr(u8)]
99pub enum ReportType {
100 Input = 1,
101 Output = 2,
102 Feature = 3,
103}
104
105impl ReportType {
106 #[inline]
107 pub fn from_primitive(prim: u8) -> Option<Self> {
108 match prim {
109 1 => Some(Self::Input),
110 2 => Some(Self::Output),
111 3 => Some(Self::Feature),
112 _ => None,
113 }
114 }
115
116 #[inline]
117 pub const fn into_primitive(self) -> u8 {
118 self as u8
119 }
120}
121
122#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
123pub struct HidbusGetDescriptorRequest {
124 pub desc_type: HidDescriptorType,
125}
126
127impl fidl::Persistable for HidbusGetDescriptorRequest {}
128
129#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
130#[repr(C)]
131pub struct HidbusGetIdleRequest {
132 pub rpt_id: u8,
133}
134
135impl fidl::Persistable for HidbusGetIdleRequest {}
136
137#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
138pub struct HidbusGetReportRequest {
139 pub rpt_type: ReportType,
140 pub rpt_id: u8,
141 pub len: u64,
142}
143
144impl fidl::Persistable for HidbusGetReportRequest {}
145
146#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
147pub struct HidbusSetDescriptorRequest {
148 pub desc_type: HidDescriptorType,
149 pub data: Vec<u8>,
150}
151
152impl fidl::Persistable for HidbusSetDescriptorRequest {}
153
154#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
155#[repr(C)]
156pub struct HidbusSetIdleRequest {
157 pub rpt_id: u8,
158 pub duration: i64,
159}
160
161impl fidl::Persistable for HidbusSetIdleRequest {}
162
163#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
164pub struct HidbusSetProtocolRequest {
165 pub protocol: HidProtocol,
166}
167
168impl fidl::Persistable for HidbusSetProtocolRequest {}
169
170#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
171pub struct HidbusSetReportRequest {
172 pub rpt_type: ReportType,
173 pub rpt_id: u8,
174 pub data: Vec<u8>,
175}
176
177impl fidl::Persistable for HidbusSetReportRequest {}
178
179#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
180pub struct HidbusGetDescriptorResponse {
181 pub data: Vec<u8>,
182}
183
184impl fidl::Persistable for HidbusGetDescriptorResponse {}
185
186#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
187#[repr(C)]
188pub struct HidbusGetIdleResponse {
189 pub duration: i64,
190}
191
192impl fidl::Persistable for HidbusGetIdleResponse {}
193
194#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
195pub struct HidbusGetProtocolResponse {
196 pub protocol: HidProtocol,
197}
198
199impl fidl::Persistable for HidbusGetProtocolResponse {}
200
201#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
202pub struct HidbusGetReportResponse {
203 pub data: Vec<u8>,
204}
205
206impl fidl::Persistable for HidbusGetReportResponse {}
207
208#[derive(Clone, Debug, PartialEq)]
209pub struct HidbusQueryResponse {
210 pub info: HidInfo,
211}
212
213impl fidl::Persistable for HidbusQueryResponse {}
214
215#[derive(Clone, Debug, Default, PartialEq)]
216pub struct HidInfo {
217 pub dev_num: Option<u8>,
218 pub boot_protocol: Option<HidBootProtocol>,
219 pub vendor_id: Option<u32>,
220 pub product_id: Option<u32>,
221 pub version: Option<u32>,
222 pub polling_rate: Option<i64>,
224 #[doc(hidden)]
225 pub __source_breaking: fidl::marker::SourceBreaking,
226}
227
228impl fidl::Persistable for HidInfo {}
229
230mod internal {
231 use super::*;
232 unsafe impl fidl::encoding::TypeMarker for HidBootProtocol {
233 type Owned = Self;
234
235 #[inline(always)]
236 fn inline_align(_context: fidl::encoding::Context) -> usize {
237 std::mem::align_of::<u8>()
238 }
239
240 #[inline(always)]
241 fn inline_size(_context: fidl::encoding::Context) -> usize {
242 std::mem::size_of::<u8>()
243 }
244
245 #[inline(always)]
246 fn encode_is_copy() -> bool {
247 true
248 }
249
250 #[inline(always)]
251 fn decode_is_copy() -> bool {
252 false
253 }
254 }
255
256 impl fidl::encoding::ValueTypeMarker for HidBootProtocol {
257 type Borrowed<'a> = Self;
258 #[inline(always)]
259 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
260 *value
261 }
262 }
263
264 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
265 for HidBootProtocol
266 {
267 #[inline]
268 unsafe fn encode(
269 self,
270 encoder: &mut fidl::encoding::Encoder<'_, D>,
271 offset: usize,
272 _depth: fidl::encoding::Depth,
273 ) -> fidl::Result<()> {
274 encoder.debug_check_bounds::<Self>(offset);
275 encoder.write_num(self.into_primitive(), offset);
276 Ok(())
277 }
278 }
279
280 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidBootProtocol {
281 #[inline(always)]
282 fn new_empty() -> Self {
283 Self::None
284 }
285
286 #[inline]
287 unsafe fn decode(
288 &mut self,
289 decoder: &mut fidl::encoding::Decoder<'_, D>,
290 offset: usize,
291 _depth: fidl::encoding::Depth,
292 ) -> fidl::Result<()> {
293 decoder.debug_check_bounds::<Self>(offset);
294 let prim = decoder.read_num::<u8>(offset);
295
296 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
297 Ok(())
298 }
299 }
300 unsafe impl fidl::encoding::TypeMarker for HidDescriptorType {
301 type Owned = Self;
302
303 #[inline(always)]
304 fn inline_align(_context: fidl::encoding::Context) -> usize {
305 std::mem::align_of::<u8>()
306 }
307
308 #[inline(always)]
309 fn inline_size(_context: fidl::encoding::Context) -> usize {
310 std::mem::size_of::<u8>()
311 }
312
313 #[inline(always)]
314 fn encode_is_copy() -> bool {
315 true
316 }
317
318 #[inline(always)]
319 fn decode_is_copy() -> bool {
320 false
321 }
322 }
323
324 impl fidl::encoding::ValueTypeMarker for HidDescriptorType {
325 type Borrowed<'a> = Self;
326 #[inline(always)]
327 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
328 *value
329 }
330 }
331
332 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
333 for HidDescriptorType
334 {
335 #[inline]
336 unsafe fn encode(
337 self,
338 encoder: &mut fidl::encoding::Encoder<'_, D>,
339 offset: usize,
340 _depth: fidl::encoding::Depth,
341 ) -> fidl::Result<()> {
342 encoder.debug_check_bounds::<Self>(offset);
343 encoder.write_num(self.into_primitive(), offset);
344 Ok(())
345 }
346 }
347
348 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidDescriptorType {
349 #[inline(always)]
350 fn new_empty() -> Self {
351 Self::Hid
352 }
353
354 #[inline]
355 unsafe fn decode(
356 &mut self,
357 decoder: &mut fidl::encoding::Decoder<'_, D>,
358 offset: usize,
359 _depth: fidl::encoding::Depth,
360 ) -> fidl::Result<()> {
361 decoder.debug_check_bounds::<Self>(offset);
362 let prim = decoder.read_num::<u8>(offset);
363
364 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
365 Ok(())
366 }
367 }
368 unsafe impl fidl::encoding::TypeMarker for HidProtocol {
369 type Owned = Self;
370
371 #[inline(always)]
372 fn inline_align(_context: fidl::encoding::Context) -> usize {
373 std::mem::align_of::<u8>()
374 }
375
376 #[inline(always)]
377 fn inline_size(_context: fidl::encoding::Context) -> usize {
378 std::mem::size_of::<u8>()
379 }
380
381 #[inline(always)]
382 fn encode_is_copy() -> bool {
383 true
384 }
385
386 #[inline(always)]
387 fn decode_is_copy() -> bool {
388 false
389 }
390 }
391
392 impl fidl::encoding::ValueTypeMarker for HidProtocol {
393 type Borrowed<'a> = Self;
394 #[inline(always)]
395 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
396 *value
397 }
398 }
399
400 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HidProtocol {
401 #[inline]
402 unsafe fn encode(
403 self,
404 encoder: &mut fidl::encoding::Encoder<'_, D>,
405 offset: usize,
406 _depth: fidl::encoding::Depth,
407 ) -> fidl::Result<()> {
408 encoder.debug_check_bounds::<Self>(offset);
409 encoder.write_num(self.into_primitive(), offset);
410 Ok(())
411 }
412 }
413
414 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidProtocol {
415 #[inline(always)]
416 fn new_empty() -> Self {
417 Self::Boot
418 }
419
420 #[inline]
421 unsafe fn decode(
422 &mut self,
423 decoder: &mut fidl::encoding::Decoder<'_, D>,
424 offset: usize,
425 _depth: fidl::encoding::Depth,
426 ) -> fidl::Result<()> {
427 decoder.debug_check_bounds::<Self>(offset);
428 let prim = decoder.read_num::<u8>(offset);
429
430 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
431 Ok(())
432 }
433 }
434 unsafe impl fidl::encoding::TypeMarker for ReportType {
435 type Owned = Self;
436
437 #[inline(always)]
438 fn inline_align(_context: fidl::encoding::Context) -> usize {
439 std::mem::align_of::<u8>()
440 }
441
442 #[inline(always)]
443 fn inline_size(_context: fidl::encoding::Context) -> usize {
444 std::mem::size_of::<u8>()
445 }
446
447 #[inline(always)]
448 fn encode_is_copy() -> bool {
449 true
450 }
451
452 #[inline(always)]
453 fn decode_is_copy() -> bool {
454 false
455 }
456 }
457
458 impl fidl::encoding::ValueTypeMarker for ReportType {
459 type Borrowed<'a> = Self;
460 #[inline(always)]
461 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
462 *value
463 }
464 }
465
466 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReportType {
467 #[inline]
468 unsafe fn encode(
469 self,
470 encoder: &mut fidl::encoding::Encoder<'_, D>,
471 offset: usize,
472 _depth: fidl::encoding::Depth,
473 ) -> fidl::Result<()> {
474 encoder.debug_check_bounds::<Self>(offset);
475 encoder.write_num(self.into_primitive(), offset);
476 Ok(())
477 }
478 }
479
480 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReportType {
481 #[inline(always)]
482 fn new_empty() -> Self {
483 Self::Input
484 }
485
486 #[inline]
487 unsafe fn decode(
488 &mut self,
489 decoder: &mut fidl::encoding::Decoder<'_, D>,
490 offset: usize,
491 _depth: fidl::encoding::Depth,
492 ) -> fidl::Result<()> {
493 decoder.debug_check_bounds::<Self>(offset);
494 let prim = decoder.read_num::<u8>(offset);
495
496 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
497 Ok(())
498 }
499 }
500
501 impl fidl::encoding::ValueTypeMarker for HidbusGetDescriptorRequest {
502 type Borrowed<'a> = &'a Self;
503 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
504 value
505 }
506 }
507
508 unsafe impl fidl::encoding::TypeMarker for HidbusGetDescriptorRequest {
509 type Owned = Self;
510
511 #[inline(always)]
512 fn inline_align(_context: fidl::encoding::Context) -> usize {
513 1
514 }
515
516 #[inline(always)]
517 fn inline_size(_context: fidl::encoding::Context) -> usize {
518 1
519 }
520 }
521
522 unsafe impl<D: fidl::encoding::ResourceDialect>
523 fidl::encoding::Encode<HidbusGetDescriptorRequest, D> for &HidbusGetDescriptorRequest
524 {
525 #[inline]
526 unsafe fn encode(
527 self,
528 encoder: &mut fidl::encoding::Encoder<'_, D>,
529 offset: usize,
530 _depth: fidl::encoding::Depth,
531 ) -> fidl::Result<()> {
532 encoder.debug_check_bounds::<HidbusGetDescriptorRequest>(offset);
533 fidl::encoding::Encode::<HidbusGetDescriptorRequest, D>::encode(
535 (<HidDescriptorType as fidl::encoding::ValueTypeMarker>::borrow(&self.desc_type),),
536 encoder,
537 offset,
538 _depth,
539 )
540 }
541 }
542 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidDescriptorType, D>>
543 fidl::encoding::Encode<HidbusGetDescriptorRequest, D> for (T0,)
544 {
545 #[inline]
546 unsafe fn encode(
547 self,
548 encoder: &mut fidl::encoding::Encoder<'_, D>,
549 offset: usize,
550 depth: fidl::encoding::Depth,
551 ) -> fidl::Result<()> {
552 encoder.debug_check_bounds::<HidbusGetDescriptorRequest>(offset);
553 self.0.encode(encoder, offset + 0, depth)?;
557 Ok(())
558 }
559 }
560
561 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
562 for HidbusGetDescriptorRequest
563 {
564 #[inline(always)]
565 fn new_empty() -> Self {
566 Self { desc_type: fidl::new_empty!(HidDescriptorType, D) }
567 }
568
569 #[inline]
570 unsafe fn decode(
571 &mut self,
572 decoder: &mut fidl::encoding::Decoder<'_, D>,
573 offset: usize,
574 _depth: fidl::encoding::Depth,
575 ) -> fidl::Result<()> {
576 decoder.debug_check_bounds::<Self>(offset);
577 fidl::decode!(HidDescriptorType, D, &mut self.desc_type, decoder, offset + 0, _depth)?;
579 Ok(())
580 }
581 }
582
583 impl fidl::encoding::ValueTypeMarker for HidbusGetIdleRequest {
584 type Borrowed<'a> = &'a Self;
585 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
586 value
587 }
588 }
589
590 unsafe impl fidl::encoding::TypeMarker for HidbusGetIdleRequest {
591 type Owned = Self;
592
593 #[inline(always)]
594 fn inline_align(_context: fidl::encoding::Context) -> usize {
595 1
596 }
597
598 #[inline(always)]
599 fn inline_size(_context: fidl::encoding::Context) -> usize {
600 1
601 }
602 #[inline(always)]
603 fn encode_is_copy() -> bool {
604 true
605 }
606
607 #[inline(always)]
608 fn decode_is_copy() -> bool {
609 true
610 }
611 }
612
613 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusGetIdleRequest, D>
614 for &HidbusGetIdleRequest
615 {
616 #[inline]
617 unsafe fn encode(
618 self,
619 encoder: &mut fidl::encoding::Encoder<'_, D>,
620 offset: usize,
621 _depth: fidl::encoding::Depth,
622 ) -> fidl::Result<()> {
623 encoder.debug_check_bounds::<HidbusGetIdleRequest>(offset);
624 unsafe {
625 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
627 (buf_ptr as *mut HidbusGetIdleRequest)
628 .write_unaligned((self as *const HidbusGetIdleRequest).read());
629 }
632 Ok(())
633 }
634 }
635 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
636 fidl::encoding::Encode<HidbusGetIdleRequest, D> for (T0,)
637 {
638 #[inline]
639 unsafe fn encode(
640 self,
641 encoder: &mut fidl::encoding::Encoder<'_, D>,
642 offset: usize,
643 depth: fidl::encoding::Depth,
644 ) -> fidl::Result<()> {
645 encoder.debug_check_bounds::<HidbusGetIdleRequest>(offset);
646 self.0.encode(encoder, offset + 0, depth)?;
650 Ok(())
651 }
652 }
653
654 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusGetIdleRequest {
655 #[inline(always)]
656 fn new_empty() -> Self {
657 Self { rpt_id: fidl::new_empty!(u8, D) }
658 }
659
660 #[inline]
661 unsafe fn decode(
662 &mut self,
663 decoder: &mut fidl::encoding::Decoder<'_, D>,
664 offset: usize,
665 _depth: fidl::encoding::Depth,
666 ) -> fidl::Result<()> {
667 decoder.debug_check_bounds::<Self>(offset);
668 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
669 unsafe {
672 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
673 }
674 Ok(())
675 }
676 }
677
678 impl fidl::encoding::ValueTypeMarker for HidbusGetReportRequest {
679 type Borrowed<'a> = &'a Self;
680 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
681 value
682 }
683 }
684
685 unsafe impl fidl::encoding::TypeMarker for HidbusGetReportRequest {
686 type Owned = Self;
687
688 #[inline(always)]
689 fn inline_align(_context: fidl::encoding::Context) -> usize {
690 8
691 }
692
693 #[inline(always)]
694 fn inline_size(_context: fidl::encoding::Context) -> usize {
695 16
696 }
697 }
698
699 unsafe impl<D: fidl::encoding::ResourceDialect>
700 fidl::encoding::Encode<HidbusGetReportRequest, D> for &HidbusGetReportRequest
701 {
702 #[inline]
703 unsafe fn encode(
704 self,
705 encoder: &mut fidl::encoding::Encoder<'_, D>,
706 offset: usize,
707 _depth: fidl::encoding::Depth,
708 ) -> fidl::Result<()> {
709 encoder.debug_check_bounds::<HidbusGetReportRequest>(offset);
710 fidl::encoding::Encode::<HidbusGetReportRequest, D>::encode(
712 (
713 <ReportType as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_type),
714 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_id),
715 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.len),
716 ),
717 encoder,
718 offset,
719 _depth,
720 )
721 }
722 }
723 unsafe impl<
724 D: fidl::encoding::ResourceDialect,
725 T0: fidl::encoding::Encode<ReportType, D>,
726 T1: fidl::encoding::Encode<u8, D>,
727 T2: fidl::encoding::Encode<u64, D>,
728 > fidl::encoding::Encode<HidbusGetReportRequest, D> for (T0, T1, T2)
729 {
730 #[inline]
731 unsafe fn encode(
732 self,
733 encoder: &mut fidl::encoding::Encoder<'_, D>,
734 offset: usize,
735 depth: fidl::encoding::Depth,
736 ) -> fidl::Result<()> {
737 encoder.debug_check_bounds::<HidbusGetReportRequest>(offset);
738 unsafe {
741 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
742 (ptr as *mut u64).write_unaligned(0);
743 }
744 self.0.encode(encoder, offset + 0, depth)?;
746 self.1.encode(encoder, offset + 1, depth)?;
747 self.2.encode(encoder, offset + 8, depth)?;
748 Ok(())
749 }
750 }
751
752 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
753 for HidbusGetReportRequest
754 {
755 #[inline(always)]
756 fn new_empty() -> Self {
757 Self {
758 rpt_type: fidl::new_empty!(ReportType, D),
759 rpt_id: fidl::new_empty!(u8, D),
760 len: fidl::new_empty!(u64, D),
761 }
762 }
763
764 #[inline]
765 unsafe fn decode(
766 &mut self,
767 decoder: &mut fidl::encoding::Decoder<'_, D>,
768 offset: usize,
769 _depth: fidl::encoding::Depth,
770 ) -> fidl::Result<()> {
771 decoder.debug_check_bounds::<Self>(offset);
772 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
774 let padval = unsafe { (ptr as *const u64).read_unaligned() };
775 let mask = 0xffffffffffff0000u64;
776 let maskedval = padval & mask;
777 if maskedval != 0 {
778 return Err(fidl::Error::NonZeroPadding {
779 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
780 });
781 }
782 fidl::decode!(ReportType, D, &mut self.rpt_type, decoder, offset + 0, _depth)?;
783 fidl::decode!(u8, D, &mut self.rpt_id, decoder, offset + 1, _depth)?;
784 fidl::decode!(u64, D, &mut self.len, decoder, offset + 8, _depth)?;
785 Ok(())
786 }
787 }
788
789 impl fidl::encoding::ValueTypeMarker for HidbusSetDescriptorRequest {
790 type Borrowed<'a> = &'a Self;
791 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
792 value
793 }
794 }
795
796 unsafe impl fidl::encoding::TypeMarker for HidbusSetDescriptorRequest {
797 type Owned = Self;
798
799 #[inline(always)]
800 fn inline_align(_context: fidl::encoding::Context) -> usize {
801 8
802 }
803
804 #[inline(always)]
805 fn inline_size(_context: fidl::encoding::Context) -> usize {
806 24
807 }
808 }
809
810 unsafe impl<D: fidl::encoding::ResourceDialect>
811 fidl::encoding::Encode<HidbusSetDescriptorRequest, D> for &HidbusSetDescriptorRequest
812 {
813 #[inline]
814 unsafe fn encode(
815 self,
816 encoder: &mut fidl::encoding::Encoder<'_, D>,
817 offset: usize,
818 _depth: fidl::encoding::Depth,
819 ) -> fidl::Result<()> {
820 encoder.debug_check_bounds::<HidbusSetDescriptorRequest>(offset);
821 fidl::encoding::Encode::<HidbusSetDescriptorRequest, D>::encode(
823 (
824 <HidDescriptorType as fidl::encoding::ValueTypeMarker>::borrow(&self.desc_type),
825 <fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
826 &self.data,
827 ),
828 ),
829 encoder,
830 offset,
831 _depth,
832 )
833 }
834 }
835 unsafe impl<
836 D: fidl::encoding::ResourceDialect,
837 T0: fidl::encoding::Encode<HidDescriptorType, D>,
838 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
839 > fidl::encoding::Encode<HidbusSetDescriptorRequest, D> for (T0, T1)
840 {
841 #[inline]
842 unsafe fn encode(
843 self,
844 encoder: &mut fidl::encoding::Encoder<'_, D>,
845 offset: usize,
846 depth: fidl::encoding::Depth,
847 ) -> fidl::Result<()> {
848 encoder.debug_check_bounds::<HidbusSetDescriptorRequest>(offset);
849 unsafe {
852 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
853 (ptr as *mut u64).write_unaligned(0);
854 }
855 self.0.encode(encoder, offset + 0, depth)?;
857 self.1.encode(encoder, offset + 8, depth)?;
858 Ok(())
859 }
860 }
861
862 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
863 for HidbusSetDescriptorRequest
864 {
865 #[inline(always)]
866 fn new_empty() -> Self {
867 Self {
868 desc_type: fidl::new_empty!(HidDescriptorType, D),
869 data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D),
870 }
871 }
872
873 #[inline]
874 unsafe fn decode(
875 &mut self,
876 decoder: &mut fidl::encoding::Decoder<'_, D>,
877 offset: usize,
878 _depth: fidl::encoding::Depth,
879 ) -> fidl::Result<()> {
880 decoder.debug_check_bounds::<Self>(offset);
881 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
883 let padval = unsafe { (ptr as *const u64).read_unaligned() };
884 let mask = 0xffffffffffffff00u64;
885 let maskedval = padval & mask;
886 if maskedval != 0 {
887 return Err(fidl::Error::NonZeroPadding {
888 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
889 });
890 }
891 fidl::decode!(HidDescriptorType, D, &mut self.desc_type, decoder, offset + 0, _depth)?;
892 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 8, _depth)?;
893 Ok(())
894 }
895 }
896
897 impl fidl::encoding::ValueTypeMarker for HidbusSetIdleRequest {
898 type Borrowed<'a> = &'a Self;
899 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
900 value
901 }
902 }
903
904 unsafe impl fidl::encoding::TypeMarker for HidbusSetIdleRequest {
905 type Owned = Self;
906
907 #[inline(always)]
908 fn inline_align(_context: fidl::encoding::Context) -> usize {
909 8
910 }
911
912 #[inline(always)]
913 fn inline_size(_context: fidl::encoding::Context) -> usize {
914 16
915 }
916 }
917
918 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusSetIdleRequest, D>
919 for &HidbusSetIdleRequest
920 {
921 #[inline]
922 unsafe fn encode(
923 self,
924 encoder: &mut fidl::encoding::Encoder<'_, D>,
925 offset: usize,
926 _depth: fidl::encoding::Depth,
927 ) -> fidl::Result<()> {
928 encoder.debug_check_bounds::<HidbusSetIdleRequest>(offset);
929 unsafe {
930 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
932 (buf_ptr as *mut HidbusSetIdleRequest)
933 .write_unaligned((self as *const HidbusSetIdleRequest).read());
934 let padding_ptr = buf_ptr.offset(0) as *mut u64;
937 let padding_mask = 0xffffffffffffff00u64;
938 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
939 }
940 Ok(())
941 }
942 }
943 unsafe impl<
944 D: fidl::encoding::ResourceDialect,
945 T0: fidl::encoding::Encode<u8, D>,
946 T1: fidl::encoding::Encode<i64, D>,
947 > fidl::encoding::Encode<HidbusSetIdleRequest, D> for (T0, T1)
948 {
949 #[inline]
950 unsafe fn encode(
951 self,
952 encoder: &mut fidl::encoding::Encoder<'_, D>,
953 offset: usize,
954 depth: fidl::encoding::Depth,
955 ) -> fidl::Result<()> {
956 encoder.debug_check_bounds::<HidbusSetIdleRequest>(offset);
957 unsafe {
960 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
961 (ptr as *mut u64).write_unaligned(0);
962 }
963 self.0.encode(encoder, offset + 0, depth)?;
965 self.1.encode(encoder, offset + 8, depth)?;
966 Ok(())
967 }
968 }
969
970 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusSetIdleRequest {
971 #[inline(always)]
972 fn new_empty() -> Self {
973 Self { rpt_id: fidl::new_empty!(u8, D), duration: fidl::new_empty!(i64, D) }
974 }
975
976 #[inline]
977 unsafe fn decode(
978 &mut self,
979 decoder: &mut fidl::encoding::Decoder<'_, D>,
980 offset: usize,
981 _depth: fidl::encoding::Depth,
982 ) -> fidl::Result<()> {
983 decoder.debug_check_bounds::<Self>(offset);
984 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
985 let ptr = unsafe { buf_ptr.offset(0) };
987 let padval = unsafe { (ptr as *const u64).read_unaligned() };
988 let mask = 0xffffffffffffff00u64;
989 let maskedval = padval & mask;
990 if maskedval != 0 {
991 return Err(fidl::Error::NonZeroPadding {
992 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
993 });
994 }
995 unsafe {
997 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
998 }
999 Ok(())
1000 }
1001 }
1002
1003 impl fidl::encoding::ValueTypeMarker for HidbusSetProtocolRequest {
1004 type Borrowed<'a> = &'a Self;
1005 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1006 value
1007 }
1008 }
1009
1010 unsafe impl fidl::encoding::TypeMarker for HidbusSetProtocolRequest {
1011 type Owned = Self;
1012
1013 #[inline(always)]
1014 fn inline_align(_context: fidl::encoding::Context) -> usize {
1015 1
1016 }
1017
1018 #[inline(always)]
1019 fn inline_size(_context: fidl::encoding::Context) -> usize {
1020 1
1021 }
1022 }
1023
1024 unsafe impl<D: fidl::encoding::ResourceDialect>
1025 fidl::encoding::Encode<HidbusSetProtocolRequest, D> for &HidbusSetProtocolRequest
1026 {
1027 #[inline]
1028 unsafe fn encode(
1029 self,
1030 encoder: &mut fidl::encoding::Encoder<'_, D>,
1031 offset: usize,
1032 _depth: fidl::encoding::Depth,
1033 ) -> fidl::Result<()> {
1034 encoder.debug_check_bounds::<HidbusSetProtocolRequest>(offset);
1035 fidl::encoding::Encode::<HidbusSetProtocolRequest, D>::encode(
1037 (<HidProtocol as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),),
1038 encoder,
1039 offset,
1040 _depth,
1041 )
1042 }
1043 }
1044 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidProtocol, D>>
1045 fidl::encoding::Encode<HidbusSetProtocolRequest, D> for (T0,)
1046 {
1047 #[inline]
1048 unsafe fn encode(
1049 self,
1050 encoder: &mut fidl::encoding::Encoder<'_, D>,
1051 offset: usize,
1052 depth: fidl::encoding::Depth,
1053 ) -> fidl::Result<()> {
1054 encoder.debug_check_bounds::<HidbusSetProtocolRequest>(offset);
1055 self.0.encode(encoder, offset + 0, depth)?;
1059 Ok(())
1060 }
1061 }
1062
1063 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1064 for HidbusSetProtocolRequest
1065 {
1066 #[inline(always)]
1067 fn new_empty() -> Self {
1068 Self { protocol: fidl::new_empty!(HidProtocol, D) }
1069 }
1070
1071 #[inline]
1072 unsafe fn decode(
1073 &mut self,
1074 decoder: &mut fidl::encoding::Decoder<'_, D>,
1075 offset: usize,
1076 _depth: fidl::encoding::Depth,
1077 ) -> fidl::Result<()> {
1078 decoder.debug_check_bounds::<Self>(offset);
1079 fidl::decode!(HidProtocol, D, &mut self.protocol, decoder, offset + 0, _depth)?;
1081 Ok(())
1082 }
1083 }
1084
1085 impl fidl::encoding::ValueTypeMarker for HidbusSetReportRequest {
1086 type Borrowed<'a> = &'a Self;
1087 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1088 value
1089 }
1090 }
1091
1092 unsafe impl fidl::encoding::TypeMarker for HidbusSetReportRequest {
1093 type Owned = Self;
1094
1095 #[inline(always)]
1096 fn inline_align(_context: fidl::encoding::Context) -> usize {
1097 8
1098 }
1099
1100 #[inline(always)]
1101 fn inline_size(_context: fidl::encoding::Context) -> usize {
1102 24
1103 }
1104 }
1105
1106 unsafe impl<D: fidl::encoding::ResourceDialect>
1107 fidl::encoding::Encode<HidbusSetReportRequest, D> for &HidbusSetReportRequest
1108 {
1109 #[inline]
1110 unsafe fn encode(
1111 self,
1112 encoder: &mut fidl::encoding::Encoder<'_, D>,
1113 offset: usize,
1114 _depth: fidl::encoding::Depth,
1115 ) -> fidl::Result<()> {
1116 encoder.debug_check_bounds::<HidbusSetReportRequest>(offset);
1117 fidl::encoding::Encode::<HidbusSetReportRequest, D>::encode(
1119 (
1120 <ReportType as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_type),
1121 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_id),
1122 <fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1123 &self.data,
1124 ),
1125 ),
1126 encoder,
1127 offset,
1128 _depth,
1129 )
1130 }
1131 }
1132 unsafe impl<
1133 D: fidl::encoding::ResourceDialect,
1134 T0: fidl::encoding::Encode<ReportType, D>,
1135 T1: fidl::encoding::Encode<u8, D>,
1136 T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1137 > fidl::encoding::Encode<HidbusSetReportRequest, D> for (T0, T1, T2)
1138 {
1139 #[inline]
1140 unsafe fn encode(
1141 self,
1142 encoder: &mut fidl::encoding::Encoder<'_, D>,
1143 offset: usize,
1144 depth: fidl::encoding::Depth,
1145 ) -> fidl::Result<()> {
1146 encoder.debug_check_bounds::<HidbusSetReportRequest>(offset);
1147 unsafe {
1150 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1151 (ptr as *mut u64).write_unaligned(0);
1152 }
1153 self.0.encode(encoder, offset + 0, depth)?;
1155 self.1.encode(encoder, offset + 1, depth)?;
1156 self.2.encode(encoder, offset + 8, depth)?;
1157 Ok(())
1158 }
1159 }
1160
1161 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1162 for HidbusSetReportRequest
1163 {
1164 #[inline(always)]
1165 fn new_empty() -> Self {
1166 Self {
1167 rpt_type: fidl::new_empty!(ReportType, D),
1168 rpt_id: fidl::new_empty!(u8, D),
1169 data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D),
1170 }
1171 }
1172
1173 #[inline]
1174 unsafe fn decode(
1175 &mut self,
1176 decoder: &mut fidl::encoding::Decoder<'_, D>,
1177 offset: usize,
1178 _depth: fidl::encoding::Depth,
1179 ) -> fidl::Result<()> {
1180 decoder.debug_check_bounds::<Self>(offset);
1181 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1183 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1184 let mask = 0xffffffffffff0000u64;
1185 let maskedval = padval & mask;
1186 if maskedval != 0 {
1187 return Err(fidl::Error::NonZeroPadding {
1188 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1189 });
1190 }
1191 fidl::decode!(ReportType, D, &mut self.rpt_type, decoder, offset + 0, _depth)?;
1192 fidl::decode!(u8, D, &mut self.rpt_id, decoder, offset + 1, _depth)?;
1193 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 8, _depth)?;
1194 Ok(())
1195 }
1196 }
1197
1198 impl fidl::encoding::ValueTypeMarker for HidbusGetDescriptorResponse {
1199 type Borrowed<'a> = &'a Self;
1200 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1201 value
1202 }
1203 }
1204
1205 unsafe impl fidl::encoding::TypeMarker for HidbusGetDescriptorResponse {
1206 type Owned = Self;
1207
1208 #[inline(always)]
1209 fn inline_align(_context: fidl::encoding::Context) -> usize {
1210 8
1211 }
1212
1213 #[inline(always)]
1214 fn inline_size(_context: fidl::encoding::Context) -> usize {
1215 16
1216 }
1217 }
1218
1219 unsafe impl<D: fidl::encoding::ResourceDialect>
1220 fidl::encoding::Encode<HidbusGetDescriptorResponse, D> for &HidbusGetDescriptorResponse
1221 {
1222 #[inline]
1223 unsafe fn encode(
1224 self,
1225 encoder: &mut fidl::encoding::Encoder<'_, D>,
1226 offset: usize,
1227 _depth: fidl::encoding::Depth,
1228 ) -> fidl::Result<()> {
1229 encoder.debug_check_bounds::<HidbusGetDescriptorResponse>(offset);
1230 fidl::encoding::Encode::<HidbusGetDescriptorResponse, D>::encode(
1232 (<fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1233 &self.data,
1234 ),),
1235 encoder,
1236 offset,
1237 _depth,
1238 )
1239 }
1240 }
1241 unsafe impl<
1242 D: fidl::encoding::ResourceDialect,
1243 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1244 > fidl::encoding::Encode<HidbusGetDescriptorResponse, D> for (T0,)
1245 {
1246 #[inline]
1247 unsafe fn encode(
1248 self,
1249 encoder: &mut fidl::encoding::Encoder<'_, D>,
1250 offset: usize,
1251 depth: fidl::encoding::Depth,
1252 ) -> fidl::Result<()> {
1253 encoder.debug_check_bounds::<HidbusGetDescriptorResponse>(offset);
1254 self.0.encode(encoder, offset + 0, depth)?;
1258 Ok(())
1259 }
1260 }
1261
1262 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1263 for HidbusGetDescriptorResponse
1264 {
1265 #[inline(always)]
1266 fn new_empty() -> Self {
1267 Self { data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D) }
1268 }
1269
1270 #[inline]
1271 unsafe fn decode(
1272 &mut self,
1273 decoder: &mut fidl::encoding::Decoder<'_, D>,
1274 offset: usize,
1275 _depth: fidl::encoding::Depth,
1276 ) -> fidl::Result<()> {
1277 decoder.debug_check_bounds::<Self>(offset);
1278 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 0, _depth)?;
1280 Ok(())
1281 }
1282 }
1283
1284 impl fidl::encoding::ValueTypeMarker for HidbusGetIdleResponse {
1285 type Borrowed<'a> = &'a Self;
1286 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1287 value
1288 }
1289 }
1290
1291 unsafe impl fidl::encoding::TypeMarker for HidbusGetIdleResponse {
1292 type Owned = Self;
1293
1294 #[inline(always)]
1295 fn inline_align(_context: fidl::encoding::Context) -> usize {
1296 8
1297 }
1298
1299 #[inline(always)]
1300 fn inline_size(_context: fidl::encoding::Context) -> usize {
1301 8
1302 }
1303 #[inline(always)]
1304 fn encode_is_copy() -> bool {
1305 true
1306 }
1307
1308 #[inline(always)]
1309 fn decode_is_copy() -> bool {
1310 true
1311 }
1312 }
1313
1314 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusGetIdleResponse, D>
1315 for &HidbusGetIdleResponse
1316 {
1317 #[inline]
1318 unsafe fn encode(
1319 self,
1320 encoder: &mut fidl::encoding::Encoder<'_, D>,
1321 offset: usize,
1322 _depth: fidl::encoding::Depth,
1323 ) -> fidl::Result<()> {
1324 encoder.debug_check_bounds::<HidbusGetIdleResponse>(offset);
1325 unsafe {
1326 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1328 (buf_ptr as *mut HidbusGetIdleResponse)
1329 .write_unaligned((self as *const HidbusGetIdleResponse).read());
1330 }
1333 Ok(())
1334 }
1335 }
1336 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1337 fidl::encoding::Encode<HidbusGetIdleResponse, D> for (T0,)
1338 {
1339 #[inline]
1340 unsafe fn encode(
1341 self,
1342 encoder: &mut fidl::encoding::Encoder<'_, D>,
1343 offset: usize,
1344 depth: fidl::encoding::Depth,
1345 ) -> fidl::Result<()> {
1346 encoder.debug_check_bounds::<HidbusGetIdleResponse>(offset);
1347 self.0.encode(encoder, offset + 0, depth)?;
1351 Ok(())
1352 }
1353 }
1354
1355 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusGetIdleResponse {
1356 #[inline(always)]
1357 fn new_empty() -> Self {
1358 Self { duration: fidl::new_empty!(i64, D) }
1359 }
1360
1361 #[inline]
1362 unsafe fn decode(
1363 &mut self,
1364 decoder: &mut fidl::encoding::Decoder<'_, D>,
1365 offset: usize,
1366 _depth: fidl::encoding::Depth,
1367 ) -> fidl::Result<()> {
1368 decoder.debug_check_bounds::<Self>(offset);
1369 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1370 unsafe {
1373 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1374 }
1375 Ok(())
1376 }
1377 }
1378
1379 impl fidl::encoding::ValueTypeMarker for HidbusGetProtocolResponse {
1380 type Borrowed<'a> = &'a Self;
1381 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1382 value
1383 }
1384 }
1385
1386 unsafe impl fidl::encoding::TypeMarker for HidbusGetProtocolResponse {
1387 type Owned = Self;
1388
1389 #[inline(always)]
1390 fn inline_align(_context: fidl::encoding::Context) -> usize {
1391 1
1392 }
1393
1394 #[inline(always)]
1395 fn inline_size(_context: fidl::encoding::Context) -> usize {
1396 1
1397 }
1398 }
1399
1400 unsafe impl<D: fidl::encoding::ResourceDialect>
1401 fidl::encoding::Encode<HidbusGetProtocolResponse, D> for &HidbusGetProtocolResponse
1402 {
1403 #[inline]
1404 unsafe fn encode(
1405 self,
1406 encoder: &mut fidl::encoding::Encoder<'_, D>,
1407 offset: usize,
1408 _depth: fidl::encoding::Depth,
1409 ) -> fidl::Result<()> {
1410 encoder.debug_check_bounds::<HidbusGetProtocolResponse>(offset);
1411 fidl::encoding::Encode::<HidbusGetProtocolResponse, D>::encode(
1413 (<HidProtocol as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),),
1414 encoder,
1415 offset,
1416 _depth,
1417 )
1418 }
1419 }
1420 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidProtocol, D>>
1421 fidl::encoding::Encode<HidbusGetProtocolResponse, D> for (T0,)
1422 {
1423 #[inline]
1424 unsafe fn encode(
1425 self,
1426 encoder: &mut fidl::encoding::Encoder<'_, D>,
1427 offset: usize,
1428 depth: fidl::encoding::Depth,
1429 ) -> fidl::Result<()> {
1430 encoder.debug_check_bounds::<HidbusGetProtocolResponse>(offset);
1431 self.0.encode(encoder, offset + 0, depth)?;
1435 Ok(())
1436 }
1437 }
1438
1439 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1440 for HidbusGetProtocolResponse
1441 {
1442 #[inline(always)]
1443 fn new_empty() -> Self {
1444 Self { protocol: fidl::new_empty!(HidProtocol, D) }
1445 }
1446
1447 #[inline]
1448 unsafe fn decode(
1449 &mut self,
1450 decoder: &mut fidl::encoding::Decoder<'_, D>,
1451 offset: usize,
1452 _depth: fidl::encoding::Depth,
1453 ) -> fidl::Result<()> {
1454 decoder.debug_check_bounds::<Self>(offset);
1455 fidl::decode!(HidProtocol, D, &mut self.protocol, decoder, offset + 0, _depth)?;
1457 Ok(())
1458 }
1459 }
1460
1461 impl fidl::encoding::ValueTypeMarker for HidbusGetReportResponse {
1462 type Borrowed<'a> = &'a Self;
1463 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1464 value
1465 }
1466 }
1467
1468 unsafe impl fidl::encoding::TypeMarker for HidbusGetReportResponse {
1469 type Owned = Self;
1470
1471 #[inline(always)]
1472 fn inline_align(_context: fidl::encoding::Context) -> usize {
1473 8
1474 }
1475
1476 #[inline(always)]
1477 fn inline_size(_context: fidl::encoding::Context) -> usize {
1478 16
1479 }
1480 }
1481
1482 unsafe impl<D: fidl::encoding::ResourceDialect>
1483 fidl::encoding::Encode<HidbusGetReportResponse, D> for &HidbusGetReportResponse
1484 {
1485 #[inline]
1486 unsafe fn encode(
1487 self,
1488 encoder: &mut fidl::encoding::Encoder<'_, D>,
1489 offset: usize,
1490 _depth: fidl::encoding::Depth,
1491 ) -> fidl::Result<()> {
1492 encoder.debug_check_bounds::<HidbusGetReportResponse>(offset);
1493 fidl::encoding::Encode::<HidbusGetReportResponse, D>::encode(
1495 (<fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1496 &self.data,
1497 ),),
1498 encoder,
1499 offset,
1500 _depth,
1501 )
1502 }
1503 }
1504 unsafe impl<
1505 D: fidl::encoding::ResourceDialect,
1506 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1507 > fidl::encoding::Encode<HidbusGetReportResponse, D> for (T0,)
1508 {
1509 #[inline]
1510 unsafe fn encode(
1511 self,
1512 encoder: &mut fidl::encoding::Encoder<'_, D>,
1513 offset: usize,
1514 depth: fidl::encoding::Depth,
1515 ) -> fidl::Result<()> {
1516 encoder.debug_check_bounds::<HidbusGetReportResponse>(offset);
1517 self.0.encode(encoder, offset + 0, depth)?;
1521 Ok(())
1522 }
1523 }
1524
1525 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1526 for HidbusGetReportResponse
1527 {
1528 #[inline(always)]
1529 fn new_empty() -> Self {
1530 Self { data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D) }
1531 }
1532
1533 #[inline]
1534 unsafe fn decode(
1535 &mut self,
1536 decoder: &mut fidl::encoding::Decoder<'_, D>,
1537 offset: usize,
1538 _depth: fidl::encoding::Depth,
1539 ) -> fidl::Result<()> {
1540 decoder.debug_check_bounds::<Self>(offset);
1541 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 0, _depth)?;
1543 Ok(())
1544 }
1545 }
1546
1547 impl fidl::encoding::ValueTypeMarker for HidbusQueryResponse {
1548 type Borrowed<'a> = &'a Self;
1549 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1550 value
1551 }
1552 }
1553
1554 unsafe impl fidl::encoding::TypeMarker for HidbusQueryResponse {
1555 type Owned = Self;
1556
1557 #[inline(always)]
1558 fn inline_align(_context: fidl::encoding::Context) -> usize {
1559 8
1560 }
1561
1562 #[inline(always)]
1563 fn inline_size(_context: fidl::encoding::Context) -> usize {
1564 16
1565 }
1566 }
1567
1568 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusQueryResponse, D>
1569 for &HidbusQueryResponse
1570 {
1571 #[inline]
1572 unsafe fn encode(
1573 self,
1574 encoder: &mut fidl::encoding::Encoder<'_, D>,
1575 offset: usize,
1576 _depth: fidl::encoding::Depth,
1577 ) -> fidl::Result<()> {
1578 encoder.debug_check_bounds::<HidbusQueryResponse>(offset);
1579 fidl::encoding::Encode::<HidbusQueryResponse, D>::encode(
1581 (<HidInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
1582 encoder,
1583 offset,
1584 _depth,
1585 )
1586 }
1587 }
1588 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidInfo, D>>
1589 fidl::encoding::Encode<HidbusQueryResponse, D> for (T0,)
1590 {
1591 #[inline]
1592 unsafe fn encode(
1593 self,
1594 encoder: &mut fidl::encoding::Encoder<'_, D>,
1595 offset: usize,
1596 depth: fidl::encoding::Depth,
1597 ) -> fidl::Result<()> {
1598 encoder.debug_check_bounds::<HidbusQueryResponse>(offset);
1599 self.0.encode(encoder, offset + 0, depth)?;
1603 Ok(())
1604 }
1605 }
1606
1607 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusQueryResponse {
1608 #[inline(always)]
1609 fn new_empty() -> Self {
1610 Self { info: fidl::new_empty!(HidInfo, D) }
1611 }
1612
1613 #[inline]
1614 unsafe fn decode(
1615 &mut self,
1616 decoder: &mut fidl::encoding::Decoder<'_, D>,
1617 offset: usize,
1618 _depth: fidl::encoding::Depth,
1619 ) -> fidl::Result<()> {
1620 decoder.debug_check_bounds::<Self>(offset);
1621 fidl::decode!(HidInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
1623 Ok(())
1624 }
1625 }
1626
1627 impl HidInfo {
1628 #[inline(always)]
1629 fn max_ordinal_present(&self) -> u64 {
1630 if let Some(_) = self.polling_rate {
1631 return 6;
1632 }
1633 if let Some(_) = self.version {
1634 return 5;
1635 }
1636 if let Some(_) = self.product_id {
1637 return 4;
1638 }
1639 if let Some(_) = self.vendor_id {
1640 return 3;
1641 }
1642 if let Some(_) = self.boot_protocol {
1643 return 2;
1644 }
1645 if let Some(_) = self.dev_num {
1646 return 1;
1647 }
1648 0
1649 }
1650 }
1651
1652 impl fidl::encoding::ValueTypeMarker for HidInfo {
1653 type Borrowed<'a> = &'a Self;
1654 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1655 value
1656 }
1657 }
1658
1659 unsafe impl fidl::encoding::TypeMarker for HidInfo {
1660 type Owned = Self;
1661
1662 #[inline(always)]
1663 fn inline_align(_context: fidl::encoding::Context) -> usize {
1664 8
1665 }
1666
1667 #[inline(always)]
1668 fn inline_size(_context: fidl::encoding::Context) -> usize {
1669 16
1670 }
1671 }
1672
1673 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidInfo, D> for &HidInfo {
1674 unsafe fn encode(
1675 self,
1676 encoder: &mut fidl::encoding::Encoder<'_, D>,
1677 offset: usize,
1678 mut depth: fidl::encoding::Depth,
1679 ) -> fidl::Result<()> {
1680 encoder.debug_check_bounds::<HidInfo>(offset);
1681 let max_ordinal: u64 = self.max_ordinal_present();
1683 encoder.write_num(max_ordinal, offset);
1684 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1685 if max_ordinal == 0 {
1687 return Ok(());
1688 }
1689 depth.increment()?;
1690 let envelope_size = 8;
1691 let bytes_len = max_ordinal as usize * envelope_size;
1692 #[allow(unused_variables)]
1693 let offset = encoder.out_of_line_offset(bytes_len);
1694 let mut _prev_end_offset: usize = 0;
1695 if 1 > max_ordinal {
1696 return Ok(());
1697 }
1698
1699 let cur_offset: usize = (1 - 1) * envelope_size;
1702
1703 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1705
1706 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1711 self.dev_num.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1712 encoder,
1713 offset + cur_offset,
1714 depth,
1715 )?;
1716
1717 _prev_end_offset = cur_offset + envelope_size;
1718 if 2 > max_ordinal {
1719 return Ok(());
1720 }
1721
1722 let cur_offset: usize = (2 - 1) * envelope_size;
1725
1726 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1728
1729 fidl::encoding::encode_in_envelope_optional::<HidBootProtocol, D>(
1734 self.boot_protocol
1735 .as_ref()
1736 .map(<HidBootProtocol as fidl::encoding::ValueTypeMarker>::borrow),
1737 encoder,
1738 offset + cur_offset,
1739 depth,
1740 )?;
1741
1742 _prev_end_offset = cur_offset + envelope_size;
1743 if 3 > max_ordinal {
1744 return Ok(());
1745 }
1746
1747 let cur_offset: usize = (3 - 1) * envelope_size;
1750
1751 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1753
1754 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1759 self.vendor_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1760 encoder,
1761 offset + cur_offset,
1762 depth,
1763 )?;
1764
1765 _prev_end_offset = cur_offset + envelope_size;
1766 if 4 > max_ordinal {
1767 return Ok(());
1768 }
1769
1770 let cur_offset: usize = (4 - 1) * envelope_size;
1773
1774 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1776
1777 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1782 self.product_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1783 encoder,
1784 offset + cur_offset,
1785 depth,
1786 )?;
1787
1788 _prev_end_offset = cur_offset + envelope_size;
1789 if 5 > max_ordinal {
1790 return Ok(());
1791 }
1792
1793 let cur_offset: usize = (5 - 1) * envelope_size;
1796
1797 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1799
1800 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1805 self.version.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1806 encoder,
1807 offset + cur_offset,
1808 depth,
1809 )?;
1810
1811 _prev_end_offset = cur_offset + envelope_size;
1812 if 6 > max_ordinal {
1813 return Ok(());
1814 }
1815
1816 let cur_offset: usize = (6 - 1) * envelope_size;
1819
1820 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1822
1823 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1828 self.polling_rate.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1829 encoder,
1830 offset + cur_offset,
1831 depth,
1832 )?;
1833
1834 _prev_end_offset = cur_offset + envelope_size;
1835
1836 Ok(())
1837 }
1838 }
1839
1840 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidInfo {
1841 #[inline(always)]
1842 fn new_empty() -> Self {
1843 Self::default()
1844 }
1845
1846 unsafe fn decode(
1847 &mut self,
1848 decoder: &mut fidl::encoding::Decoder<'_, D>,
1849 offset: usize,
1850 mut depth: fidl::encoding::Depth,
1851 ) -> fidl::Result<()> {
1852 decoder.debug_check_bounds::<Self>(offset);
1853 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1854 None => return Err(fidl::Error::NotNullable),
1855 Some(len) => len,
1856 };
1857 if len == 0 {
1859 return Ok(());
1860 };
1861 depth.increment()?;
1862 let envelope_size = 8;
1863 let bytes_len = len * envelope_size;
1864 let offset = decoder.out_of_line_offset(bytes_len)?;
1865 let mut _next_ordinal_to_read = 0;
1867 let mut next_offset = offset;
1868 let end_offset = offset + bytes_len;
1869 _next_ordinal_to_read += 1;
1870 if next_offset >= end_offset {
1871 return Ok(());
1872 }
1873
1874 while _next_ordinal_to_read < 1 {
1876 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1877 _next_ordinal_to_read += 1;
1878 next_offset += envelope_size;
1879 }
1880
1881 let next_out_of_line = decoder.next_out_of_line();
1882 let handles_before = decoder.remaining_handles();
1883 if let Some((inlined, num_bytes, num_handles)) =
1884 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1885 {
1886 let member_inline_size =
1887 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1888 if inlined != (member_inline_size <= 4) {
1889 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1890 }
1891 let inner_offset;
1892 let mut inner_depth = depth.clone();
1893 if inlined {
1894 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1895 inner_offset = next_offset;
1896 } else {
1897 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1898 inner_depth.increment()?;
1899 }
1900 let val_ref = self.dev_num.get_or_insert_with(|| fidl::new_empty!(u8, D));
1901 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1902 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1903 {
1904 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1905 }
1906 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1907 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1908 }
1909 }
1910
1911 next_offset += envelope_size;
1912 _next_ordinal_to_read += 1;
1913 if next_offset >= end_offset {
1914 return Ok(());
1915 }
1916
1917 while _next_ordinal_to_read < 2 {
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 <HidBootProtocol 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 =
1944 self.boot_protocol.get_or_insert_with(|| fidl::new_empty!(HidBootProtocol, D));
1945 fidl::decode!(HidBootProtocol, D, val_ref, decoder, inner_offset, inner_depth)?;
1946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1947 {
1948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1949 }
1950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1952 }
1953 }
1954
1955 next_offset += envelope_size;
1956 _next_ordinal_to_read += 1;
1957 if next_offset >= end_offset {
1958 return Ok(());
1959 }
1960
1961 while _next_ordinal_to_read < 3 {
1963 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1964 _next_ordinal_to_read += 1;
1965 next_offset += envelope_size;
1966 }
1967
1968 let next_out_of_line = decoder.next_out_of_line();
1969 let handles_before = decoder.remaining_handles();
1970 if let Some((inlined, num_bytes, num_handles)) =
1971 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1972 {
1973 let member_inline_size =
1974 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1975 if inlined != (member_inline_size <= 4) {
1976 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1977 }
1978 let inner_offset;
1979 let mut inner_depth = depth.clone();
1980 if inlined {
1981 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1982 inner_offset = next_offset;
1983 } else {
1984 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1985 inner_depth.increment()?;
1986 }
1987 let val_ref = self.vendor_id.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 _next_ordinal_to_read += 1;
2000 if next_offset >= end_offset {
2001 return Ok(());
2002 }
2003
2004 while _next_ordinal_to_read < 4 {
2006 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2007 _next_ordinal_to_read += 1;
2008 next_offset += envelope_size;
2009 }
2010
2011 let next_out_of_line = decoder.next_out_of_line();
2012 let handles_before = decoder.remaining_handles();
2013 if let Some((inlined, num_bytes, num_handles)) =
2014 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2015 {
2016 let member_inline_size =
2017 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2018 if inlined != (member_inline_size <= 4) {
2019 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2020 }
2021 let inner_offset;
2022 let mut inner_depth = depth.clone();
2023 if inlined {
2024 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2025 inner_offset = next_offset;
2026 } else {
2027 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2028 inner_depth.increment()?;
2029 }
2030 let val_ref = self.product_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2031 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2032 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2033 {
2034 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2035 }
2036 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2037 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2038 }
2039 }
2040
2041 next_offset += envelope_size;
2042 _next_ordinal_to_read += 1;
2043 if next_offset >= end_offset {
2044 return Ok(());
2045 }
2046
2047 while _next_ordinal_to_read < 5 {
2049 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2050 _next_ordinal_to_read += 1;
2051 next_offset += envelope_size;
2052 }
2053
2054 let next_out_of_line = decoder.next_out_of_line();
2055 let handles_before = decoder.remaining_handles();
2056 if let Some((inlined, num_bytes, num_handles)) =
2057 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2058 {
2059 let member_inline_size =
2060 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2061 if inlined != (member_inline_size <= 4) {
2062 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2063 }
2064 let inner_offset;
2065 let mut inner_depth = depth.clone();
2066 if inlined {
2067 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2068 inner_offset = next_offset;
2069 } else {
2070 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2071 inner_depth.increment()?;
2072 }
2073 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(u32, D));
2074 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2075 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2076 {
2077 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2078 }
2079 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2080 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2081 }
2082 }
2083
2084 next_offset += envelope_size;
2085 _next_ordinal_to_read += 1;
2086 if next_offset >= end_offset {
2087 return Ok(());
2088 }
2089
2090 while _next_ordinal_to_read < 6 {
2092 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2093 _next_ordinal_to_read += 1;
2094 next_offset += envelope_size;
2095 }
2096
2097 let next_out_of_line = decoder.next_out_of_line();
2098 let handles_before = decoder.remaining_handles();
2099 if let Some((inlined, num_bytes, num_handles)) =
2100 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2101 {
2102 let member_inline_size =
2103 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2104 if inlined != (member_inline_size <= 4) {
2105 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2106 }
2107 let inner_offset;
2108 let mut inner_depth = depth.clone();
2109 if inlined {
2110 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2111 inner_offset = next_offset;
2112 } else {
2113 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2114 inner_depth.increment()?;
2115 }
2116 let val_ref = self.polling_rate.get_or_insert_with(|| fidl::new_empty!(i64, D));
2117 fidl::decode!(i64, 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
2129 while next_offset < end_offset {
2131 _next_ordinal_to_read += 1;
2132 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2133 next_offset += envelope_size;
2134 }
2135
2136 Ok(())
2137 }
2138 }
2139}