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_NAME_LENGTH: u32 = 256;
23
24pub const MAX_REPORT_DATA: u16 = 8192;
25
26pub const MAX_REPORT_LEN: u16 = 8192;
27
28#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
30#[repr(u8)]
31pub enum HidBootProtocol {
32 None = 0,
33 Kbd = 1,
34 Pointer = 2,
35 Other = 3,
36}
37
38impl HidBootProtocol {
39 #[inline]
40 pub fn from_primitive(prim: u8) -> Option<Self> {
41 match prim {
42 0 => Some(Self::None),
43 1 => Some(Self::Kbd),
44 2 => Some(Self::Pointer),
45 3 => Some(Self::Other),
46 _ => None,
47 }
48 }
49
50 #[inline]
51 pub const fn into_primitive(self) -> u8 {
52 self as u8
53 }
54}
55
56#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
58#[repr(u8)]
59pub enum HidDescriptorType {
60 Hid = 33,
61 Report = 34,
62 Physical = 35,
63}
64
65impl HidDescriptorType {
66 #[inline]
67 pub fn from_primitive(prim: u8) -> Option<Self> {
68 match prim {
69 33 => Some(Self::Hid),
70 34 => Some(Self::Report),
71 35 => Some(Self::Physical),
72 _ => None,
73 }
74 }
75
76 #[inline]
77 pub const fn into_primitive(self) -> u8 {
78 self as u8
79 }
80}
81
82#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
84#[repr(u8)]
85pub enum HidProtocol {
86 Boot = 0,
87 Report = 1,
88}
89
90impl HidProtocol {
91 #[inline]
92 pub fn from_primitive(prim: u8) -> Option<Self> {
93 match prim {
94 0 => Some(Self::Boot),
95 1 => Some(Self::Report),
96 _ => None,
97 }
98 }
99
100 #[inline]
101 pub const fn into_primitive(self) -> u8 {
102 self as u8
103 }
104}
105
106#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
107#[repr(u8)]
108pub enum ReportType {
109 Input = 1,
110 Output = 2,
111 Feature = 3,
112}
113
114impl ReportType {
115 #[inline]
116 pub fn from_primitive(prim: u8) -> Option<Self> {
117 match prim {
118 1 => Some(Self::Input),
119 2 => Some(Self::Output),
120 3 => Some(Self::Feature),
121 _ => None,
122 }
123 }
124
125 #[inline]
126 pub const fn into_primitive(self) -> u8 {
127 self as u8
128 }
129}
130
131#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
132pub struct HidbusGetDescriptorRequest {
133 pub desc_type: HidDescriptorType,
134}
135
136impl fidl::Persistable for HidbusGetDescriptorRequest {}
137
138#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
139#[repr(C)]
140pub struct HidbusGetIdleRequest {
141 pub rpt_id: u8,
142}
143
144impl fidl::Persistable for HidbusGetIdleRequest {}
145
146#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
147pub struct HidbusGetReportRequest {
148 pub rpt_type: ReportType,
149 pub rpt_id: u8,
150 pub len: u64,
151}
152
153impl fidl::Persistable for HidbusGetReportRequest {}
154
155#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
156pub struct HidbusSetDescriptorRequest {
157 pub desc_type: HidDescriptorType,
158 pub data: Vec<u8>,
159}
160
161impl fidl::Persistable for HidbusSetDescriptorRequest {}
162
163#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
164#[repr(C)]
165pub struct HidbusSetIdleRequest {
166 pub rpt_id: u8,
167 pub duration: i64,
168}
169
170impl fidl::Persistable for HidbusSetIdleRequest {}
171
172#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
173pub struct HidbusSetProtocolRequest {
174 pub protocol: HidProtocol,
175}
176
177impl fidl::Persistable for HidbusSetProtocolRequest {}
178
179#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
180pub struct HidbusSetReportRequest {
181 pub rpt_type: ReportType,
182 pub rpt_id: u8,
183 pub data: Vec<u8>,
184}
185
186impl fidl::Persistable for HidbusSetReportRequest {}
187
188#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
189pub struct HidbusGetDescriptorResponse {
190 pub data: Vec<u8>,
191}
192
193impl fidl::Persistable for HidbusGetDescriptorResponse {}
194
195#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
196#[repr(C)]
197pub struct HidbusGetIdleResponse {
198 pub duration: i64,
199}
200
201impl fidl::Persistable for HidbusGetIdleResponse {}
202
203#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
204pub struct HidbusGetProtocolResponse {
205 pub protocol: HidProtocol,
206}
207
208impl fidl::Persistable for HidbusGetProtocolResponse {}
209
210#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
211pub struct HidbusGetReportResponse {
212 pub data: Vec<u8>,
213}
214
215impl fidl::Persistable for HidbusGetReportResponse {}
216
217#[derive(Clone, Debug, PartialEq)]
218pub struct HidbusQueryResponse {
219 pub info: HidInfo,
220}
221
222impl fidl::Persistable for HidbusQueryResponse {}
223
224#[derive(Clone, Debug, Default, PartialEq)]
227pub struct HidInfo {
228 pub dev_num: Option<u8>,
229 pub boot_protocol: Option<HidBootProtocol>,
230 pub vendor_id: Option<u32>,
231 pub product_id: Option<u32>,
232 pub version: Option<u32>,
233 pub polling_rate: Option<i64>,
235 pub manufacturer_name: Option<String>,
237 pub product_name: Option<String>,
239 pub serial_number: Option<String>,
241 #[doc(hidden)]
242 pub __source_breaking: fidl::marker::SourceBreaking,
243}
244
245impl fidl::Persistable for HidInfo {}
246
247pub mod hidbus_ordinals {
248 pub const QUERY: u64 = 0x23eb61f83d06efa9;
249 pub const START: u64 = 0x1ba15adf96bade4a;
250 pub const STOP: u64 = 0x61b973ecd69cfff8;
251 pub const ON_REPORT_RECEIVED: u64 = 0x6093963f2efe1e56;
252 pub const GET_DESCRIPTOR: u64 = 0x29343a1289ceb2e5;
253 pub const SET_DESCRIPTOR: u64 = 0x7567278eba076777;
254 pub const GET_REPORT: u64 = 0x69b5538a28dc472c;
255 pub const SET_REPORT: u64 = 0x1172863081673c55;
256 pub const GET_IDLE: u64 = 0xa95c2c504d9aa0b;
257 pub const SET_IDLE: u64 = 0x7c387cbaa4c09b3c;
258 pub const GET_PROTOCOL: u64 = 0x3ec61a9b2d5c50eb;
259 pub const SET_PROTOCOL: u64 = 0x1655cdfd0f316b0b;
260}
261
262mod internal {
263 use super::*;
264 unsafe impl fidl::encoding::TypeMarker for HidBootProtocol {
265 type Owned = Self;
266
267 #[inline(always)]
268 fn inline_align(_context: fidl::encoding::Context) -> usize {
269 std::mem::align_of::<u8>()
270 }
271
272 #[inline(always)]
273 fn inline_size(_context: fidl::encoding::Context) -> usize {
274 std::mem::size_of::<u8>()
275 }
276
277 #[inline(always)]
278 fn encode_is_copy() -> bool {
279 true
280 }
281
282 #[inline(always)]
283 fn decode_is_copy() -> bool {
284 false
285 }
286 }
287
288 impl fidl::encoding::ValueTypeMarker for HidBootProtocol {
289 type Borrowed<'a> = Self;
290 #[inline(always)]
291 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
292 *value
293 }
294 }
295
296 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
297 for HidBootProtocol
298 {
299 #[inline]
300 unsafe fn encode(
301 self,
302 encoder: &mut fidl::encoding::Encoder<'_, D>,
303 offset: usize,
304 _depth: fidl::encoding::Depth,
305 ) -> fidl::Result<()> {
306 encoder.debug_check_bounds::<Self>(offset);
307 encoder.write_num(self.into_primitive(), offset);
308 Ok(())
309 }
310 }
311
312 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidBootProtocol {
313 #[inline(always)]
314 fn new_empty() -> Self {
315 Self::None
316 }
317
318 #[inline]
319 unsafe fn decode(
320 &mut self,
321 decoder: &mut fidl::encoding::Decoder<'_, D>,
322 offset: usize,
323 _depth: fidl::encoding::Depth,
324 ) -> fidl::Result<()> {
325 decoder.debug_check_bounds::<Self>(offset);
326 let prim = decoder.read_num::<u8>(offset);
327
328 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
329 Ok(())
330 }
331 }
332 unsafe impl fidl::encoding::TypeMarker for HidDescriptorType {
333 type Owned = Self;
334
335 #[inline(always)]
336 fn inline_align(_context: fidl::encoding::Context) -> usize {
337 std::mem::align_of::<u8>()
338 }
339
340 #[inline(always)]
341 fn inline_size(_context: fidl::encoding::Context) -> usize {
342 std::mem::size_of::<u8>()
343 }
344
345 #[inline(always)]
346 fn encode_is_copy() -> bool {
347 true
348 }
349
350 #[inline(always)]
351 fn decode_is_copy() -> bool {
352 false
353 }
354 }
355
356 impl fidl::encoding::ValueTypeMarker for HidDescriptorType {
357 type Borrowed<'a> = Self;
358 #[inline(always)]
359 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
360 *value
361 }
362 }
363
364 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
365 for HidDescriptorType
366 {
367 #[inline]
368 unsafe fn encode(
369 self,
370 encoder: &mut fidl::encoding::Encoder<'_, D>,
371 offset: usize,
372 _depth: fidl::encoding::Depth,
373 ) -> fidl::Result<()> {
374 encoder.debug_check_bounds::<Self>(offset);
375 encoder.write_num(self.into_primitive(), offset);
376 Ok(())
377 }
378 }
379
380 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidDescriptorType {
381 #[inline(always)]
382 fn new_empty() -> Self {
383 Self::Hid
384 }
385
386 #[inline]
387 unsafe fn decode(
388 &mut self,
389 decoder: &mut fidl::encoding::Decoder<'_, D>,
390 offset: usize,
391 _depth: fidl::encoding::Depth,
392 ) -> fidl::Result<()> {
393 decoder.debug_check_bounds::<Self>(offset);
394 let prim = decoder.read_num::<u8>(offset);
395
396 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
397 Ok(())
398 }
399 }
400 unsafe impl fidl::encoding::TypeMarker for HidProtocol {
401 type Owned = Self;
402
403 #[inline(always)]
404 fn inline_align(_context: fidl::encoding::Context) -> usize {
405 std::mem::align_of::<u8>()
406 }
407
408 #[inline(always)]
409 fn inline_size(_context: fidl::encoding::Context) -> usize {
410 std::mem::size_of::<u8>()
411 }
412
413 #[inline(always)]
414 fn encode_is_copy() -> bool {
415 true
416 }
417
418 #[inline(always)]
419 fn decode_is_copy() -> bool {
420 false
421 }
422 }
423
424 impl fidl::encoding::ValueTypeMarker for HidProtocol {
425 type Borrowed<'a> = Self;
426 #[inline(always)]
427 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
428 *value
429 }
430 }
431
432 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for HidProtocol {
433 #[inline]
434 unsafe fn encode(
435 self,
436 encoder: &mut fidl::encoding::Encoder<'_, D>,
437 offset: usize,
438 _depth: fidl::encoding::Depth,
439 ) -> fidl::Result<()> {
440 encoder.debug_check_bounds::<Self>(offset);
441 encoder.write_num(self.into_primitive(), offset);
442 Ok(())
443 }
444 }
445
446 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidProtocol {
447 #[inline(always)]
448 fn new_empty() -> Self {
449 Self::Boot
450 }
451
452 #[inline]
453 unsafe fn decode(
454 &mut self,
455 decoder: &mut fidl::encoding::Decoder<'_, D>,
456 offset: usize,
457 _depth: fidl::encoding::Depth,
458 ) -> fidl::Result<()> {
459 decoder.debug_check_bounds::<Self>(offset);
460 let prim = decoder.read_num::<u8>(offset);
461
462 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
463 Ok(())
464 }
465 }
466 unsafe impl fidl::encoding::TypeMarker for ReportType {
467 type Owned = Self;
468
469 #[inline(always)]
470 fn inline_align(_context: fidl::encoding::Context) -> usize {
471 std::mem::align_of::<u8>()
472 }
473
474 #[inline(always)]
475 fn inline_size(_context: fidl::encoding::Context) -> usize {
476 std::mem::size_of::<u8>()
477 }
478
479 #[inline(always)]
480 fn encode_is_copy() -> bool {
481 true
482 }
483
484 #[inline(always)]
485 fn decode_is_copy() -> bool {
486 false
487 }
488 }
489
490 impl fidl::encoding::ValueTypeMarker for ReportType {
491 type Borrowed<'a> = Self;
492 #[inline(always)]
493 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
494 *value
495 }
496 }
497
498 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ReportType {
499 #[inline]
500 unsafe fn encode(
501 self,
502 encoder: &mut fidl::encoding::Encoder<'_, D>,
503 offset: usize,
504 _depth: fidl::encoding::Depth,
505 ) -> fidl::Result<()> {
506 encoder.debug_check_bounds::<Self>(offset);
507 encoder.write_num(self.into_primitive(), offset);
508 Ok(())
509 }
510 }
511
512 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ReportType {
513 #[inline(always)]
514 fn new_empty() -> Self {
515 Self::Input
516 }
517
518 #[inline]
519 unsafe fn decode(
520 &mut self,
521 decoder: &mut fidl::encoding::Decoder<'_, D>,
522 offset: usize,
523 _depth: fidl::encoding::Depth,
524 ) -> fidl::Result<()> {
525 decoder.debug_check_bounds::<Self>(offset);
526 let prim = decoder.read_num::<u8>(offset);
527
528 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
529 Ok(())
530 }
531 }
532
533 impl fidl::encoding::ValueTypeMarker for HidbusGetDescriptorRequest {
534 type Borrowed<'a> = &'a Self;
535 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
536 value
537 }
538 }
539
540 unsafe impl fidl::encoding::TypeMarker for HidbusGetDescriptorRequest {
541 type Owned = Self;
542
543 #[inline(always)]
544 fn inline_align(_context: fidl::encoding::Context) -> usize {
545 1
546 }
547
548 #[inline(always)]
549 fn inline_size(_context: fidl::encoding::Context) -> usize {
550 1
551 }
552 }
553
554 unsafe impl<D: fidl::encoding::ResourceDialect>
555 fidl::encoding::Encode<HidbusGetDescriptorRequest, D> for &HidbusGetDescriptorRequest
556 {
557 #[inline]
558 unsafe fn encode(
559 self,
560 encoder: &mut fidl::encoding::Encoder<'_, D>,
561 offset: usize,
562 _depth: fidl::encoding::Depth,
563 ) -> fidl::Result<()> {
564 encoder.debug_check_bounds::<HidbusGetDescriptorRequest>(offset);
565 fidl::encoding::Encode::<HidbusGetDescriptorRequest, D>::encode(
567 (<HidDescriptorType as fidl::encoding::ValueTypeMarker>::borrow(&self.desc_type),),
568 encoder,
569 offset,
570 _depth,
571 )
572 }
573 }
574 unsafe impl<
575 D: fidl::encoding::ResourceDialect,
576 T0: fidl::encoding::Encode<HidDescriptorType, D>,
577 > fidl::encoding::Encode<HidbusGetDescriptorRequest, D> for (T0,)
578 {
579 #[inline]
580 unsafe fn encode(
581 self,
582 encoder: &mut fidl::encoding::Encoder<'_, D>,
583 offset: usize,
584 depth: fidl::encoding::Depth,
585 ) -> fidl::Result<()> {
586 encoder.debug_check_bounds::<HidbusGetDescriptorRequest>(offset);
587 self.0.encode(encoder, offset + 0, depth)?;
591 Ok(())
592 }
593 }
594
595 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
596 for HidbusGetDescriptorRequest
597 {
598 #[inline(always)]
599 fn new_empty() -> Self {
600 Self { desc_type: fidl::new_empty!(HidDescriptorType, D) }
601 }
602
603 #[inline]
604 unsafe fn decode(
605 &mut self,
606 decoder: &mut fidl::encoding::Decoder<'_, D>,
607 offset: usize,
608 _depth: fidl::encoding::Depth,
609 ) -> fidl::Result<()> {
610 decoder.debug_check_bounds::<Self>(offset);
611 fidl::decode!(HidDescriptorType, D, &mut self.desc_type, decoder, offset + 0, _depth)?;
613 Ok(())
614 }
615 }
616
617 impl fidl::encoding::ValueTypeMarker for HidbusGetIdleRequest {
618 type Borrowed<'a> = &'a Self;
619 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
620 value
621 }
622 }
623
624 unsafe impl fidl::encoding::TypeMarker for HidbusGetIdleRequest {
625 type Owned = Self;
626
627 #[inline(always)]
628 fn inline_align(_context: fidl::encoding::Context) -> usize {
629 1
630 }
631
632 #[inline(always)]
633 fn inline_size(_context: fidl::encoding::Context) -> usize {
634 1
635 }
636 #[inline(always)]
637 fn encode_is_copy() -> bool {
638 true
639 }
640
641 #[inline(always)]
642 fn decode_is_copy() -> bool {
643 true
644 }
645 }
646
647 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusGetIdleRequest, D>
648 for &HidbusGetIdleRequest
649 {
650 #[inline]
651 unsafe fn encode(
652 self,
653 encoder: &mut fidl::encoding::Encoder<'_, D>,
654 offset: usize,
655 _depth: fidl::encoding::Depth,
656 ) -> fidl::Result<()> {
657 encoder.debug_check_bounds::<HidbusGetIdleRequest>(offset);
658 unsafe {
659 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
661 (buf_ptr as *mut HidbusGetIdleRequest)
662 .write_unaligned((self as *const HidbusGetIdleRequest).read());
663 }
666 Ok(())
667 }
668 }
669 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u8, D>>
670 fidl::encoding::Encode<HidbusGetIdleRequest, D> for (T0,)
671 {
672 #[inline]
673 unsafe fn encode(
674 self,
675 encoder: &mut fidl::encoding::Encoder<'_, D>,
676 offset: usize,
677 depth: fidl::encoding::Depth,
678 ) -> fidl::Result<()> {
679 encoder.debug_check_bounds::<HidbusGetIdleRequest>(offset);
680 self.0.encode(encoder, offset + 0, depth)?;
684 Ok(())
685 }
686 }
687
688 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusGetIdleRequest {
689 #[inline(always)]
690 fn new_empty() -> Self {
691 Self { rpt_id: fidl::new_empty!(u8, D) }
692 }
693
694 #[inline]
695 unsafe fn decode(
696 &mut self,
697 decoder: &mut fidl::encoding::Decoder<'_, D>,
698 offset: usize,
699 _depth: fidl::encoding::Depth,
700 ) -> fidl::Result<()> {
701 decoder.debug_check_bounds::<Self>(offset);
702 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
703 unsafe {
706 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 1);
707 }
708 Ok(())
709 }
710 }
711
712 impl fidl::encoding::ValueTypeMarker for HidbusGetReportRequest {
713 type Borrowed<'a> = &'a Self;
714 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
715 value
716 }
717 }
718
719 unsafe impl fidl::encoding::TypeMarker for HidbusGetReportRequest {
720 type Owned = Self;
721
722 #[inline(always)]
723 fn inline_align(_context: fidl::encoding::Context) -> usize {
724 8
725 }
726
727 #[inline(always)]
728 fn inline_size(_context: fidl::encoding::Context) -> usize {
729 16
730 }
731 }
732
733 unsafe impl<D: fidl::encoding::ResourceDialect>
734 fidl::encoding::Encode<HidbusGetReportRequest, D> for &HidbusGetReportRequest
735 {
736 #[inline]
737 unsafe fn encode(
738 self,
739 encoder: &mut fidl::encoding::Encoder<'_, D>,
740 offset: usize,
741 _depth: fidl::encoding::Depth,
742 ) -> fidl::Result<()> {
743 encoder.debug_check_bounds::<HidbusGetReportRequest>(offset);
744 fidl::encoding::Encode::<HidbusGetReportRequest, D>::encode(
746 (
747 <ReportType as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_type),
748 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_id),
749 <u64 as fidl::encoding::ValueTypeMarker>::borrow(&self.len),
750 ),
751 encoder,
752 offset,
753 _depth,
754 )
755 }
756 }
757 unsafe impl<
758 D: fidl::encoding::ResourceDialect,
759 T0: fidl::encoding::Encode<ReportType, D>,
760 T1: fidl::encoding::Encode<u8, D>,
761 T2: fidl::encoding::Encode<u64, D>,
762 > fidl::encoding::Encode<HidbusGetReportRequest, D> for (T0, T1, T2)
763 {
764 #[inline]
765 unsafe fn encode(
766 self,
767 encoder: &mut fidl::encoding::Encoder<'_, D>,
768 offset: usize,
769 depth: fidl::encoding::Depth,
770 ) -> fidl::Result<()> {
771 encoder.debug_check_bounds::<HidbusGetReportRequest>(offset);
772 unsafe {
775 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
776 (ptr as *mut u64).write_unaligned(0);
777 }
778 self.0.encode(encoder, offset + 0, depth)?;
780 self.1.encode(encoder, offset + 1, depth)?;
781 self.2.encode(encoder, offset + 8, depth)?;
782 Ok(())
783 }
784 }
785
786 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
787 for HidbusGetReportRequest
788 {
789 #[inline(always)]
790 fn new_empty() -> Self {
791 Self {
792 rpt_type: fidl::new_empty!(ReportType, D),
793 rpt_id: fidl::new_empty!(u8, D),
794 len: fidl::new_empty!(u64, D),
795 }
796 }
797
798 #[inline]
799 unsafe fn decode(
800 &mut self,
801 decoder: &mut fidl::encoding::Decoder<'_, D>,
802 offset: usize,
803 _depth: fidl::encoding::Depth,
804 ) -> fidl::Result<()> {
805 decoder.debug_check_bounds::<Self>(offset);
806 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
808 let padval = unsafe { (ptr as *const u64).read_unaligned() };
809 let mask = 0xffffffffffff0000u64;
810 let maskedval = padval & mask;
811 if maskedval != 0 {
812 return Err(fidl::Error::NonZeroPadding {
813 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
814 });
815 }
816 fidl::decode!(ReportType, D, &mut self.rpt_type, decoder, offset + 0, _depth)?;
817 fidl::decode!(u8, D, &mut self.rpt_id, decoder, offset + 1, _depth)?;
818 fidl::decode!(u64, D, &mut self.len, decoder, offset + 8, _depth)?;
819 Ok(())
820 }
821 }
822
823 impl fidl::encoding::ValueTypeMarker for HidbusSetDescriptorRequest {
824 type Borrowed<'a> = &'a Self;
825 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
826 value
827 }
828 }
829
830 unsafe impl fidl::encoding::TypeMarker for HidbusSetDescriptorRequest {
831 type Owned = Self;
832
833 #[inline(always)]
834 fn inline_align(_context: fidl::encoding::Context) -> usize {
835 8
836 }
837
838 #[inline(always)]
839 fn inline_size(_context: fidl::encoding::Context) -> usize {
840 24
841 }
842 }
843
844 unsafe impl<D: fidl::encoding::ResourceDialect>
845 fidl::encoding::Encode<HidbusSetDescriptorRequest, D> for &HidbusSetDescriptorRequest
846 {
847 #[inline]
848 unsafe fn encode(
849 self,
850 encoder: &mut fidl::encoding::Encoder<'_, D>,
851 offset: usize,
852 _depth: fidl::encoding::Depth,
853 ) -> fidl::Result<()> {
854 encoder.debug_check_bounds::<HidbusSetDescriptorRequest>(offset);
855 fidl::encoding::Encode::<HidbusSetDescriptorRequest, D>::encode(
857 (
858 <HidDescriptorType as fidl::encoding::ValueTypeMarker>::borrow(&self.desc_type),
859 <fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
860 &self.data,
861 ),
862 ),
863 encoder,
864 offset,
865 _depth,
866 )
867 }
868 }
869 unsafe impl<
870 D: fidl::encoding::ResourceDialect,
871 T0: fidl::encoding::Encode<HidDescriptorType, D>,
872 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
873 > fidl::encoding::Encode<HidbusSetDescriptorRequest, D> for (T0, T1)
874 {
875 #[inline]
876 unsafe fn encode(
877 self,
878 encoder: &mut fidl::encoding::Encoder<'_, D>,
879 offset: usize,
880 depth: fidl::encoding::Depth,
881 ) -> fidl::Result<()> {
882 encoder.debug_check_bounds::<HidbusSetDescriptorRequest>(offset);
883 unsafe {
886 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
887 (ptr as *mut u64).write_unaligned(0);
888 }
889 self.0.encode(encoder, offset + 0, depth)?;
891 self.1.encode(encoder, offset + 8, depth)?;
892 Ok(())
893 }
894 }
895
896 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
897 for HidbusSetDescriptorRequest
898 {
899 #[inline(always)]
900 fn new_empty() -> Self {
901 Self {
902 desc_type: fidl::new_empty!(HidDescriptorType, D),
903 data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D),
904 }
905 }
906
907 #[inline]
908 unsafe fn decode(
909 &mut self,
910 decoder: &mut fidl::encoding::Decoder<'_, D>,
911 offset: usize,
912 _depth: fidl::encoding::Depth,
913 ) -> fidl::Result<()> {
914 decoder.debug_check_bounds::<Self>(offset);
915 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
917 let padval = unsafe { (ptr as *const u64).read_unaligned() };
918 let mask = 0xffffffffffffff00u64;
919 let maskedval = padval & mask;
920 if maskedval != 0 {
921 return Err(fidl::Error::NonZeroPadding {
922 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
923 });
924 }
925 fidl::decode!(HidDescriptorType, D, &mut self.desc_type, decoder, offset + 0, _depth)?;
926 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 8, _depth)?;
927 Ok(())
928 }
929 }
930
931 impl fidl::encoding::ValueTypeMarker for HidbusSetIdleRequest {
932 type Borrowed<'a> = &'a Self;
933 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
934 value
935 }
936 }
937
938 unsafe impl fidl::encoding::TypeMarker for HidbusSetIdleRequest {
939 type Owned = Self;
940
941 #[inline(always)]
942 fn inline_align(_context: fidl::encoding::Context) -> usize {
943 8
944 }
945
946 #[inline(always)]
947 fn inline_size(_context: fidl::encoding::Context) -> usize {
948 16
949 }
950 }
951
952 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusSetIdleRequest, D>
953 for &HidbusSetIdleRequest
954 {
955 #[inline]
956 unsafe fn encode(
957 self,
958 encoder: &mut fidl::encoding::Encoder<'_, D>,
959 offset: usize,
960 _depth: fidl::encoding::Depth,
961 ) -> fidl::Result<()> {
962 encoder.debug_check_bounds::<HidbusSetIdleRequest>(offset);
963 unsafe {
964 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
966 (buf_ptr as *mut HidbusSetIdleRequest)
967 .write_unaligned((self as *const HidbusSetIdleRequest).read());
968 let padding_ptr = buf_ptr.offset(0) as *mut u64;
971 let padding_mask = 0xffffffffffffff00u64;
972 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
973 }
974 Ok(())
975 }
976 }
977 unsafe impl<
978 D: fidl::encoding::ResourceDialect,
979 T0: fidl::encoding::Encode<u8, D>,
980 T1: fidl::encoding::Encode<i64, D>,
981 > fidl::encoding::Encode<HidbusSetIdleRequest, D> for (T0, T1)
982 {
983 #[inline]
984 unsafe fn encode(
985 self,
986 encoder: &mut fidl::encoding::Encoder<'_, D>,
987 offset: usize,
988 depth: fidl::encoding::Depth,
989 ) -> fidl::Result<()> {
990 encoder.debug_check_bounds::<HidbusSetIdleRequest>(offset);
991 unsafe {
994 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
995 (ptr as *mut u64).write_unaligned(0);
996 }
997 self.0.encode(encoder, offset + 0, depth)?;
999 self.1.encode(encoder, offset + 8, depth)?;
1000 Ok(())
1001 }
1002 }
1003
1004 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusSetIdleRequest {
1005 #[inline(always)]
1006 fn new_empty() -> Self {
1007 Self { rpt_id: fidl::new_empty!(u8, D), duration: fidl::new_empty!(i64, D) }
1008 }
1009
1010 #[inline]
1011 unsafe fn decode(
1012 &mut self,
1013 decoder: &mut fidl::encoding::Decoder<'_, D>,
1014 offset: usize,
1015 _depth: fidl::encoding::Depth,
1016 ) -> fidl::Result<()> {
1017 decoder.debug_check_bounds::<Self>(offset);
1018 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1019 let ptr = unsafe { buf_ptr.offset(0) };
1021 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1022 let mask = 0xffffffffffffff00u64;
1023 let maskedval = padval & mask;
1024 if maskedval != 0 {
1025 return Err(fidl::Error::NonZeroPadding {
1026 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1027 });
1028 }
1029 unsafe {
1031 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 16);
1032 }
1033 Ok(())
1034 }
1035 }
1036
1037 impl fidl::encoding::ValueTypeMarker for HidbusSetProtocolRequest {
1038 type Borrowed<'a> = &'a Self;
1039 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1040 value
1041 }
1042 }
1043
1044 unsafe impl fidl::encoding::TypeMarker for HidbusSetProtocolRequest {
1045 type Owned = Self;
1046
1047 #[inline(always)]
1048 fn inline_align(_context: fidl::encoding::Context) -> usize {
1049 1
1050 }
1051
1052 #[inline(always)]
1053 fn inline_size(_context: fidl::encoding::Context) -> usize {
1054 1
1055 }
1056 }
1057
1058 unsafe impl<D: fidl::encoding::ResourceDialect>
1059 fidl::encoding::Encode<HidbusSetProtocolRequest, D> for &HidbusSetProtocolRequest
1060 {
1061 #[inline]
1062 unsafe fn encode(
1063 self,
1064 encoder: &mut fidl::encoding::Encoder<'_, D>,
1065 offset: usize,
1066 _depth: fidl::encoding::Depth,
1067 ) -> fidl::Result<()> {
1068 encoder.debug_check_bounds::<HidbusSetProtocolRequest>(offset);
1069 fidl::encoding::Encode::<HidbusSetProtocolRequest, D>::encode(
1071 (<HidProtocol as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),),
1072 encoder,
1073 offset,
1074 _depth,
1075 )
1076 }
1077 }
1078 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidProtocol, D>>
1079 fidl::encoding::Encode<HidbusSetProtocolRequest, D> for (T0,)
1080 {
1081 #[inline]
1082 unsafe fn encode(
1083 self,
1084 encoder: &mut fidl::encoding::Encoder<'_, D>,
1085 offset: usize,
1086 depth: fidl::encoding::Depth,
1087 ) -> fidl::Result<()> {
1088 encoder.debug_check_bounds::<HidbusSetProtocolRequest>(offset);
1089 self.0.encode(encoder, offset + 0, depth)?;
1093 Ok(())
1094 }
1095 }
1096
1097 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1098 for HidbusSetProtocolRequest
1099 {
1100 #[inline(always)]
1101 fn new_empty() -> Self {
1102 Self { protocol: fidl::new_empty!(HidProtocol, D) }
1103 }
1104
1105 #[inline]
1106 unsafe fn decode(
1107 &mut self,
1108 decoder: &mut fidl::encoding::Decoder<'_, D>,
1109 offset: usize,
1110 _depth: fidl::encoding::Depth,
1111 ) -> fidl::Result<()> {
1112 decoder.debug_check_bounds::<Self>(offset);
1113 fidl::decode!(HidProtocol, D, &mut self.protocol, decoder, offset + 0, _depth)?;
1115 Ok(())
1116 }
1117 }
1118
1119 impl fidl::encoding::ValueTypeMarker for HidbusSetReportRequest {
1120 type Borrowed<'a> = &'a Self;
1121 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1122 value
1123 }
1124 }
1125
1126 unsafe impl fidl::encoding::TypeMarker for HidbusSetReportRequest {
1127 type Owned = Self;
1128
1129 #[inline(always)]
1130 fn inline_align(_context: fidl::encoding::Context) -> usize {
1131 8
1132 }
1133
1134 #[inline(always)]
1135 fn inline_size(_context: fidl::encoding::Context) -> usize {
1136 24
1137 }
1138 }
1139
1140 unsafe impl<D: fidl::encoding::ResourceDialect>
1141 fidl::encoding::Encode<HidbusSetReportRequest, D> for &HidbusSetReportRequest
1142 {
1143 #[inline]
1144 unsafe fn encode(
1145 self,
1146 encoder: &mut fidl::encoding::Encoder<'_, D>,
1147 offset: usize,
1148 _depth: fidl::encoding::Depth,
1149 ) -> fidl::Result<()> {
1150 encoder.debug_check_bounds::<HidbusSetReportRequest>(offset);
1151 fidl::encoding::Encode::<HidbusSetReportRequest, D>::encode(
1153 (
1154 <ReportType as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_type),
1155 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rpt_id),
1156 <fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1157 &self.data,
1158 ),
1159 ),
1160 encoder,
1161 offset,
1162 _depth,
1163 )
1164 }
1165 }
1166 unsafe impl<
1167 D: fidl::encoding::ResourceDialect,
1168 T0: fidl::encoding::Encode<ReportType, D>,
1169 T1: fidl::encoding::Encode<u8, D>,
1170 T2: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1171 > fidl::encoding::Encode<HidbusSetReportRequest, D> for (T0, T1, T2)
1172 {
1173 #[inline]
1174 unsafe fn encode(
1175 self,
1176 encoder: &mut fidl::encoding::Encoder<'_, D>,
1177 offset: usize,
1178 depth: fidl::encoding::Depth,
1179 ) -> fidl::Result<()> {
1180 encoder.debug_check_bounds::<HidbusSetReportRequest>(offset);
1181 unsafe {
1184 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
1185 (ptr as *mut u64).write_unaligned(0);
1186 }
1187 self.0.encode(encoder, offset + 0, depth)?;
1189 self.1.encode(encoder, offset + 1, depth)?;
1190 self.2.encode(encoder, offset + 8, depth)?;
1191 Ok(())
1192 }
1193 }
1194
1195 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1196 for HidbusSetReportRequest
1197 {
1198 #[inline(always)]
1199 fn new_empty() -> Self {
1200 Self {
1201 rpt_type: fidl::new_empty!(ReportType, D),
1202 rpt_id: fidl::new_empty!(u8, D),
1203 data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D),
1204 }
1205 }
1206
1207 #[inline]
1208 unsafe fn decode(
1209 &mut self,
1210 decoder: &mut fidl::encoding::Decoder<'_, D>,
1211 offset: usize,
1212 _depth: fidl::encoding::Depth,
1213 ) -> fidl::Result<()> {
1214 decoder.debug_check_bounds::<Self>(offset);
1215 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
1217 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1218 let mask = 0xffffffffffff0000u64;
1219 let maskedval = padval & mask;
1220 if maskedval != 0 {
1221 return Err(fidl::Error::NonZeroPadding {
1222 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
1223 });
1224 }
1225 fidl::decode!(ReportType, D, &mut self.rpt_type, decoder, offset + 0, _depth)?;
1226 fidl::decode!(u8, D, &mut self.rpt_id, decoder, offset + 1, _depth)?;
1227 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 8, _depth)?;
1228 Ok(())
1229 }
1230 }
1231
1232 impl fidl::encoding::ValueTypeMarker for HidbusGetDescriptorResponse {
1233 type Borrowed<'a> = &'a Self;
1234 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1235 value
1236 }
1237 }
1238
1239 unsafe impl fidl::encoding::TypeMarker for HidbusGetDescriptorResponse {
1240 type Owned = Self;
1241
1242 #[inline(always)]
1243 fn inline_align(_context: fidl::encoding::Context) -> usize {
1244 8
1245 }
1246
1247 #[inline(always)]
1248 fn inline_size(_context: fidl::encoding::Context) -> usize {
1249 16
1250 }
1251 }
1252
1253 unsafe impl<D: fidl::encoding::ResourceDialect>
1254 fidl::encoding::Encode<HidbusGetDescriptorResponse, D> for &HidbusGetDescriptorResponse
1255 {
1256 #[inline]
1257 unsafe fn encode(
1258 self,
1259 encoder: &mut fidl::encoding::Encoder<'_, D>,
1260 offset: usize,
1261 _depth: fidl::encoding::Depth,
1262 ) -> fidl::Result<()> {
1263 encoder.debug_check_bounds::<HidbusGetDescriptorResponse>(offset);
1264 fidl::encoding::Encode::<HidbusGetDescriptorResponse, D>::encode(
1266 (<fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1267 &self.data,
1268 ),),
1269 encoder,
1270 offset,
1271 _depth,
1272 )
1273 }
1274 }
1275 unsafe impl<
1276 D: fidl::encoding::ResourceDialect,
1277 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1278 > fidl::encoding::Encode<HidbusGetDescriptorResponse, D> for (T0,)
1279 {
1280 #[inline]
1281 unsafe fn encode(
1282 self,
1283 encoder: &mut fidl::encoding::Encoder<'_, D>,
1284 offset: usize,
1285 depth: fidl::encoding::Depth,
1286 ) -> fidl::Result<()> {
1287 encoder.debug_check_bounds::<HidbusGetDescriptorResponse>(offset);
1288 self.0.encode(encoder, offset + 0, depth)?;
1292 Ok(())
1293 }
1294 }
1295
1296 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1297 for HidbusGetDescriptorResponse
1298 {
1299 #[inline(always)]
1300 fn new_empty() -> Self {
1301 Self { data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D) }
1302 }
1303
1304 #[inline]
1305 unsafe fn decode(
1306 &mut self,
1307 decoder: &mut fidl::encoding::Decoder<'_, D>,
1308 offset: usize,
1309 _depth: fidl::encoding::Depth,
1310 ) -> fidl::Result<()> {
1311 decoder.debug_check_bounds::<Self>(offset);
1312 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 0, _depth)?;
1314 Ok(())
1315 }
1316 }
1317
1318 impl fidl::encoding::ValueTypeMarker for HidbusGetIdleResponse {
1319 type Borrowed<'a> = &'a Self;
1320 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1321 value
1322 }
1323 }
1324
1325 unsafe impl fidl::encoding::TypeMarker for HidbusGetIdleResponse {
1326 type Owned = Self;
1327
1328 #[inline(always)]
1329 fn inline_align(_context: fidl::encoding::Context) -> usize {
1330 8
1331 }
1332
1333 #[inline(always)]
1334 fn inline_size(_context: fidl::encoding::Context) -> usize {
1335 8
1336 }
1337 #[inline(always)]
1338 fn encode_is_copy() -> bool {
1339 true
1340 }
1341
1342 #[inline(always)]
1343 fn decode_is_copy() -> bool {
1344 true
1345 }
1346 }
1347
1348 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusGetIdleResponse, D>
1349 for &HidbusGetIdleResponse
1350 {
1351 #[inline]
1352 unsafe fn encode(
1353 self,
1354 encoder: &mut fidl::encoding::Encoder<'_, D>,
1355 offset: usize,
1356 _depth: fidl::encoding::Depth,
1357 ) -> fidl::Result<()> {
1358 encoder.debug_check_bounds::<HidbusGetIdleResponse>(offset);
1359 unsafe {
1360 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1362 (buf_ptr as *mut HidbusGetIdleResponse)
1363 .write_unaligned((self as *const HidbusGetIdleResponse).read());
1364 }
1367 Ok(())
1368 }
1369 }
1370 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
1371 fidl::encoding::Encode<HidbusGetIdleResponse, D> for (T0,)
1372 {
1373 #[inline]
1374 unsafe fn encode(
1375 self,
1376 encoder: &mut fidl::encoding::Encoder<'_, D>,
1377 offset: usize,
1378 depth: fidl::encoding::Depth,
1379 ) -> fidl::Result<()> {
1380 encoder.debug_check_bounds::<HidbusGetIdleResponse>(offset);
1381 self.0.encode(encoder, offset + 0, depth)?;
1385 Ok(())
1386 }
1387 }
1388
1389 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusGetIdleResponse {
1390 #[inline(always)]
1391 fn new_empty() -> Self {
1392 Self { duration: fidl::new_empty!(i64, D) }
1393 }
1394
1395 #[inline]
1396 unsafe fn decode(
1397 &mut self,
1398 decoder: &mut fidl::encoding::Decoder<'_, D>,
1399 offset: usize,
1400 _depth: fidl::encoding::Depth,
1401 ) -> fidl::Result<()> {
1402 decoder.debug_check_bounds::<Self>(offset);
1403 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
1404 unsafe {
1407 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
1408 }
1409 Ok(())
1410 }
1411 }
1412
1413 impl fidl::encoding::ValueTypeMarker for HidbusGetProtocolResponse {
1414 type Borrowed<'a> = &'a Self;
1415 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1416 value
1417 }
1418 }
1419
1420 unsafe impl fidl::encoding::TypeMarker for HidbusGetProtocolResponse {
1421 type Owned = Self;
1422
1423 #[inline(always)]
1424 fn inline_align(_context: fidl::encoding::Context) -> usize {
1425 1
1426 }
1427
1428 #[inline(always)]
1429 fn inline_size(_context: fidl::encoding::Context) -> usize {
1430 1
1431 }
1432 }
1433
1434 unsafe impl<D: fidl::encoding::ResourceDialect>
1435 fidl::encoding::Encode<HidbusGetProtocolResponse, D> for &HidbusGetProtocolResponse
1436 {
1437 #[inline]
1438 unsafe fn encode(
1439 self,
1440 encoder: &mut fidl::encoding::Encoder<'_, D>,
1441 offset: usize,
1442 _depth: fidl::encoding::Depth,
1443 ) -> fidl::Result<()> {
1444 encoder.debug_check_bounds::<HidbusGetProtocolResponse>(offset);
1445 fidl::encoding::Encode::<HidbusGetProtocolResponse, D>::encode(
1447 (<HidProtocol as fidl::encoding::ValueTypeMarker>::borrow(&self.protocol),),
1448 encoder,
1449 offset,
1450 _depth,
1451 )
1452 }
1453 }
1454 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidProtocol, D>>
1455 fidl::encoding::Encode<HidbusGetProtocolResponse, D> for (T0,)
1456 {
1457 #[inline]
1458 unsafe fn encode(
1459 self,
1460 encoder: &mut fidl::encoding::Encoder<'_, D>,
1461 offset: usize,
1462 depth: fidl::encoding::Depth,
1463 ) -> fidl::Result<()> {
1464 encoder.debug_check_bounds::<HidbusGetProtocolResponse>(offset);
1465 self.0.encode(encoder, offset + 0, depth)?;
1469 Ok(())
1470 }
1471 }
1472
1473 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1474 for HidbusGetProtocolResponse
1475 {
1476 #[inline(always)]
1477 fn new_empty() -> Self {
1478 Self { protocol: fidl::new_empty!(HidProtocol, D) }
1479 }
1480
1481 #[inline]
1482 unsafe fn decode(
1483 &mut self,
1484 decoder: &mut fidl::encoding::Decoder<'_, D>,
1485 offset: usize,
1486 _depth: fidl::encoding::Depth,
1487 ) -> fidl::Result<()> {
1488 decoder.debug_check_bounds::<Self>(offset);
1489 fidl::decode!(HidProtocol, D, &mut self.protocol, decoder, offset + 0, _depth)?;
1491 Ok(())
1492 }
1493 }
1494
1495 impl fidl::encoding::ValueTypeMarker for HidbusGetReportResponse {
1496 type Borrowed<'a> = &'a Self;
1497 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1498 value
1499 }
1500 }
1501
1502 unsafe impl fidl::encoding::TypeMarker for HidbusGetReportResponse {
1503 type Owned = Self;
1504
1505 #[inline(always)]
1506 fn inline_align(_context: fidl::encoding::Context) -> usize {
1507 8
1508 }
1509
1510 #[inline(always)]
1511 fn inline_size(_context: fidl::encoding::Context) -> usize {
1512 16
1513 }
1514 }
1515
1516 unsafe impl<D: fidl::encoding::ResourceDialect>
1517 fidl::encoding::Encode<HidbusGetReportResponse, D> for &HidbusGetReportResponse
1518 {
1519 #[inline]
1520 unsafe fn encode(
1521 self,
1522 encoder: &mut fidl::encoding::Encoder<'_, D>,
1523 offset: usize,
1524 _depth: fidl::encoding::Depth,
1525 ) -> fidl::Result<()> {
1526 encoder.debug_check_bounds::<HidbusGetReportResponse>(offset);
1527 fidl::encoding::Encode::<HidbusGetReportResponse, D>::encode(
1529 (<fidl::encoding::Vector<u8, 8192> as fidl::encoding::ValueTypeMarker>::borrow(
1530 &self.data,
1531 ),),
1532 encoder,
1533 offset,
1534 _depth,
1535 )
1536 }
1537 }
1538 unsafe impl<
1539 D: fidl::encoding::ResourceDialect,
1540 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 8192>, D>,
1541 > fidl::encoding::Encode<HidbusGetReportResponse, D> for (T0,)
1542 {
1543 #[inline]
1544 unsafe fn encode(
1545 self,
1546 encoder: &mut fidl::encoding::Encoder<'_, D>,
1547 offset: usize,
1548 depth: fidl::encoding::Depth,
1549 ) -> fidl::Result<()> {
1550 encoder.debug_check_bounds::<HidbusGetReportResponse>(offset);
1551 self.0.encode(encoder, offset + 0, depth)?;
1555 Ok(())
1556 }
1557 }
1558
1559 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1560 for HidbusGetReportResponse
1561 {
1562 #[inline(always)]
1563 fn new_empty() -> Self {
1564 Self { data: fidl::new_empty!(fidl::encoding::Vector<u8, 8192>, D) }
1565 }
1566
1567 #[inline]
1568 unsafe fn decode(
1569 &mut self,
1570 decoder: &mut fidl::encoding::Decoder<'_, D>,
1571 offset: usize,
1572 _depth: fidl::encoding::Depth,
1573 ) -> fidl::Result<()> {
1574 decoder.debug_check_bounds::<Self>(offset);
1575 fidl::decode!(fidl::encoding::Vector<u8, 8192>, D, &mut self.data, decoder, offset + 0, _depth)?;
1577 Ok(())
1578 }
1579 }
1580
1581 impl fidl::encoding::ValueTypeMarker for HidbusQueryResponse {
1582 type Borrowed<'a> = &'a Self;
1583 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1584 value
1585 }
1586 }
1587
1588 unsafe impl fidl::encoding::TypeMarker for HidbusQueryResponse {
1589 type Owned = Self;
1590
1591 #[inline(always)]
1592 fn inline_align(_context: fidl::encoding::Context) -> usize {
1593 8
1594 }
1595
1596 #[inline(always)]
1597 fn inline_size(_context: fidl::encoding::Context) -> usize {
1598 16
1599 }
1600 }
1601
1602 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidbusQueryResponse, D>
1603 for &HidbusQueryResponse
1604 {
1605 #[inline]
1606 unsafe fn encode(
1607 self,
1608 encoder: &mut fidl::encoding::Encoder<'_, D>,
1609 offset: usize,
1610 _depth: fidl::encoding::Depth,
1611 ) -> fidl::Result<()> {
1612 encoder.debug_check_bounds::<HidbusQueryResponse>(offset);
1613 fidl::encoding::Encode::<HidbusQueryResponse, D>::encode(
1615 (<HidInfo as fidl::encoding::ValueTypeMarker>::borrow(&self.info),),
1616 encoder,
1617 offset,
1618 _depth,
1619 )
1620 }
1621 }
1622 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<HidInfo, D>>
1623 fidl::encoding::Encode<HidbusQueryResponse, D> for (T0,)
1624 {
1625 #[inline]
1626 unsafe fn encode(
1627 self,
1628 encoder: &mut fidl::encoding::Encoder<'_, D>,
1629 offset: usize,
1630 depth: fidl::encoding::Depth,
1631 ) -> fidl::Result<()> {
1632 encoder.debug_check_bounds::<HidbusQueryResponse>(offset);
1633 self.0.encode(encoder, offset + 0, depth)?;
1637 Ok(())
1638 }
1639 }
1640
1641 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidbusQueryResponse {
1642 #[inline(always)]
1643 fn new_empty() -> Self {
1644 Self { info: fidl::new_empty!(HidInfo, D) }
1645 }
1646
1647 #[inline]
1648 unsafe fn decode(
1649 &mut self,
1650 decoder: &mut fidl::encoding::Decoder<'_, D>,
1651 offset: usize,
1652 _depth: fidl::encoding::Depth,
1653 ) -> fidl::Result<()> {
1654 decoder.debug_check_bounds::<Self>(offset);
1655 fidl::decode!(HidInfo, D, &mut self.info, decoder, offset + 0, _depth)?;
1657 Ok(())
1658 }
1659 }
1660
1661 impl HidInfo {
1662 #[inline(always)]
1663 fn max_ordinal_present(&self) -> u64 {
1664 if let Some(_) = self.serial_number {
1665 return 9;
1666 }
1667 if let Some(_) = self.product_name {
1668 return 8;
1669 }
1670 if let Some(_) = self.manufacturer_name {
1671 return 7;
1672 }
1673 if let Some(_) = self.polling_rate {
1674 return 6;
1675 }
1676 if let Some(_) = self.version {
1677 return 5;
1678 }
1679 if let Some(_) = self.product_id {
1680 return 4;
1681 }
1682 if let Some(_) = self.vendor_id {
1683 return 3;
1684 }
1685 if let Some(_) = self.boot_protocol {
1686 return 2;
1687 }
1688 if let Some(_) = self.dev_num {
1689 return 1;
1690 }
1691 0
1692 }
1693 }
1694
1695 impl fidl::encoding::ValueTypeMarker for HidInfo {
1696 type Borrowed<'a> = &'a Self;
1697 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1698 value
1699 }
1700 }
1701
1702 unsafe impl fidl::encoding::TypeMarker for HidInfo {
1703 type Owned = Self;
1704
1705 #[inline(always)]
1706 fn inline_align(_context: fidl::encoding::Context) -> usize {
1707 8
1708 }
1709
1710 #[inline(always)]
1711 fn inline_size(_context: fidl::encoding::Context) -> usize {
1712 16
1713 }
1714 }
1715
1716 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<HidInfo, D> for &HidInfo {
1717 unsafe fn encode(
1718 self,
1719 encoder: &mut fidl::encoding::Encoder<'_, D>,
1720 offset: usize,
1721 mut depth: fidl::encoding::Depth,
1722 ) -> fidl::Result<()> {
1723 encoder.debug_check_bounds::<HidInfo>(offset);
1724 let max_ordinal: u64 = self.max_ordinal_present();
1726 encoder.write_num(max_ordinal, offset);
1727 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1728 if max_ordinal == 0 {
1730 return Ok(());
1731 }
1732 depth.increment()?;
1733 let envelope_size = 8;
1734 let bytes_len = max_ordinal as usize * envelope_size;
1735 #[allow(unused_variables)]
1736 let offset = encoder.out_of_line_offset(bytes_len);
1737 let mut _prev_end_offset: usize = 0;
1738 if 1 > max_ordinal {
1739 return Ok(());
1740 }
1741
1742 let cur_offset: usize = (1 - 1) * envelope_size;
1745
1746 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1748
1749 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1754 self.dev_num.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1755 encoder,
1756 offset + cur_offset,
1757 depth,
1758 )?;
1759
1760 _prev_end_offset = cur_offset + envelope_size;
1761 if 2 > max_ordinal {
1762 return Ok(());
1763 }
1764
1765 let cur_offset: usize = (2 - 1) * envelope_size;
1768
1769 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1771
1772 fidl::encoding::encode_in_envelope_optional::<HidBootProtocol, D>(
1777 self.boot_protocol
1778 .as_ref()
1779 .map(<HidBootProtocol as fidl::encoding::ValueTypeMarker>::borrow),
1780 encoder,
1781 offset + cur_offset,
1782 depth,
1783 )?;
1784
1785 _prev_end_offset = cur_offset + envelope_size;
1786 if 3 > max_ordinal {
1787 return Ok(());
1788 }
1789
1790 let cur_offset: usize = (3 - 1) * envelope_size;
1793
1794 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1796
1797 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1802 self.vendor_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1803 encoder,
1804 offset + cur_offset,
1805 depth,
1806 )?;
1807
1808 _prev_end_offset = cur_offset + envelope_size;
1809 if 4 > max_ordinal {
1810 return Ok(());
1811 }
1812
1813 let cur_offset: usize = (4 - 1) * envelope_size;
1816
1817 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1819
1820 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1825 self.product_id.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1826 encoder,
1827 offset + cur_offset,
1828 depth,
1829 )?;
1830
1831 _prev_end_offset = cur_offset + envelope_size;
1832 if 5 > max_ordinal {
1833 return Ok(());
1834 }
1835
1836 let cur_offset: usize = (5 - 1) * envelope_size;
1839
1840 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1842
1843 fidl::encoding::encode_in_envelope_optional::<u32, D>(
1848 self.version.as_ref().map(<u32 as fidl::encoding::ValueTypeMarker>::borrow),
1849 encoder,
1850 offset + cur_offset,
1851 depth,
1852 )?;
1853
1854 _prev_end_offset = cur_offset + envelope_size;
1855 if 6 > max_ordinal {
1856 return Ok(());
1857 }
1858
1859 let cur_offset: usize = (6 - 1) * envelope_size;
1862
1863 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1865
1866 fidl::encoding::encode_in_envelope_optional::<i64, D>(
1871 self.polling_rate.as_ref().map(<i64 as fidl::encoding::ValueTypeMarker>::borrow),
1872 encoder,
1873 offset + cur_offset,
1874 depth,
1875 )?;
1876
1877 _prev_end_offset = cur_offset + envelope_size;
1878 if 7 > max_ordinal {
1879 return Ok(());
1880 }
1881
1882 let cur_offset: usize = (7 - 1) * envelope_size;
1885
1886 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1888
1889 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
1894 self.manufacturer_name.as_ref().map(
1895 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
1896 ),
1897 encoder,
1898 offset + cur_offset,
1899 depth,
1900 )?;
1901
1902 _prev_end_offset = cur_offset + envelope_size;
1903 if 8 > max_ordinal {
1904 return Ok(());
1905 }
1906
1907 let cur_offset: usize = (8 - 1) * envelope_size;
1910
1911 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1913
1914 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
1919 self.product_name.as_ref().map(
1920 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
1921 ),
1922 encoder,
1923 offset + cur_offset,
1924 depth,
1925 )?;
1926
1927 _prev_end_offset = cur_offset + envelope_size;
1928 if 9 > max_ordinal {
1929 return Ok(());
1930 }
1931
1932 let cur_offset: usize = (9 - 1) * envelope_size;
1935
1936 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1938
1939 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::BoundedString<256>, D>(
1944 self.serial_number.as_ref().map(
1945 <fidl::encoding::BoundedString<256> as fidl::encoding::ValueTypeMarker>::borrow,
1946 ),
1947 encoder,
1948 offset + cur_offset,
1949 depth,
1950 )?;
1951
1952 _prev_end_offset = cur_offset + envelope_size;
1953
1954 Ok(())
1955 }
1956 }
1957
1958 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for HidInfo {
1959 #[inline(always)]
1960 fn new_empty() -> Self {
1961 Self::default()
1962 }
1963
1964 unsafe fn decode(
1965 &mut self,
1966 decoder: &mut fidl::encoding::Decoder<'_, D>,
1967 offset: usize,
1968 mut depth: fidl::encoding::Depth,
1969 ) -> fidl::Result<()> {
1970 decoder.debug_check_bounds::<Self>(offset);
1971 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1972 None => return Err(fidl::Error::NotNullable),
1973 Some(len) => len,
1974 };
1975 if len == 0 {
1977 return Ok(());
1978 };
1979 depth.increment()?;
1980 let envelope_size = 8;
1981 let bytes_len = len * envelope_size;
1982 let offset = decoder.out_of_line_offset(bytes_len)?;
1983 let mut _next_ordinal_to_read = 0;
1985 let mut next_offset = offset;
1986 let end_offset = offset + bytes_len;
1987 _next_ordinal_to_read += 1;
1988 if next_offset >= end_offset {
1989 return Ok(());
1990 }
1991
1992 while _next_ordinal_to_read < 1 {
1994 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1995 _next_ordinal_to_read += 1;
1996 next_offset += envelope_size;
1997 }
1998
1999 let next_out_of_line = decoder.next_out_of_line();
2000 let handles_before = decoder.remaining_handles();
2001 if let Some((inlined, num_bytes, num_handles)) =
2002 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2003 {
2004 let member_inline_size =
2005 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2006 if inlined != (member_inline_size <= 4) {
2007 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2008 }
2009 let inner_offset;
2010 let mut inner_depth = depth.clone();
2011 if inlined {
2012 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2013 inner_offset = next_offset;
2014 } else {
2015 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2016 inner_depth.increment()?;
2017 }
2018 let val_ref = self.dev_num.get_or_insert_with(|| fidl::new_empty!(u8, D));
2019 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
2020 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2021 {
2022 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2023 }
2024 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2025 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2026 }
2027 }
2028
2029 next_offset += envelope_size;
2030 _next_ordinal_to_read += 1;
2031 if next_offset >= end_offset {
2032 return Ok(());
2033 }
2034
2035 while _next_ordinal_to_read < 2 {
2037 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2038 _next_ordinal_to_read += 1;
2039 next_offset += envelope_size;
2040 }
2041
2042 let next_out_of_line = decoder.next_out_of_line();
2043 let handles_before = decoder.remaining_handles();
2044 if let Some((inlined, num_bytes, num_handles)) =
2045 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2046 {
2047 let member_inline_size =
2048 <HidBootProtocol as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2049 if inlined != (member_inline_size <= 4) {
2050 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2051 }
2052 let inner_offset;
2053 let mut inner_depth = depth.clone();
2054 if inlined {
2055 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2056 inner_offset = next_offset;
2057 } else {
2058 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2059 inner_depth.increment()?;
2060 }
2061 let val_ref =
2062 self.boot_protocol.get_or_insert_with(|| fidl::new_empty!(HidBootProtocol, D));
2063 fidl::decode!(HidBootProtocol, D, val_ref, decoder, inner_offset, inner_depth)?;
2064 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2065 {
2066 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2067 }
2068 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2069 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2070 }
2071 }
2072
2073 next_offset += envelope_size;
2074 _next_ordinal_to_read += 1;
2075 if next_offset >= end_offset {
2076 return Ok(());
2077 }
2078
2079 while _next_ordinal_to_read < 3 {
2081 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2082 _next_ordinal_to_read += 1;
2083 next_offset += envelope_size;
2084 }
2085
2086 let next_out_of_line = decoder.next_out_of_line();
2087 let handles_before = decoder.remaining_handles();
2088 if let Some((inlined, num_bytes, num_handles)) =
2089 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2090 {
2091 let member_inline_size =
2092 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2093 if inlined != (member_inline_size <= 4) {
2094 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2095 }
2096 let inner_offset;
2097 let mut inner_depth = depth.clone();
2098 if inlined {
2099 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2100 inner_offset = next_offset;
2101 } else {
2102 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2103 inner_depth.increment()?;
2104 }
2105 let val_ref = self.vendor_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2106 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2107 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2108 {
2109 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2110 }
2111 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2112 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2113 }
2114 }
2115
2116 next_offset += envelope_size;
2117 _next_ordinal_to_read += 1;
2118 if next_offset >= end_offset {
2119 return Ok(());
2120 }
2121
2122 while _next_ordinal_to_read < 4 {
2124 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2125 _next_ordinal_to_read += 1;
2126 next_offset += envelope_size;
2127 }
2128
2129 let next_out_of_line = decoder.next_out_of_line();
2130 let handles_before = decoder.remaining_handles();
2131 if let Some((inlined, num_bytes, num_handles)) =
2132 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2133 {
2134 let member_inline_size =
2135 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2136 if inlined != (member_inline_size <= 4) {
2137 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2138 }
2139 let inner_offset;
2140 let mut inner_depth = depth.clone();
2141 if inlined {
2142 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2143 inner_offset = next_offset;
2144 } else {
2145 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2146 inner_depth.increment()?;
2147 }
2148 let val_ref = self.product_id.get_or_insert_with(|| fidl::new_empty!(u32, D));
2149 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2150 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2151 {
2152 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2153 }
2154 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2155 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2156 }
2157 }
2158
2159 next_offset += envelope_size;
2160 _next_ordinal_to_read += 1;
2161 if next_offset >= end_offset {
2162 return Ok(());
2163 }
2164
2165 while _next_ordinal_to_read < 5 {
2167 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2168 _next_ordinal_to_read += 1;
2169 next_offset += envelope_size;
2170 }
2171
2172 let next_out_of_line = decoder.next_out_of_line();
2173 let handles_before = decoder.remaining_handles();
2174 if let Some((inlined, num_bytes, num_handles)) =
2175 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2176 {
2177 let member_inline_size =
2178 <u32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2179 if inlined != (member_inline_size <= 4) {
2180 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2181 }
2182 let inner_offset;
2183 let mut inner_depth = depth.clone();
2184 if inlined {
2185 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2186 inner_offset = next_offset;
2187 } else {
2188 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2189 inner_depth.increment()?;
2190 }
2191 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(u32, D));
2192 fidl::decode!(u32, D, val_ref, decoder, inner_offset, inner_depth)?;
2193 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2194 {
2195 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2196 }
2197 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2198 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2199 }
2200 }
2201
2202 next_offset += envelope_size;
2203 _next_ordinal_to_read += 1;
2204 if next_offset >= end_offset {
2205 return Ok(());
2206 }
2207
2208 while _next_ordinal_to_read < 6 {
2210 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2211 _next_ordinal_to_read += 1;
2212 next_offset += envelope_size;
2213 }
2214
2215 let next_out_of_line = decoder.next_out_of_line();
2216 let handles_before = decoder.remaining_handles();
2217 if let Some((inlined, num_bytes, num_handles)) =
2218 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2219 {
2220 let member_inline_size =
2221 <i64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2222 if inlined != (member_inline_size <= 4) {
2223 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2224 }
2225 let inner_offset;
2226 let mut inner_depth = depth.clone();
2227 if inlined {
2228 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2229 inner_offset = next_offset;
2230 } else {
2231 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2232 inner_depth.increment()?;
2233 }
2234 let val_ref = self.polling_rate.get_or_insert_with(|| fidl::new_empty!(i64, D));
2235 fidl::decode!(i64, D, val_ref, decoder, inner_offset, inner_depth)?;
2236 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2237 {
2238 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2239 }
2240 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2241 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2242 }
2243 }
2244
2245 next_offset += envelope_size;
2246 _next_ordinal_to_read += 1;
2247 if next_offset >= end_offset {
2248 return Ok(());
2249 }
2250
2251 while _next_ordinal_to_read < 7 {
2253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2254 _next_ordinal_to_read += 1;
2255 next_offset += envelope_size;
2256 }
2257
2258 let next_out_of_line = decoder.next_out_of_line();
2259 let handles_before = decoder.remaining_handles();
2260 if let Some((inlined, num_bytes, num_handles)) =
2261 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2262 {
2263 let member_inline_size =
2264 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
2265 decoder.context,
2266 );
2267 if inlined != (member_inline_size <= 4) {
2268 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2269 }
2270 let inner_offset;
2271 let mut inner_depth = depth.clone();
2272 if inlined {
2273 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2274 inner_offset = next_offset;
2275 } else {
2276 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2277 inner_depth.increment()?;
2278 }
2279 let val_ref = self
2280 .manufacturer_name
2281 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
2282 fidl::decode!(
2283 fidl::encoding::BoundedString<256>,
2284 D,
2285 val_ref,
2286 decoder,
2287 inner_offset,
2288 inner_depth
2289 )?;
2290 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2291 {
2292 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2293 }
2294 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2295 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2296 }
2297 }
2298
2299 next_offset += envelope_size;
2300 _next_ordinal_to_read += 1;
2301 if next_offset >= end_offset {
2302 return Ok(());
2303 }
2304
2305 while _next_ordinal_to_read < 8 {
2307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2308 _next_ordinal_to_read += 1;
2309 next_offset += envelope_size;
2310 }
2311
2312 let next_out_of_line = decoder.next_out_of_line();
2313 let handles_before = decoder.remaining_handles();
2314 if let Some((inlined, num_bytes, num_handles)) =
2315 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2316 {
2317 let member_inline_size =
2318 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
2319 decoder.context,
2320 );
2321 if inlined != (member_inline_size <= 4) {
2322 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2323 }
2324 let inner_offset;
2325 let mut inner_depth = depth.clone();
2326 if inlined {
2327 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2328 inner_offset = next_offset;
2329 } else {
2330 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2331 inner_depth.increment()?;
2332 }
2333 let val_ref = self
2334 .product_name
2335 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
2336 fidl::decode!(
2337 fidl::encoding::BoundedString<256>,
2338 D,
2339 val_ref,
2340 decoder,
2341 inner_offset,
2342 inner_depth
2343 )?;
2344 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2345 {
2346 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2347 }
2348 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2349 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2350 }
2351 }
2352
2353 next_offset += envelope_size;
2354 _next_ordinal_to_read += 1;
2355 if next_offset >= end_offset {
2356 return Ok(());
2357 }
2358
2359 while _next_ordinal_to_read < 9 {
2361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2362 _next_ordinal_to_read += 1;
2363 next_offset += envelope_size;
2364 }
2365
2366 let next_out_of_line = decoder.next_out_of_line();
2367 let handles_before = decoder.remaining_handles();
2368 if let Some((inlined, num_bytes, num_handles)) =
2369 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2370 {
2371 let member_inline_size =
2372 <fidl::encoding::BoundedString<256> as fidl::encoding::TypeMarker>::inline_size(
2373 decoder.context,
2374 );
2375 if inlined != (member_inline_size <= 4) {
2376 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2377 }
2378 let inner_offset;
2379 let mut inner_depth = depth.clone();
2380 if inlined {
2381 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2382 inner_offset = next_offset;
2383 } else {
2384 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2385 inner_depth.increment()?;
2386 }
2387 let val_ref = self
2388 .serial_number
2389 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::BoundedString<256>, D));
2390 fidl::decode!(
2391 fidl::encoding::BoundedString<256>,
2392 D,
2393 val_ref,
2394 decoder,
2395 inner_offset,
2396 inner_depth
2397 )?;
2398 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2399 {
2400 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2401 }
2402 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2403 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2404 }
2405 }
2406
2407 next_offset += envelope_size;
2408
2409 while next_offset < end_offset {
2411 _next_ordinal_to_read += 1;
2412 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2413 next_offset += envelope_size;
2414 }
2415
2416 Ok(())
2417 }
2418 }
2419}