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
230pub mod hidbus_ordinals {
231 pub const QUERY: u64 = 0x23eb61f83d06efa9;
232 pub const START: u64 = 0x1ba15adf96bade4a;
233 pub const STOP: u64 = 0x61b973ecd69cfff8;
234 pub const ON_REPORT_RECEIVED: u64 = 0x6093963f2efe1e56;
235 pub const GET_DESCRIPTOR: u64 = 0x29343a1289ceb2e5;
236 pub const SET_DESCRIPTOR: u64 = 0x7567278eba076777;
237 pub const GET_REPORT: u64 = 0x69b5538a28dc472c;
238 pub const SET_REPORT: u64 = 0x1172863081673c55;
239 pub const GET_IDLE: u64 = 0xa95c2c504d9aa0b;
240 pub const SET_IDLE: u64 = 0x7c387cbaa4c09b3c;
241 pub const GET_PROTOCOL: u64 = 0x3ec61a9b2d5c50eb;
242 pub const SET_PROTOCOL: u64 = 0x1655cdfd0f316b0b;
243}
244
245mod internal {
246 use super::*;
247 unsafe impl fidl::encoding::TypeMarker for HidBootProtocol {
248 type Owned = Self;
249
250 #[inline(always)]
251 fn inline_align(_context: fidl::encoding::Context) -> usize {
252 std::mem::align_of::<u8>()
253 }
254
255 #[inline(always)]
256 fn inline_size(_context: fidl::encoding::Context) -> usize {
257 std::mem::size_of::<u8>()
258 }
259
260 #[inline(always)]
261 fn encode_is_copy() -> bool {
262 true
263 }
264
265 #[inline(always)]
266 fn decode_is_copy() -> bool {
267 false
268 }
269 }
270
271 impl fidl::encoding::ValueTypeMarker for HidBootProtocol {
272 type Borrowed<'a> = Self;
273 #[inline(always)]
274 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
275 *value
276 }
277 }
278
279 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
280 for HidBootProtocol
281 {
282 #[inline]
283 unsafe fn encode(
284 self,
285 encoder: &mut fidl::encoding::Encoder<'_, D>,
286 offset: usize,
287 _depth: fidl::encoding::Depth,
288 ) -> fidl::Result<()> {
289 encoder.debug_check_bounds::<Self>(offset);
290 encoder.write_num(self.into_primitive(), offset);
291 Ok(())
292 }
293 }
294
295 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidBootProtocol {
296 #[inline(always)]
297 fn new_empty() -> Self {
298 Self::None
299 }
300
301 #[inline]
302 unsafe fn decode(
303 &mut self,
304 decoder: &mut fidl::encoding::Decoder<'_, D>,
305 offset: usize,
306 _depth: fidl::encoding::Depth,
307 ) -> fidl::Result<()> {
308 decoder.debug_check_bounds::<Self>(offset);
309 let prim = decoder.read_num::<u8>(offset);
310
311 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
312 Ok(())
313 }
314 }
315 unsafe impl fidl::encoding::TypeMarker for HidDescriptorType {
316 type Owned = Self;
317
318 #[inline(always)]
319 fn inline_align(_context: fidl::encoding::Context) -> usize {
320 std::mem::align_of::<u8>()
321 }
322
323 #[inline(always)]
324 fn inline_size(_context: fidl::encoding::Context) -> usize {
325 std::mem::size_of::<u8>()
326 }
327
328 #[inline(always)]
329 fn encode_is_copy() -> bool {
330 true
331 }
332
333 #[inline(always)]
334 fn decode_is_copy() -> bool {
335 false
336 }
337 }
338
339 impl fidl::encoding::ValueTypeMarker for HidDescriptorType {
340 type Borrowed<'a> = Self;
341 #[inline(always)]
342 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
343 *value
344 }
345 }
346
347 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
348 for HidDescriptorType
349 {
350 #[inline]
351 unsafe fn encode(
352 self,
353 encoder: &mut fidl::encoding::Encoder<'_, D>,
354 offset: usize,
355 _depth: fidl::encoding::Depth,
356 ) -> fidl::Result<()> {
357 encoder.debug_check_bounds::<Self>(offset);
358 encoder.write_num(self.into_primitive(), offset);
359 Ok(())
360 }
361 }
362
363 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidDescriptorType {
364 #[inline(always)]
365 fn new_empty() -> Self {
366 Self::Hid
367 }
368
369 #[inline]
370 unsafe fn decode(
371 &mut self,
372 decoder: &mut fidl::encoding::Decoder<'_, D>,
373 offset: usize,
374 _depth: fidl::encoding::Depth,
375 ) -> fidl::Result<()> {
376 decoder.debug_check_bounds::<Self>(offset);
377 let prim = decoder.read_num::<u8>(offset);
378
379 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
380 Ok(())
381 }
382 }
383 unsafe impl fidl::encoding::TypeMarker for HidProtocol {
384 type Owned = Self;
385
386 #[inline(always)]
387 fn inline_align(_context: fidl::encoding::Context) -> usize {
388 std::mem::align_of::<u8>()
389 }
390
391 #[inline(always)]
392 fn inline_size(_context: fidl::encoding::Context) -> usize {
393 std::mem::size_of::<u8>()
394 }
395
396 #[inline(always)]
397 fn encode_is_copy() -> bool {
398 true
399 }
400
401 #[inline(always)]
402 fn decode_is_copy() -> bool {
403 false
404 }
405 }
406
407 impl fidl::encoding::ValueTypeMarker for HidProtocol {
408 type Borrowed<'a> = Self;
409 #[inline(always)]
410 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
411 *value
412 }
413 }
414
415 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HidProtocol {
416 #[inline]
417 unsafe fn encode(
418 self,
419 encoder: &mut fidl::encoding::Encoder<'_, D>,
420 offset: usize,
421 _depth: fidl::encoding::Depth,
422 ) -> fidl::Result<()> {
423 encoder.debug_check_bounds::<Self>(offset);
424 encoder.write_num(self.into_primitive(), offset);
425 Ok(())
426 }
427 }
428
429 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidProtocol {
430 #[inline(always)]
431 fn new_empty() -> Self {
432 Self::Boot
433 }
434
435 #[inline]
436 unsafe fn decode(
437 &mut self,
438 decoder: &mut fidl::encoding::Decoder<'_, D>,
439 offset: usize,
440 _depth: fidl::encoding::Depth,
441 ) -> fidl::Result<()> {
442 decoder.debug_check_bounds::<Self>(offset);
443 let prim = decoder.read_num::<u8>(offset);
444
445 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
446 Ok(())
447 }
448 }
449 unsafe impl fidl::encoding::TypeMarker for ReportType {
450 type Owned = Self;
451
452 #[inline(always)]
453 fn inline_align(_context: fidl::encoding::Context) -> usize {
454 std::mem::align_of::<u8>()
455 }
456
457 #[inline(always)]
458 fn inline_size(_context: fidl::encoding::Context) -> usize {
459 std::mem::size_of::<u8>()
460 }
461
462 #[inline(always)]
463 fn encode_is_copy() -> bool {
464 true
465 }
466
467 #[inline(always)]
468 fn decode_is_copy() -> bool {
469 false
470 }
471 }
472
473 impl fidl::encoding::ValueTypeMarker for ReportType {
474 type Borrowed<'a> = Self;
475 #[inline(always)]
476 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
477 *value
478 }
479 }
480
481 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReportType {
482 #[inline]
483 unsafe fn encode(
484 self,
485 encoder: &mut fidl::encoding::Encoder<'_, D>,
486 offset: usize,
487 _depth: fidl::encoding::Depth,
488 ) -> fidl::Result<()> {
489 encoder.debug_check_bounds::<Self>(offset);
490 encoder.write_num(self.into_primitive(), offset);
491 Ok(())
492 }
493 }
494
495 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReportType {
496 #[inline(always)]
497 fn new_empty() -> Self {
498 Self::Input
499 }
500
501 #[inline]
502 unsafe fn decode(
503 &mut self,
504 decoder: &mut fidl::encoding::Decoder<'_, D>,
505 offset: usize,
506 _depth: fidl::encoding::Depth,
507 ) -> fidl::Result<()> {
508 decoder.debug_check_bounds::<Self>(offset);
509 let prim = decoder.read_num::<u8>(offset);
510
511 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
512 Ok(())
513 }
514 }
515
516 impl fidl::encoding::ValueTypeMarker for HidbusGetDescriptorRequest {
517 type Borrowed<'a> = &'a Self;
518 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
519 value
520 }
521 }
522
523 unsafe impl fidl::encoding::TypeMarker for HidbusGetDescriptorRequest {
524 type Owned = Self;
525
526 #[inline(always)]
527 fn inline_align(_context: fidl::encoding::Context) -> usize {
528 1
529 }
530
531 #[inline(always)]
532 fn inline_size(_context: fidl::encoding::Context) -> usize {
533 1
534 }
535 }
536
537 unsafe impl<D: fidl::encoding::ResourceDialect>
538 fidl::encoding::Encode<HidbusGetDescriptorRequest, D> for &HidbusGetDescriptorRequest
539 {
540 #[inline]
541 unsafe fn encode(
542 self,
543 encoder: &mut fidl::encoding::Encoder<'_, D>,
544 offset: usize,
545 _depth: fidl::encoding::Depth,
546 ) -> fidl::Result<()> {
547 encoder.debug_check_bounds::<HidbusGetDescriptorRequest>(offset);
548 fidl::encoding::Encode::<HidbusGetDescriptorRequest, D>::encode(
550 (<HidDescriptorType as fidl::encoding::ValueTypeMarker>::borrow(&self.desc_type),),
551 encoder,
552 offset,
553 _depth,
554 )
555 }
556 }
557 unsafe impl<
558 D: fidl::encoding::ResourceDialect,
559 T0: fidl::encoding::Encode<HidDescriptorType, D>,
560 > fidl::encoding::Encode<HidbusGetDescriptorRequest, D> for (T0,)
561 {
562 #[inline]
563 unsafe fn encode(
564 self,
565 encoder: &mut fidl::encoding::Encoder<'_, D>,
566 offset: usize,
567 depth: fidl::encoding::Depth,
568 ) -> fidl::Result<()> {
569 encoder.debug_check_bounds::<HidbusGetDescriptorRequest>(offset);
570 self.0.encode(encoder, offset + 0, depth)?;
574 Ok(())
575 }
576 }
577
578 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
579 for HidbusGetDescriptorRequest
580 {
581 #[inline(always)]
582 fn new_empty() -> Self {
583 Self { desc_type: fidl::new_empty!(HidDescriptorType, D) }
584 }
585
586 #[inline]
587 unsafe fn decode(
588 &mut self,
589 decoder: &mut fidl::encoding::Decoder<'_, D>,
590 offset: usize,
591 _depth: fidl::encoding::Depth,
592 ) -> fidl::Result<()> {
593 decoder.debug_check_bounds::<Self>(offset);
594 fidl::decode!(HidDescriptorType, D, &mut self.desc_type, decoder, offset + 0, _depth)?;
596 Ok(())
597 }
598 }
599
600 impl fidl::encoding::ValueTypeMarker for HidbusGetIdleRequest {
601 type Borrowed<'a> = &'a Self;
602 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
603 value
604 }
605 }
606
607 unsafe impl fidl::encoding::TypeMarker for HidbusGetIdleRequest {
608 type Owned = Self;
609
610 #[inline(always)]
611 fn inline_align(_context: fidl::encoding::Context) -> usize {
612 1
613 }
614
615 #[inline(always)]
616 fn inline_size(_context: fidl::encoding::Context) -> usize {
617 1
618 }
619 #[inline(always)]
620 fn encode_is_copy() -> bool {
621 true
622 }
623
624 #[inline(always)]
625 fn decode_is_copy() -> bool {
626 true
627 }
628 }
629
630 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusGetIdleRequest, D>
631 for &HidbusGetIdleRequest
632 {
633 #[inline]
634 unsafe fn encode(
635 self,
636 encoder: &mut fidl::encoding::Encoder<'_, D>,
637 offset: usize,
638 _depth: fidl::encoding::Depth,
639 ) -> fidl::Result<()> {
640 encoder.debug_check_bounds::<HidbusGetIdleRequest>(offset);
641 unsafe {
642 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
644 (buf_ptr as *mut HidbusGetIdleRequest)
645 .write_unaligned((self as *const HidbusGetIdleRequest).read());
646 }
649 Ok(())
650 }
651 }
652 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
653 fidl::encoding::Encode<HidbusGetIdleRequest, D> for (T0,)
654 {
655 #[inline]
656 unsafe fn encode(
657 self,
658 encoder: &mut fidl::encoding::Encoder<'_, D>,
659 offset: usize,
660 depth: fidl::encoding::Depth,
661 ) -> fidl::Result<()> {
662 encoder.debug_check_bounds::<HidbusGetIdleRequest>(offset);
663 self.0.encode(encoder, offset + 0, depth)?;
667 Ok(())
668 }
669 }
670
671 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusGetIdleRequest {
672 #[inline(always)]
673 fn new_empty() -> Self {
674 Self { rpt_id: fidl::new_empty!(u8, D) }
675 }
676
677 #[inline]
678 unsafe fn decode(
679 &mut self,
680 decoder: &mut fidl::encoding::Decoder<'_, D>,
681 offset: usize,
682 _depth: fidl::encoding::Depth,
683 ) -> fidl::Result<()> {
684 decoder.debug_check_bounds::<Self>(offset);
685 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
686 unsafe {
689 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
690 }
691 Ok(())
692 }
693 }
694
695 impl fidl::encoding::ValueTypeMarker for HidbusGetReportRequest {
696 type Borrowed<'a> = &'a Self;
697 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
698 value
699 }
700 }
701
702 unsafe impl fidl::encoding::TypeMarker for HidbusGetReportRequest {
703 type Owned = Self;
704
705 #[inline(always)]
706 fn inline_align(_context: fidl::encoding::Context) -> usize {
707 8
708 }
709
710 #[inline(always)]
711 fn inline_size(_context: fidl::encoding::Context) -> usize {
712 16
713 }
714 }
715
716 unsafe impl<D: fidl::encoding::ResourceDialect>
717 fidl::encoding::Encode<HidbusGetReportRequest, D> for &HidbusGetReportRequest
718 {
719 #[inline]
720 unsafe fn encode(
721 self,
722 encoder: &mut fidl::encoding::Encoder<'_, D>,
723 offset: usize,
724 _depth: fidl::encoding::Depth,
725 ) -> fidl::Result<()> {
726 encoder.debug_check_bounds::<HidbusGetReportRequest>(offset);
727 fidl::encoding::Encode::<HidbusGetReportRequest, D>::encode(
729 (
730 <ReportType as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_type),
731 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_id),
732 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.len),
733 ),
734 encoder,
735 offset,
736 _depth,
737 )
738 }
739 }
740 unsafe impl<
741 D: fidl::encoding::ResourceDialect,
742 T0: fidl::encoding::Encode<ReportType, D>,
743 T1: fidl::encoding::Encode<u8, D>,
744 T2: fidl::encoding::Encode<u64, D>,
745 > fidl::encoding::Encode<HidbusGetReportRequest, D> for (T0, T1, T2)
746 {
747 #[inline]
748 unsafe fn encode(
749 self,
750 encoder: &mut fidl::encoding::Encoder<'_, D>,
751 offset: usize,
752 depth: fidl::encoding::Depth,
753 ) -> fidl::Result<()> {
754 encoder.debug_check_bounds::<HidbusGetReportRequest>(offset);
755 unsafe {
758 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
759 (ptr as *mut u64).write_unaligned(0);
760 }
761 self.0.encode(encoder, offset + 0, depth)?;
763 self.1.encode(encoder, offset + 1, depth)?;
764 self.2.encode(encoder, offset + 8, depth)?;
765 Ok(())
766 }
767 }
768
769 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
770 for HidbusGetReportRequest
771 {
772 #[inline(always)]
773 fn new_empty() -> Self {
774 Self {
775 rpt_type: fidl::new_empty!(ReportType, D),
776 rpt_id: fidl::new_empty!(u8, D),
777 len: fidl::new_empty!(u64, D),
778 }
779 }
780
781 #[inline]
782 unsafe fn decode(
783 &mut self,
784 decoder: &mut fidl::encoding::Decoder<'_, D>,
785 offset: usize,
786 _depth: fidl::encoding::Depth,
787 ) -> fidl::Result<()> {
788 decoder.debug_check_bounds::<Self>(offset);
789 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
791 let padval = unsafe { (ptr as *const u64).read_unaligned() };
792 let mask = 0xffffffffffff0000u64;
793 let maskedval = padval & mask;
794 if maskedval != 0 {
795 return Err(fidl::Error::NonZeroPadding {
796 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
797 });
798 }
799 fidl::decode!(ReportType, D, &mut self.rpt_type, decoder, offset + 0, _depth)?;
800 fidl::decode!(u8, D, &mut self.rpt_id, decoder, offset + 1, _depth)?;
801 fidl::decode!(u64, D, &mut self.len, decoder, offset + 8, _depth)?;
802 Ok(())
803 }
804 }
805
806 impl fidl::encoding::ValueTypeMarker for HidbusSetDescriptorRequest {
807 type Borrowed<'a> = &'a Self;
808 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
809 value
810 }
811 }
812
813 unsafe impl fidl::encoding::TypeMarker for HidbusSetDescriptorRequest {
814 type Owned = Self;
815
816 #[inline(always)]
817 fn inline_align(_context: fidl::encoding::Context) -> usize {
818 8
819 }
820
821 #[inline(always)]
822 fn inline_size(_context: fidl::encoding::Context) -> usize {
823 24
824 }
825 }
826
827 unsafe impl<D: fidl::encoding::ResourceDialect>
828 fidl::encoding::Encode<HidbusSetDescriptorRequest, D> for &HidbusSetDescriptorRequest
829 {
830 #[inline]
831 unsafe fn encode(
832 self,
833 encoder: &mut fidl::encoding::Encoder<'_, D>,
834 offset: usize,
835 _depth: fidl::encoding::Depth,
836 ) -> fidl::Result<()> {
837 encoder.debug_check_bounds::<HidbusSetDescriptorRequest>(offset);
838 fidl::encoding::Encode::<HidbusSetDescriptorRequest, D>::encode(
840 (
841 <HidDescriptorType as fidl::encoding::ValueTypeMarker>::borrow(&self.desc_type),
842 <fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
843 &self.data,
844 ),
845 ),
846 encoder,
847 offset,
848 _depth,
849 )
850 }
851 }
852 unsafe impl<
853 D: fidl::encoding::ResourceDialect,
854 T0: fidl::encoding::Encode<HidDescriptorType, D>,
855 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
856 > fidl::encoding::Encode<HidbusSetDescriptorRequest, D> for (T0, T1)
857 {
858 #[inline]
859 unsafe fn encode(
860 self,
861 encoder: &mut fidl::encoding::Encoder<'_, D>,
862 offset: usize,
863 depth: fidl::encoding::Depth,
864 ) -> fidl::Result<()> {
865 encoder.debug_check_bounds::<HidbusSetDescriptorRequest>(offset);
866 unsafe {
869 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
870 (ptr as *mut u64).write_unaligned(0);
871 }
872 self.0.encode(encoder, offset + 0, depth)?;
874 self.1.encode(encoder, offset + 8, depth)?;
875 Ok(())
876 }
877 }
878
879 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
880 for HidbusSetDescriptorRequest
881 {
882 #[inline(always)]
883 fn new_empty() -> Self {
884 Self {
885 desc_type: fidl::new_empty!(HidDescriptorType, D),
886 data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D),
887 }
888 }
889
890 #[inline]
891 unsafe fn decode(
892 &mut self,
893 decoder: &mut fidl::encoding::Decoder<'_, D>,
894 offset: usize,
895 _depth: fidl::encoding::Depth,
896 ) -> fidl::Result<()> {
897 decoder.debug_check_bounds::<Self>(offset);
898 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
900 let padval = unsafe { (ptr as *const u64).read_unaligned() };
901 let mask = 0xffffffffffffff00u64;
902 let maskedval = padval & mask;
903 if maskedval != 0 {
904 return Err(fidl::Error::NonZeroPadding {
905 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
906 });
907 }
908 fidl::decode!(HidDescriptorType, D, &mut self.desc_type, decoder, offset + 0, _depth)?;
909 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 8, _depth)?;
910 Ok(())
911 }
912 }
913
914 impl fidl::encoding::ValueTypeMarker for HidbusSetIdleRequest {
915 type Borrowed<'a> = &'a Self;
916 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
917 value
918 }
919 }
920
921 unsafe impl fidl::encoding::TypeMarker for HidbusSetIdleRequest {
922 type Owned = Self;
923
924 #[inline(always)]
925 fn inline_align(_context: fidl::encoding::Context) -> usize {
926 8
927 }
928
929 #[inline(always)]
930 fn inline_size(_context: fidl::encoding::Context) -> usize {
931 16
932 }
933 }
934
935 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusSetIdleRequest, D>
936 for &HidbusSetIdleRequest
937 {
938 #[inline]
939 unsafe fn encode(
940 self,
941 encoder: &mut fidl::encoding::Encoder<'_, D>,
942 offset: usize,
943 _depth: fidl::encoding::Depth,
944 ) -> fidl::Result<()> {
945 encoder.debug_check_bounds::<HidbusSetIdleRequest>(offset);
946 unsafe {
947 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
949 (buf_ptr as *mut HidbusSetIdleRequest)
950 .write_unaligned((self as *const HidbusSetIdleRequest).read());
951 let padding_ptr = buf_ptr.offset(0) as *mut u64;
954 let padding_mask = 0xffffffffffffff00u64;
955 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
956 }
957 Ok(())
958 }
959 }
960 unsafe impl<
961 D: fidl::encoding::ResourceDialect,
962 T0: fidl::encoding::Encode<u8, D>,
963 T1: fidl::encoding::Encode<i64, D>,
964 > fidl::encoding::Encode<HidbusSetIdleRequest, D> for (T0, T1)
965 {
966 #[inline]
967 unsafe fn encode(
968 self,
969 encoder: &mut fidl::encoding::Encoder<'_, D>,
970 offset: usize,
971 depth: fidl::encoding::Depth,
972 ) -> fidl::Result<()> {
973 encoder.debug_check_bounds::<HidbusSetIdleRequest>(offset);
974 unsafe {
977 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
978 (ptr as *mut u64).write_unaligned(0);
979 }
980 self.0.encode(encoder, offset + 0, depth)?;
982 self.1.encode(encoder, offset + 8, depth)?;
983 Ok(())
984 }
985 }
986
987 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusSetIdleRequest {
988 #[inline(always)]
989 fn new_empty() -> Self {
990 Self { rpt_id: fidl::new_empty!(u8, D), duration: fidl::new_empty!(i64, D) }
991 }
992
993 #[inline]
994 unsafe fn decode(
995 &mut self,
996 decoder: &mut fidl::encoding::Decoder<'_, D>,
997 offset: usize,
998 _depth: fidl::encoding::Depth,
999 ) -> fidl::Result<()> {
1000 decoder.debug_check_bounds::<Self>(offset);
1001 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1002 let ptr = unsafe { buf_ptr.offset(0) };
1004 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1005 let mask = 0xffffffffffffff00u64;
1006 let maskedval = padval & mask;
1007 if maskedval != 0 {
1008 return Err(fidl::Error::NonZeroPadding {
1009 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1010 });
1011 }
1012 unsafe {
1014 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1015 }
1016 Ok(())
1017 }
1018 }
1019
1020 impl fidl::encoding::ValueTypeMarker for HidbusSetProtocolRequest {
1021 type Borrowed<'a> = &'a Self;
1022 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1023 value
1024 }
1025 }
1026
1027 unsafe impl fidl::encoding::TypeMarker for HidbusSetProtocolRequest {
1028 type Owned = Self;
1029
1030 #[inline(always)]
1031 fn inline_align(_context: fidl::encoding::Context) -> usize {
1032 1
1033 }
1034
1035 #[inline(always)]
1036 fn inline_size(_context: fidl::encoding::Context) -> usize {
1037 1
1038 }
1039 }
1040
1041 unsafe impl<D: fidl::encoding::ResourceDialect>
1042 fidl::encoding::Encode<HidbusSetProtocolRequest, D> for &HidbusSetProtocolRequest
1043 {
1044 #[inline]
1045 unsafe fn encode(
1046 self,
1047 encoder: &mut fidl::encoding::Encoder<'_, D>,
1048 offset: usize,
1049 _depth: fidl::encoding::Depth,
1050 ) -> fidl::Result<()> {
1051 encoder.debug_check_bounds::<HidbusSetProtocolRequest>(offset);
1052 fidl::encoding::Encode::<HidbusSetProtocolRequest, D>::encode(
1054 (<HidProtocol as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),),
1055 encoder,
1056 offset,
1057 _depth,
1058 )
1059 }
1060 }
1061 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidProtocol, D>>
1062 fidl::encoding::Encode<HidbusSetProtocolRequest, D> for (T0,)
1063 {
1064 #[inline]
1065 unsafe fn encode(
1066 self,
1067 encoder: &mut fidl::encoding::Encoder<'_, D>,
1068 offset: usize,
1069 depth: fidl::encoding::Depth,
1070 ) -> fidl::Result<()> {
1071 encoder.debug_check_bounds::<HidbusSetProtocolRequest>(offset);
1072 self.0.encode(encoder, offset + 0, depth)?;
1076 Ok(())
1077 }
1078 }
1079
1080 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1081 for HidbusSetProtocolRequest
1082 {
1083 #[inline(always)]
1084 fn new_empty() -> Self {
1085 Self { protocol: fidl::new_empty!(HidProtocol, D) }
1086 }
1087
1088 #[inline]
1089 unsafe fn decode(
1090 &mut self,
1091 decoder: &mut fidl::encoding::Decoder<'_, D>,
1092 offset: usize,
1093 _depth: fidl::encoding::Depth,
1094 ) -> fidl::Result<()> {
1095 decoder.debug_check_bounds::<Self>(offset);
1096 fidl::decode!(HidProtocol, D, &mut self.protocol, decoder, offset + 0, _depth)?;
1098 Ok(())
1099 }
1100 }
1101
1102 impl fidl::encoding::ValueTypeMarker for HidbusSetReportRequest {
1103 type Borrowed<'a> = &'a Self;
1104 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1105 value
1106 }
1107 }
1108
1109 unsafe impl fidl::encoding::TypeMarker for HidbusSetReportRequest {
1110 type Owned = Self;
1111
1112 #[inline(always)]
1113 fn inline_align(_context: fidl::encoding::Context) -> usize {
1114 8
1115 }
1116
1117 #[inline(always)]
1118 fn inline_size(_context: fidl::encoding::Context) -> usize {
1119 24
1120 }
1121 }
1122
1123 unsafe impl<D: fidl::encoding::ResourceDialect>
1124 fidl::encoding::Encode<HidbusSetReportRequest, D> for &HidbusSetReportRequest
1125 {
1126 #[inline]
1127 unsafe fn encode(
1128 self,
1129 encoder: &mut fidl::encoding::Encoder<'_, D>,
1130 offset: usize,
1131 _depth: fidl::encoding::Depth,
1132 ) -> fidl::Result<()> {
1133 encoder.debug_check_bounds::<HidbusSetReportRequest>(offset);
1134 fidl::encoding::Encode::<HidbusSetReportRequest, D>::encode(
1136 (
1137 <ReportType as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_type),
1138 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_id),
1139 <fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1140 &self.data,
1141 ),
1142 ),
1143 encoder,
1144 offset,
1145 _depth,
1146 )
1147 }
1148 }
1149 unsafe impl<
1150 D: fidl::encoding::ResourceDialect,
1151 T0: fidl::encoding::Encode<ReportType, D>,
1152 T1: fidl::encoding::Encode<u8, D>,
1153 T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1154 > fidl::encoding::Encode<HidbusSetReportRequest, D> for (T0, T1, T2)
1155 {
1156 #[inline]
1157 unsafe fn encode(
1158 self,
1159 encoder: &mut fidl::encoding::Encoder<'_, D>,
1160 offset: usize,
1161 depth: fidl::encoding::Depth,
1162 ) -> fidl::Result<()> {
1163 encoder.debug_check_bounds::<HidbusSetReportRequest>(offset);
1164 unsafe {
1167 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1168 (ptr as *mut u64).write_unaligned(0);
1169 }
1170 self.0.encode(encoder, offset + 0, depth)?;
1172 self.1.encode(encoder, offset + 1, depth)?;
1173 self.2.encode(encoder, offset + 8, depth)?;
1174 Ok(())
1175 }
1176 }
1177
1178 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1179 for HidbusSetReportRequest
1180 {
1181 #[inline(always)]
1182 fn new_empty() -> Self {
1183 Self {
1184 rpt_type: fidl::new_empty!(ReportType, D),
1185 rpt_id: fidl::new_empty!(u8, D),
1186 data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D),
1187 }
1188 }
1189
1190 #[inline]
1191 unsafe fn decode(
1192 &mut self,
1193 decoder: &mut fidl::encoding::Decoder<'_, D>,
1194 offset: usize,
1195 _depth: fidl::encoding::Depth,
1196 ) -> fidl::Result<()> {
1197 decoder.debug_check_bounds::<Self>(offset);
1198 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1200 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1201 let mask = 0xffffffffffff0000u64;
1202 let maskedval = padval & mask;
1203 if maskedval != 0 {
1204 return Err(fidl::Error::NonZeroPadding {
1205 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1206 });
1207 }
1208 fidl::decode!(ReportType, D, &mut self.rpt_type, decoder, offset + 0, _depth)?;
1209 fidl::decode!(u8, D, &mut self.rpt_id, decoder, offset + 1, _depth)?;
1210 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 8, _depth)?;
1211 Ok(())
1212 }
1213 }
1214
1215 impl fidl::encoding::ValueTypeMarker for HidbusGetDescriptorResponse {
1216 type Borrowed<'a> = &'a Self;
1217 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1218 value
1219 }
1220 }
1221
1222 unsafe impl fidl::encoding::TypeMarker for HidbusGetDescriptorResponse {
1223 type Owned = Self;
1224
1225 #[inline(always)]
1226 fn inline_align(_context: fidl::encoding::Context) -> usize {
1227 8
1228 }
1229
1230 #[inline(always)]
1231 fn inline_size(_context: fidl::encoding::Context) -> usize {
1232 16
1233 }
1234 }
1235
1236 unsafe impl<D: fidl::encoding::ResourceDialect>
1237 fidl::encoding::Encode<HidbusGetDescriptorResponse, D> for &HidbusGetDescriptorResponse
1238 {
1239 #[inline]
1240 unsafe fn encode(
1241 self,
1242 encoder: &mut fidl::encoding::Encoder<'_, D>,
1243 offset: usize,
1244 _depth: fidl::encoding::Depth,
1245 ) -> fidl::Result<()> {
1246 encoder.debug_check_bounds::<HidbusGetDescriptorResponse>(offset);
1247 fidl::encoding::Encode::<HidbusGetDescriptorResponse, D>::encode(
1249 (<fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1250 &self.data,
1251 ),),
1252 encoder,
1253 offset,
1254 _depth,
1255 )
1256 }
1257 }
1258 unsafe impl<
1259 D: fidl::encoding::ResourceDialect,
1260 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1261 > fidl::encoding::Encode<HidbusGetDescriptorResponse, D> for (T0,)
1262 {
1263 #[inline]
1264 unsafe fn encode(
1265 self,
1266 encoder: &mut fidl::encoding::Encoder<'_, D>,
1267 offset: usize,
1268 depth: fidl::encoding::Depth,
1269 ) -> fidl::Result<()> {
1270 encoder.debug_check_bounds::<HidbusGetDescriptorResponse>(offset);
1271 self.0.encode(encoder, offset + 0, depth)?;
1275 Ok(())
1276 }
1277 }
1278
1279 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1280 for HidbusGetDescriptorResponse
1281 {
1282 #[inline(always)]
1283 fn new_empty() -> Self {
1284 Self { data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D) }
1285 }
1286
1287 #[inline]
1288 unsafe fn decode(
1289 &mut self,
1290 decoder: &mut fidl::encoding::Decoder<'_, D>,
1291 offset: usize,
1292 _depth: fidl::encoding::Depth,
1293 ) -> fidl::Result<()> {
1294 decoder.debug_check_bounds::<Self>(offset);
1295 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 0, _depth)?;
1297 Ok(())
1298 }
1299 }
1300
1301 impl fidl::encoding::ValueTypeMarker for HidbusGetIdleResponse {
1302 type Borrowed<'a> = &'a Self;
1303 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1304 value
1305 }
1306 }
1307
1308 unsafe impl fidl::encoding::TypeMarker for HidbusGetIdleResponse {
1309 type Owned = Self;
1310
1311 #[inline(always)]
1312 fn inline_align(_context: fidl::encoding::Context) -> usize {
1313 8
1314 }
1315
1316 #[inline(always)]
1317 fn inline_size(_context: fidl::encoding::Context) -> usize {
1318 8
1319 }
1320 #[inline(always)]
1321 fn encode_is_copy() -> bool {
1322 true
1323 }
1324
1325 #[inline(always)]
1326 fn decode_is_copy() -> bool {
1327 true
1328 }
1329 }
1330
1331 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusGetIdleResponse, D>
1332 for &HidbusGetIdleResponse
1333 {
1334 #[inline]
1335 unsafe fn encode(
1336 self,
1337 encoder: &mut fidl::encoding::Encoder<'_, D>,
1338 offset: usize,
1339 _depth: fidl::encoding::Depth,
1340 ) -> fidl::Result<()> {
1341 encoder.debug_check_bounds::<HidbusGetIdleResponse>(offset);
1342 unsafe {
1343 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1345 (buf_ptr as *mut HidbusGetIdleResponse)
1346 .write_unaligned((self as *const HidbusGetIdleResponse).read());
1347 }
1350 Ok(())
1351 }
1352 }
1353 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1354 fidl::encoding::Encode<HidbusGetIdleResponse, D> for (T0,)
1355 {
1356 #[inline]
1357 unsafe fn encode(
1358 self,
1359 encoder: &mut fidl::encoding::Encoder<'_, D>,
1360 offset: usize,
1361 depth: fidl::encoding::Depth,
1362 ) -> fidl::Result<()> {
1363 encoder.debug_check_bounds::<HidbusGetIdleResponse>(offset);
1364 self.0.encode(encoder, offset + 0, depth)?;
1368 Ok(())
1369 }
1370 }
1371
1372 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusGetIdleResponse {
1373 #[inline(always)]
1374 fn new_empty() -> Self {
1375 Self { duration: fidl::new_empty!(i64, D) }
1376 }
1377
1378 #[inline]
1379 unsafe fn decode(
1380 &mut self,
1381 decoder: &mut fidl::encoding::Decoder<'_, D>,
1382 offset: usize,
1383 _depth: fidl::encoding::Depth,
1384 ) -> fidl::Result<()> {
1385 decoder.debug_check_bounds::<Self>(offset);
1386 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1387 unsafe {
1390 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1391 }
1392 Ok(())
1393 }
1394 }
1395
1396 impl fidl::encoding::ValueTypeMarker for HidbusGetProtocolResponse {
1397 type Borrowed<'a> = &'a Self;
1398 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1399 value
1400 }
1401 }
1402
1403 unsafe impl fidl::encoding::TypeMarker for HidbusGetProtocolResponse {
1404 type Owned = Self;
1405
1406 #[inline(always)]
1407 fn inline_align(_context: fidl::encoding::Context) -> usize {
1408 1
1409 }
1410
1411 #[inline(always)]
1412 fn inline_size(_context: fidl::encoding::Context) -> usize {
1413 1
1414 }
1415 }
1416
1417 unsafe impl<D: fidl::encoding::ResourceDialect>
1418 fidl::encoding::Encode<HidbusGetProtocolResponse, D> for &HidbusGetProtocolResponse
1419 {
1420 #[inline]
1421 unsafe fn encode(
1422 self,
1423 encoder: &mut fidl::encoding::Encoder<'_, D>,
1424 offset: usize,
1425 _depth: fidl::encoding::Depth,
1426 ) -> fidl::Result<()> {
1427 encoder.debug_check_bounds::<HidbusGetProtocolResponse>(offset);
1428 fidl::encoding::Encode::<HidbusGetProtocolResponse, D>::encode(
1430 (<HidProtocol as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),),
1431 encoder,
1432 offset,
1433 _depth,
1434 )
1435 }
1436 }
1437 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidProtocol, D>>
1438 fidl::encoding::Encode<HidbusGetProtocolResponse, D> for (T0,)
1439 {
1440 #[inline]
1441 unsafe fn encode(
1442 self,
1443 encoder: &mut fidl::encoding::Encoder<'_, D>,
1444 offset: usize,
1445 depth: fidl::encoding::Depth,
1446 ) -> fidl::Result<()> {
1447 encoder.debug_check_bounds::<HidbusGetProtocolResponse>(offset);
1448 self.0.encode(encoder, offset + 0, depth)?;
1452 Ok(())
1453 }
1454 }
1455
1456 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1457 for HidbusGetProtocolResponse
1458 {
1459 #[inline(always)]
1460 fn new_empty() -> Self {
1461 Self { protocol: fidl::new_empty!(HidProtocol, D) }
1462 }
1463
1464 #[inline]
1465 unsafe fn decode(
1466 &mut self,
1467 decoder: &mut fidl::encoding::Decoder<'_, D>,
1468 offset: usize,
1469 _depth: fidl::encoding::Depth,
1470 ) -> fidl::Result<()> {
1471 decoder.debug_check_bounds::<Self>(offset);
1472 fidl::decode!(HidProtocol, D, &mut self.protocol, decoder, offset + 0, _depth)?;
1474 Ok(())
1475 }
1476 }
1477
1478 impl fidl::encoding::ValueTypeMarker for HidbusGetReportResponse {
1479 type Borrowed<'a> = &'a Self;
1480 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1481 value
1482 }
1483 }
1484
1485 unsafe impl fidl::encoding::TypeMarker for HidbusGetReportResponse {
1486 type Owned = Self;
1487
1488 #[inline(always)]
1489 fn inline_align(_context: fidl::encoding::Context) -> usize {
1490 8
1491 }
1492
1493 #[inline(always)]
1494 fn inline_size(_context: fidl::encoding::Context) -> usize {
1495 16
1496 }
1497 }
1498
1499 unsafe impl<D: fidl::encoding::ResourceDialect>
1500 fidl::encoding::Encode<HidbusGetReportResponse, D> for &HidbusGetReportResponse
1501 {
1502 #[inline]
1503 unsafe fn encode(
1504 self,
1505 encoder: &mut fidl::encoding::Encoder<'_, D>,
1506 offset: usize,
1507 _depth: fidl::encoding::Depth,
1508 ) -> fidl::Result<()> {
1509 encoder.debug_check_bounds::<HidbusGetReportResponse>(offset);
1510 fidl::encoding::Encode::<HidbusGetReportResponse, D>::encode(
1512 (<fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1513 &self.data,
1514 ),),
1515 encoder,
1516 offset,
1517 _depth,
1518 )
1519 }
1520 }
1521 unsafe impl<
1522 D: fidl::encoding::ResourceDialect,
1523 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1524 > fidl::encoding::Encode<HidbusGetReportResponse, D> for (T0,)
1525 {
1526 #[inline]
1527 unsafe fn encode(
1528 self,
1529 encoder: &mut fidl::encoding::Encoder<'_, D>,
1530 offset: usize,
1531 depth: fidl::encoding::Depth,
1532 ) -> fidl::Result<()> {
1533 encoder.debug_check_bounds::<HidbusGetReportResponse>(offset);
1534 self.0.encode(encoder, offset + 0, depth)?;
1538 Ok(())
1539 }
1540 }
1541
1542 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1543 for HidbusGetReportResponse
1544 {
1545 #[inline(always)]
1546 fn new_empty() -> Self {
1547 Self { data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D) }
1548 }
1549
1550 #[inline]
1551 unsafe fn decode(
1552 &mut self,
1553 decoder: &mut fidl::encoding::Decoder<'_, D>,
1554 offset: usize,
1555 _depth: fidl::encoding::Depth,
1556 ) -> fidl::Result<()> {
1557 decoder.debug_check_bounds::<Self>(offset);
1558 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 0, _depth)?;
1560 Ok(())
1561 }
1562 }
1563
1564 impl fidl::encoding::ValueTypeMarker for HidbusQueryResponse {
1565 type Borrowed<'a> = &'a Self;
1566 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1567 value
1568 }
1569 }
1570
1571 unsafe impl fidl::encoding::TypeMarker for HidbusQueryResponse {
1572 type Owned = Self;
1573
1574 #[inline(always)]
1575 fn inline_align(_context: fidl::encoding::Context) -> usize {
1576 8
1577 }
1578
1579 #[inline(always)]
1580 fn inline_size(_context: fidl::encoding::Context) -> usize {
1581 16
1582 }
1583 }
1584
1585 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusQueryResponse, D>
1586 for &HidbusQueryResponse
1587 {
1588 #[inline]
1589 unsafe fn encode(
1590 self,
1591 encoder: &mut fidl::encoding::Encoder<'_, D>,
1592 offset: usize,
1593 _depth: fidl::encoding::Depth,
1594 ) -> fidl::Result<()> {
1595 encoder.debug_check_bounds::<HidbusQueryResponse>(offset);
1596 fidl::encoding::Encode::<HidbusQueryResponse, D>::encode(
1598 (<HidInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
1599 encoder,
1600 offset,
1601 _depth,
1602 )
1603 }
1604 }
1605 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidInfo, D>>
1606 fidl::encoding::Encode<HidbusQueryResponse, D> for (T0,)
1607 {
1608 #[inline]
1609 unsafe fn encode(
1610 self,
1611 encoder: &mut fidl::encoding::Encoder<'_, D>,
1612 offset: usize,
1613 depth: fidl::encoding::Depth,
1614 ) -> fidl::Result<()> {
1615 encoder.debug_check_bounds::<HidbusQueryResponse>(offset);
1616 self.0.encode(encoder, offset + 0, depth)?;
1620 Ok(())
1621 }
1622 }
1623
1624 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusQueryResponse {
1625 #[inline(always)]
1626 fn new_empty() -> Self {
1627 Self { info: fidl::new_empty!(HidInfo, D) }
1628 }
1629
1630 #[inline]
1631 unsafe fn decode(
1632 &mut self,
1633 decoder: &mut fidl::encoding::Decoder<'_, D>,
1634 offset: usize,
1635 _depth: fidl::encoding::Depth,
1636 ) -> fidl::Result<()> {
1637 decoder.debug_check_bounds::<Self>(offset);
1638 fidl::decode!(HidInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
1640 Ok(())
1641 }
1642 }
1643
1644 impl HidInfo {
1645 #[inline(always)]
1646 fn max_ordinal_present(&self) -> u64 {
1647 if let Some(_) = self.polling_rate {
1648 return 6;
1649 }
1650 if let Some(_) = self.version {
1651 return 5;
1652 }
1653 if let Some(_) = self.product_id {
1654 return 4;
1655 }
1656 if let Some(_) = self.vendor_id {
1657 return 3;
1658 }
1659 if let Some(_) = self.boot_protocol {
1660 return 2;
1661 }
1662 if let Some(_) = self.dev_num {
1663 return 1;
1664 }
1665 0
1666 }
1667 }
1668
1669 impl fidl::encoding::ValueTypeMarker for HidInfo {
1670 type Borrowed<'a> = &'a Self;
1671 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1672 value
1673 }
1674 }
1675
1676 unsafe impl fidl::encoding::TypeMarker for HidInfo {
1677 type Owned = Self;
1678
1679 #[inline(always)]
1680 fn inline_align(_context: fidl::encoding::Context) -> usize {
1681 8
1682 }
1683
1684 #[inline(always)]
1685 fn inline_size(_context: fidl::encoding::Context) -> usize {
1686 16
1687 }
1688 }
1689
1690 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidInfo, D> for &HidInfo {
1691 unsafe fn encode(
1692 self,
1693 encoder: &mut fidl::encoding::Encoder<'_, D>,
1694 offset: usize,
1695 mut depth: fidl::encoding::Depth,
1696 ) -> fidl::Result<()> {
1697 encoder.debug_check_bounds::<HidInfo>(offset);
1698 let max_ordinal: u64 = self.max_ordinal_present();
1700 encoder.write_num(max_ordinal, offset);
1701 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1702 if max_ordinal == 0 {
1704 return Ok(());
1705 }
1706 depth.increment()?;
1707 let envelope_size = 8;
1708 let bytes_len = max_ordinal as usize * envelope_size;
1709 #[allow(unused_variables)]
1710 let offset = encoder.out_of_line_offset(bytes_len);
1711 let mut _prev_end_offset: usize = 0;
1712 if 1 > max_ordinal {
1713 return Ok(());
1714 }
1715
1716 let cur_offset: usize = (1 - 1) * envelope_size;
1719
1720 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1722
1723 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1728 self.dev_num.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1729 encoder,
1730 offset + cur_offset,
1731 depth,
1732 )?;
1733
1734 _prev_end_offset = cur_offset + envelope_size;
1735 if 2 > max_ordinal {
1736 return Ok(());
1737 }
1738
1739 let cur_offset: usize = (2 - 1) * envelope_size;
1742
1743 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1745
1746 fidl::encoding::encode_in_envelope_optional::<HidBootProtocol, D>(
1751 self.boot_protocol
1752 .as_ref()
1753 .map(<HidBootProtocol as fidl::encoding::ValueTypeMarker>::borrow),
1754 encoder,
1755 offset + cur_offset,
1756 depth,
1757 )?;
1758
1759 _prev_end_offset = cur_offset + envelope_size;
1760 if 3 > max_ordinal {
1761 return Ok(());
1762 }
1763
1764 let cur_offset: usize = (3 - 1) * envelope_size;
1767
1768 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1770
1771 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1776 self.vendor_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1777 encoder,
1778 offset + cur_offset,
1779 depth,
1780 )?;
1781
1782 _prev_end_offset = cur_offset + envelope_size;
1783 if 4 > max_ordinal {
1784 return Ok(());
1785 }
1786
1787 let cur_offset: usize = (4 - 1) * envelope_size;
1790
1791 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1793
1794 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1799 self.product_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1800 encoder,
1801 offset + cur_offset,
1802 depth,
1803 )?;
1804
1805 _prev_end_offset = cur_offset + envelope_size;
1806 if 5 > max_ordinal {
1807 return Ok(());
1808 }
1809
1810 let cur_offset: usize = (5 - 1) * envelope_size;
1813
1814 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1816
1817 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1822 self.version.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1823 encoder,
1824 offset + cur_offset,
1825 depth,
1826 )?;
1827
1828 _prev_end_offset = cur_offset + envelope_size;
1829 if 6 > max_ordinal {
1830 return Ok(());
1831 }
1832
1833 let cur_offset: usize = (6 - 1) * envelope_size;
1836
1837 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1839
1840 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1845 self.polling_rate.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1846 encoder,
1847 offset + cur_offset,
1848 depth,
1849 )?;
1850
1851 _prev_end_offset = cur_offset + envelope_size;
1852
1853 Ok(())
1854 }
1855 }
1856
1857 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidInfo {
1858 #[inline(always)]
1859 fn new_empty() -> Self {
1860 Self::default()
1861 }
1862
1863 unsafe fn decode(
1864 &mut self,
1865 decoder: &mut fidl::encoding::Decoder<'_, D>,
1866 offset: usize,
1867 mut depth: fidl::encoding::Depth,
1868 ) -> fidl::Result<()> {
1869 decoder.debug_check_bounds::<Self>(offset);
1870 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1871 None => return Err(fidl::Error::NotNullable),
1872 Some(len) => len,
1873 };
1874 if len == 0 {
1876 return Ok(());
1877 };
1878 depth.increment()?;
1879 let envelope_size = 8;
1880 let bytes_len = len * envelope_size;
1881 let offset = decoder.out_of_line_offset(bytes_len)?;
1882 let mut _next_ordinal_to_read = 0;
1884 let mut next_offset = offset;
1885 let end_offset = offset + bytes_len;
1886 _next_ordinal_to_read += 1;
1887 if next_offset >= end_offset {
1888 return Ok(());
1889 }
1890
1891 while _next_ordinal_to_read < 1 {
1893 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1894 _next_ordinal_to_read += 1;
1895 next_offset += envelope_size;
1896 }
1897
1898 let next_out_of_line = decoder.next_out_of_line();
1899 let handles_before = decoder.remaining_handles();
1900 if let Some((inlined, num_bytes, num_handles)) =
1901 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1902 {
1903 let member_inline_size =
1904 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1905 if inlined != (member_inline_size <= 4) {
1906 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1907 }
1908 let inner_offset;
1909 let mut inner_depth = depth.clone();
1910 if inlined {
1911 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1912 inner_offset = next_offset;
1913 } else {
1914 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1915 inner_depth.increment()?;
1916 }
1917 let val_ref = self.dev_num.get_or_insert_with(|| fidl::new_empty!(u8, D));
1918 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1919 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1920 {
1921 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1922 }
1923 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1924 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1925 }
1926 }
1927
1928 next_offset += envelope_size;
1929 _next_ordinal_to_read += 1;
1930 if next_offset >= end_offset {
1931 return Ok(());
1932 }
1933
1934 while _next_ordinal_to_read < 2 {
1936 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1937 _next_ordinal_to_read += 1;
1938 next_offset += envelope_size;
1939 }
1940
1941 let next_out_of_line = decoder.next_out_of_line();
1942 let handles_before = decoder.remaining_handles();
1943 if let Some((inlined, num_bytes, num_handles)) =
1944 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1945 {
1946 let member_inline_size =
1947 <HidBootProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1948 if inlined != (member_inline_size <= 4) {
1949 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1950 }
1951 let inner_offset;
1952 let mut inner_depth = depth.clone();
1953 if inlined {
1954 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1955 inner_offset = next_offset;
1956 } else {
1957 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1958 inner_depth.increment()?;
1959 }
1960 let val_ref =
1961 self.boot_protocol.get_or_insert_with(|| fidl::new_empty!(HidBootProtocol, D));
1962 fidl::decode!(HidBootProtocol, D, val_ref, decoder, inner_offset, inner_depth)?;
1963 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1964 {
1965 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1966 }
1967 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1968 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1969 }
1970 }
1971
1972 next_offset += envelope_size;
1973 _next_ordinal_to_read += 1;
1974 if next_offset >= end_offset {
1975 return Ok(());
1976 }
1977
1978 while _next_ordinal_to_read < 3 {
1980 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1981 _next_ordinal_to_read += 1;
1982 next_offset += envelope_size;
1983 }
1984
1985 let next_out_of_line = decoder.next_out_of_line();
1986 let handles_before = decoder.remaining_handles();
1987 if let Some((inlined, num_bytes, num_handles)) =
1988 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1989 {
1990 let member_inline_size =
1991 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1992 if inlined != (member_inline_size <= 4) {
1993 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1994 }
1995 let inner_offset;
1996 let mut inner_depth = depth.clone();
1997 if inlined {
1998 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1999 inner_offset = next_offset;
2000 } else {
2001 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2002 inner_depth.increment()?;
2003 }
2004 let val_ref = self.vendor_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2005 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2006 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2007 {
2008 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2009 }
2010 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2011 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2012 }
2013 }
2014
2015 next_offset += envelope_size;
2016 _next_ordinal_to_read += 1;
2017 if next_offset >= end_offset {
2018 return Ok(());
2019 }
2020
2021 while _next_ordinal_to_read < 4 {
2023 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2024 _next_ordinal_to_read += 1;
2025 next_offset += envelope_size;
2026 }
2027
2028 let next_out_of_line = decoder.next_out_of_line();
2029 let handles_before = decoder.remaining_handles();
2030 if let Some((inlined, num_bytes, num_handles)) =
2031 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2032 {
2033 let member_inline_size =
2034 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2035 if inlined != (member_inline_size <= 4) {
2036 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2037 }
2038 let inner_offset;
2039 let mut inner_depth = depth.clone();
2040 if inlined {
2041 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2042 inner_offset = next_offset;
2043 } else {
2044 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2045 inner_depth.increment()?;
2046 }
2047 let val_ref = self.product_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2048 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2049 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2050 {
2051 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2052 }
2053 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2054 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2055 }
2056 }
2057
2058 next_offset += envelope_size;
2059 _next_ordinal_to_read += 1;
2060 if next_offset >= end_offset {
2061 return Ok(());
2062 }
2063
2064 while _next_ordinal_to_read < 5 {
2066 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2067 _next_ordinal_to_read += 1;
2068 next_offset += envelope_size;
2069 }
2070
2071 let next_out_of_line = decoder.next_out_of_line();
2072 let handles_before = decoder.remaining_handles();
2073 if let Some((inlined, num_bytes, num_handles)) =
2074 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2075 {
2076 let member_inline_size =
2077 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2078 if inlined != (member_inline_size <= 4) {
2079 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2080 }
2081 let inner_offset;
2082 let mut inner_depth = depth.clone();
2083 if inlined {
2084 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2085 inner_offset = next_offset;
2086 } else {
2087 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2088 inner_depth.increment()?;
2089 }
2090 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(u32, D));
2091 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2092 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2093 {
2094 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2095 }
2096 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2097 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2098 }
2099 }
2100
2101 next_offset += envelope_size;
2102 _next_ordinal_to_read += 1;
2103 if next_offset >= end_offset {
2104 return Ok(());
2105 }
2106
2107 while _next_ordinal_to_read < 6 {
2109 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2110 _next_ordinal_to_read += 1;
2111 next_offset += envelope_size;
2112 }
2113
2114 let next_out_of_line = decoder.next_out_of_line();
2115 let handles_before = decoder.remaining_handles();
2116 if let Some((inlined, num_bytes, num_handles)) =
2117 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2118 {
2119 let member_inline_size =
2120 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2121 if inlined != (member_inline_size <= 4) {
2122 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2123 }
2124 let inner_offset;
2125 let mut inner_depth = depth.clone();
2126 if inlined {
2127 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2128 inner_offset = next_offset;
2129 } else {
2130 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2131 inner_depth.increment()?;
2132 }
2133 let val_ref = self.polling_rate.get_or_insert_with(|| fidl::new_empty!(i64, D));
2134 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2135 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2136 {
2137 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2138 }
2139 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2140 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2141 }
2142 }
2143
2144 next_offset += envelope_size;
2145
2146 while next_offset < end_offset {
2148 _next_ordinal_to_read += 1;
2149 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2150 next_offset += envelope_size;
2151 }
2152
2153 Ok(())
2154 }
2155 }
2156}