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 OperationalDatasetTlvs = Vec<u8>;
19
20pub const MAX_DATASET_TLV_LEN: u8 = 254;
21
22pub const OT_BORDER_AGENT_MAX_EPHEMERAL_KEY_LENGTH: u32 = 32;
25
26#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
27pub enum DetailedLoggingLevel {
28 LowpanLogUnspecified,
29 LowpanLogEmerg,
30 LowpanLogAlert,
31 LowpanLogCrit,
32 LowpanLogErr,
33 LowpanLogWarning,
34 LowpanLogNotice,
35 LowpanLogInfo,
36 LowpanLogDebug,
37 #[doc(hidden)]
38 __SourceBreaking {
39 unknown_ordinal: u32,
40 },
41}
42
43#[macro_export]
45macro_rules! DetailedLoggingLevelUnknown {
46 () => {
47 _
48 };
49}
50
51impl DetailedLoggingLevel {
52 #[inline]
53 pub fn from_primitive(prim: u32) -> Option<Self> {
54 match prim {
55 0 => Some(Self::LowpanLogUnspecified),
56 1 => Some(Self::LowpanLogEmerg),
57 2 => Some(Self::LowpanLogAlert),
58 3 => Some(Self::LowpanLogCrit),
59 4 => Some(Self::LowpanLogErr),
60 5 => Some(Self::LowpanLogWarning),
61 6 => Some(Self::LowpanLogNotice),
62 7 => Some(Self::LowpanLogInfo),
63 8 => Some(Self::LowpanLogDebug),
64 _ => None,
65 }
66 }
67
68 #[inline]
69 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
70 match prim {
71 0 => Self::LowpanLogUnspecified,
72 1 => Self::LowpanLogEmerg,
73 2 => Self::LowpanLogAlert,
74 3 => Self::LowpanLogCrit,
75 4 => Self::LowpanLogErr,
76 5 => Self::LowpanLogWarning,
77 6 => Self::LowpanLogNotice,
78 7 => Self::LowpanLogInfo,
79 8 => Self::LowpanLogDebug,
80 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
81 }
82 }
83
84 #[inline]
85 pub fn unknown() -> Self {
86 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
87 }
88
89 #[inline]
90 pub const fn into_primitive(self) -> u32 {
91 match self {
92 Self::LowpanLogUnspecified => 0,
93 Self::LowpanLogEmerg => 1,
94 Self::LowpanLogAlert => 2,
95 Self::LowpanLogCrit => 3,
96 Self::LowpanLogErr => 4,
97 Self::LowpanLogWarning => 5,
98 Self::LowpanLogNotice => 6,
99 Self::LowpanLogInfo => 7,
100 Self::LowpanLogDebug => 8,
101 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
102 }
103 }
104
105 #[inline]
106 pub fn is_unknown(&self) -> bool {
107 match self {
108 Self::__SourceBreaking { unknown_ordinal: _ } => true,
109 _ => false,
110 }
111 }
112}
113
114#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
117pub enum EphemeralKeyState {
118 Disabled,
120 Stopped,
122 Started,
124 Connected,
126 Accepted,
128 #[doc(hidden)]
129 __SourceBreaking { unknown_ordinal: u32 },
130}
131
132#[macro_export]
134macro_rules! EphemeralKeyStateUnknown {
135 () => {
136 _
137 };
138}
139
140impl EphemeralKeyState {
141 #[inline]
142 pub fn from_primitive(prim: u32) -> Option<Self> {
143 match prim {
144 1 => Some(Self::Disabled),
145 2 => Some(Self::Stopped),
146 3 => Some(Self::Started),
147 4 => Some(Self::Connected),
148 5 => Some(Self::Accepted),
149 _ => None,
150 }
151 }
152
153 #[inline]
154 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
155 match prim {
156 1 => Self::Disabled,
157 2 => Self::Stopped,
158 3 => Self::Started,
159 4 => Self::Connected,
160 5 => Self::Accepted,
161 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
162 }
163 }
164
165 #[inline]
166 pub fn unknown() -> Self {
167 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
168 }
169
170 #[inline]
171 pub const fn into_primitive(self) -> u32 {
172 match self {
173 Self::Disabled => 1,
174 Self::Stopped => 2,
175 Self::Started => 3,
176 Self::Connected => 4,
177 Self::Accepted => 5,
178 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
179 }
180 }
181
182 #[inline]
183 pub fn is_unknown(&self) -> bool {
184 match self {
185 Self::__SourceBreaking { unknown_ordinal: _ } => true,
186 _ => false,
187 }
188 }
189}
190
191#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
192pub struct DatasetAttachAllNodesToRequest {
193 pub dataset: Vec<u8>,
196}
197
198impl fidl::Persistable for DatasetAttachAllNodesToRequest {}
199
200#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
201#[repr(C)]
202pub struct DatasetAttachAllNodesToResponse {
203 pub delay_ms: i64,
211}
212
213impl fidl::Persistable for DatasetAttachAllNodesToResponse {}
214
215#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
216pub struct DatasetGetActiveTlvsResponse {
217 pub dataset: Option<Vec<u8>>,
218}
219
220impl fidl::Persistable for DatasetGetActiveTlvsResponse {}
221
222#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
223pub struct DatasetSetActiveTlvsRequest {
224 pub dataset: Vec<u8>,
225}
226
227impl fidl::Persistable for DatasetSetActiveTlvsRequest {}
228
229#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
230#[repr(C)]
231pub struct EpskcStartEphemeralKeyRequest {
232 pub lifetime: u32,
233}
234
235impl fidl::Persistable for EpskcStartEphemeralKeyRequest {}
236
237#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
238pub struct EpskcStopEphemeralKeyRequest {
239 pub retain_active_session: bool,
240}
241
242impl fidl::Persistable for EpskcStopEphemeralKeyRequest {}
243
244#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
245pub struct EpskcStartEphemeralKeyResponse {
246 pub key: Vec<u8>,
247}
248
249impl fidl::Persistable for EpskcStartEphemeralKeyResponse {}
250
251#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
252pub struct EpskcWatchEphemeralKeyStateResponse {
253 pub state: EphemeralKeyState,
254}
255
256impl fidl::Persistable for EpskcWatchEphemeralKeyStateResponse {}
257
258#[derive(Clone, Debug, PartialEq)]
259pub struct FeatureGetFeatureConfigResponse {
260 pub config: FeatureConfig,
261}
262
263impl fidl::Persistable for FeatureGetFeatureConfigResponse {}
264
265#[derive(Clone, Debug, PartialEq)]
266pub struct FeatureUpdateFeatureConfigRequest {
267 pub config: FeatureConfig,
268}
269
270impl fidl::Persistable for FeatureUpdateFeatureConfigRequest {}
271
272#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
273pub struct MeshcopUpdateTxtEntriesRequest {
274 pub txt_entries: Vec<TxtEntries>,
275}
276
277impl fidl::Persistable for MeshcopUpdateTxtEntriesRequest {}
278
279#[derive(Clone, Debug, PartialEq)]
280pub struct ThreadCapabilitiesGetCapabilitiesResponse {
281 pub capabilities: Capabilities,
282}
283
284impl fidl::Persistable for ThreadCapabilitiesGetCapabilitiesResponse {}
285
286#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
287pub struct TxtEntries {
288 pub key: String,
293 pub value: Vec<u8>,
299}
300
301impl fidl::Persistable for TxtEntries {}
302
303#[derive(Clone, Debug, Default, PartialEq)]
312pub struct Capabilities {
313 pub nat64: Option<bool>,
317 pub dhcpv6_pd: Option<bool>,
320 pub epskc: Option<bool>,
323 #[doc(hidden)]
324 pub __source_breaking: fidl::marker::SourceBreaking,
325}
326
327impl fidl::Persistable for Capabilities {}
328
329#[derive(Clone, Debug, Default, PartialEq)]
334pub struct FeatureConfig {
335 pub trel_enabled: Option<bool>,
337 pub nat64_enabled: Option<bool>,
339 pub srp_replication_enabled: Option<bool>,
341 pub detailed_logging_enabled: Option<bool>,
345 pub detailed_logging_level: Option<DetailedLoggingLevel>,
348 pub dhcpv6_pd_enabled: Option<bool>,
350 pub dns_upstream_query_enabled: Option<bool>,
352 pub link_metrics_manager_enabled: Option<bool>,
354 pub epskc_enabled: Option<bool>,
356 #[doc(hidden)]
357 pub __source_breaking: fidl::marker::SourceBreaking,
358}
359
360impl fidl::Persistable for FeatureConfig {}
361
362pub mod capabilities_connector_ordinals {
363 pub const CONNECT: u64 = 0x1dadd551ecacd85;
364}
365
366pub mod dataset_ordinals {
367 pub const GET_ACTIVE_TLVS: u64 = 0x3004d50d9fb69b92;
368 pub const SET_ACTIVE_TLVS: u64 = 0x5a8dc1d4e3b578e7;
369 pub const ATTACH_ALL_NODES_TO: u64 = 0x6057e8b429c4aefe;
370}
371
372pub mod dataset_connector_ordinals {
373 pub const CONNECT: u64 = 0x24dff5d2c0cee02b;
374}
375
376pub mod epskc_ordinals {
377 pub const START_EPHEMERAL_KEY: u64 = 0x215e7ca3dab0a8b7;
378 pub const STOP_EPHEMERAL_KEY: u64 = 0x33a89ab1cfd88906;
379 pub const WATCH_EPHEMERAL_KEY_STATE: u64 = 0x7b1d12c0c02988c3;
380}
381
382pub mod epskc_connector_ordinals {
383 pub const CONNECT: u64 = 0x1df4842606b2f03c;
384}
385
386pub mod feature_ordinals {
387 pub const UPDATE_FEATURE_CONFIG: u64 = 0x2d24a706e8730410;
388 pub const GET_FEATURE_CONFIG: u64 = 0x2ab1896aea843611;
389}
390
391pub mod feature_connector_ordinals {
392 pub const CONNECT: u64 = 0x470f006d630987a5;
393}
394
395pub mod meshcop_ordinals {
396 pub const UPDATE_TXT_ENTRIES: u64 = 0x358d4d9593140bed;
397}
398
399pub mod meshcop_connector_ordinals {
400 pub const CONNECT: u64 = 0x53f87536b40ad6fb;
401}
402
403pub mod thread_capabilities_ordinals {
404 pub const GET_CAPABILITIES: u64 = 0x5a0823ac35f2d425;
405}
406
407mod internal {
408 use super::*;
409 unsafe impl fidl::encoding::TypeMarker for DetailedLoggingLevel {
410 type Owned = Self;
411
412 #[inline(always)]
413 fn inline_align(_context: fidl::encoding::Context) -> usize {
414 std::mem::align_of::<u32>()
415 }
416
417 #[inline(always)]
418 fn inline_size(_context: fidl::encoding::Context) -> usize {
419 std::mem::size_of::<u32>()
420 }
421
422 #[inline(always)]
423 fn encode_is_copy() -> bool {
424 false
425 }
426
427 #[inline(always)]
428 fn decode_is_copy() -> bool {
429 false
430 }
431 }
432
433 impl fidl::encoding::ValueTypeMarker for DetailedLoggingLevel {
434 type Borrowed<'a> = Self;
435 #[inline(always)]
436 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
437 *value
438 }
439 }
440
441 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
442 for DetailedLoggingLevel
443 {
444 #[inline]
445 unsafe fn encode(
446 self,
447 encoder: &mut fidl::encoding::Encoder<'_, D>,
448 offset: usize,
449 _depth: fidl::encoding::Depth,
450 ) -> fidl::Result<()> {
451 encoder.debug_check_bounds::<Self>(offset);
452 encoder.write_num(self.into_primitive(), offset);
453 Ok(())
454 }
455 }
456
457 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DetailedLoggingLevel {
458 #[inline(always)]
459 fn new_empty() -> Self {
460 Self::unknown()
461 }
462
463 #[inline]
464 unsafe fn decode(
465 &mut self,
466 decoder: &mut fidl::encoding::Decoder<'_, D>,
467 offset: usize,
468 _depth: fidl::encoding::Depth,
469 ) -> fidl::Result<()> {
470 decoder.debug_check_bounds::<Self>(offset);
471 let prim = decoder.read_num::<u32>(offset);
472
473 *self = Self::from_primitive_allow_unknown(prim);
474 Ok(())
475 }
476 }
477 unsafe impl fidl::encoding::TypeMarker for EphemeralKeyState {
478 type Owned = Self;
479
480 #[inline(always)]
481 fn inline_align(_context: fidl::encoding::Context) -> usize {
482 std::mem::align_of::<u32>()
483 }
484
485 #[inline(always)]
486 fn inline_size(_context: fidl::encoding::Context) -> usize {
487 std::mem::size_of::<u32>()
488 }
489
490 #[inline(always)]
491 fn encode_is_copy() -> bool {
492 false
493 }
494
495 #[inline(always)]
496 fn decode_is_copy() -> bool {
497 false
498 }
499 }
500
501 impl fidl::encoding::ValueTypeMarker for EphemeralKeyState {
502 type Borrowed<'a> = Self;
503 #[inline(always)]
504 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
505 *value
506 }
507 }
508
509 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
510 for EphemeralKeyState
511 {
512 #[inline]
513 unsafe fn encode(
514 self,
515 encoder: &mut fidl::encoding::Encoder<'_, D>,
516 offset: usize,
517 _depth: fidl::encoding::Depth,
518 ) -> fidl::Result<()> {
519 encoder.debug_check_bounds::<Self>(offset);
520 encoder.write_num(self.into_primitive(), offset);
521 Ok(())
522 }
523 }
524
525 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for EphemeralKeyState {
526 #[inline(always)]
527 fn new_empty() -> Self {
528 Self::unknown()
529 }
530
531 #[inline]
532 unsafe fn decode(
533 &mut self,
534 decoder: &mut fidl::encoding::Decoder<'_, D>,
535 offset: usize,
536 _depth: fidl::encoding::Depth,
537 ) -> fidl::Result<()> {
538 decoder.debug_check_bounds::<Self>(offset);
539 let prim = decoder.read_num::<u32>(offset);
540
541 *self = Self::from_primitive_allow_unknown(prim);
542 Ok(())
543 }
544 }
545
546 impl fidl::encoding::ValueTypeMarker for DatasetAttachAllNodesToRequest {
547 type Borrowed<'a> = &'a Self;
548 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
549 value
550 }
551 }
552
553 unsafe impl fidl::encoding::TypeMarker for DatasetAttachAllNodesToRequest {
554 type Owned = Self;
555
556 #[inline(always)]
557 fn inline_align(_context: fidl::encoding::Context) -> usize {
558 8
559 }
560
561 #[inline(always)]
562 fn inline_size(_context: fidl::encoding::Context) -> usize {
563 16
564 }
565 }
566
567 unsafe impl<D: fidl::encoding::ResourceDialect>
568 fidl::encoding::Encode<DatasetAttachAllNodesToRequest, D>
569 for &DatasetAttachAllNodesToRequest
570 {
571 #[inline]
572 unsafe fn encode(
573 self,
574 encoder: &mut fidl::encoding::Encoder<'_, D>,
575 offset: usize,
576 _depth: fidl::encoding::Depth,
577 ) -> fidl::Result<()> {
578 encoder.debug_check_bounds::<DatasetAttachAllNodesToRequest>(offset);
579 fidl::encoding::Encode::<DatasetAttachAllNodesToRequest, D>::encode(
581 (<fidl::encoding::Vector<u8, 254> as fidl::encoding::ValueTypeMarker>::borrow(
582 &self.dataset,
583 ),),
584 encoder,
585 offset,
586 _depth,
587 )
588 }
589 }
590 unsafe impl<
591 D: fidl::encoding::ResourceDialect,
592 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 254>, D>,
593 > fidl::encoding::Encode<DatasetAttachAllNodesToRequest, D> for (T0,)
594 {
595 #[inline]
596 unsafe fn encode(
597 self,
598 encoder: &mut fidl::encoding::Encoder<'_, D>,
599 offset: usize,
600 depth: fidl::encoding::Depth,
601 ) -> fidl::Result<()> {
602 encoder.debug_check_bounds::<DatasetAttachAllNodesToRequest>(offset);
603 self.0.encode(encoder, offset + 0, depth)?;
607 Ok(())
608 }
609 }
610
611 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
612 for DatasetAttachAllNodesToRequest
613 {
614 #[inline(always)]
615 fn new_empty() -> Self {
616 Self { dataset: fidl::new_empty!(fidl::encoding::Vector<u8, 254>, D) }
617 }
618
619 #[inline]
620 unsafe fn decode(
621 &mut self,
622 decoder: &mut fidl::encoding::Decoder<'_, D>,
623 offset: usize,
624 _depth: fidl::encoding::Depth,
625 ) -> fidl::Result<()> {
626 decoder.debug_check_bounds::<Self>(offset);
627 fidl::decode!(fidl::encoding::Vector<u8, 254>, D, &mut self.dataset, decoder, offset + 0, _depth)?;
629 Ok(())
630 }
631 }
632
633 impl fidl::encoding::ValueTypeMarker for DatasetAttachAllNodesToResponse {
634 type Borrowed<'a> = &'a Self;
635 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
636 value
637 }
638 }
639
640 unsafe impl fidl::encoding::TypeMarker for DatasetAttachAllNodesToResponse {
641 type Owned = Self;
642
643 #[inline(always)]
644 fn inline_align(_context: fidl::encoding::Context) -> usize {
645 8
646 }
647
648 #[inline(always)]
649 fn inline_size(_context: fidl::encoding::Context) -> usize {
650 8
651 }
652 #[inline(always)]
653 fn encode_is_copy() -> bool {
654 true
655 }
656
657 #[inline(always)]
658 fn decode_is_copy() -> bool {
659 true
660 }
661 }
662
663 unsafe impl<D: fidl::encoding::ResourceDialect>
664 fidl::encoding::Encode<DatasetAttachAllNodesToResponse, D>
665 for &DatasetAttachAllNodesToResponse
666 {
667 #[inline]
668 unsafe fn encode(
669 self,
670 encoder: &mut fidl::encoding::Encoder<'_, D>,
671 offset: usize,
672 _depth: fidl::encoding::Depth,
673 ) -> fidl::Result<()> {
674 encoder.debug_check_bounds::<DatasetAttachAllNodesToResponse>(offset);
675 unsafe {
676 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
678 (buf_ptr as *mut DatasetAttachAllNodesToResponse)
679 .write_unaligned((self as *const DatasetAttachAllNodesToResponse).read());
680 }
683 Ok(())
684 }
685 }
686 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
687 fidl::encoding::Encode<DatasetAttachAllNodesToResponse, D> for (T0,)
688 {
689 #[inline]
690 unsafe fn encode(
691 self,
692 encoder: &mut fidl::encoding::Encoder<'_, D>,
693 offset: usize,
694 depth: fidl::encoding::Depth,
695 ) -> fidl::Result<()> {
696 encoder.debug_check_bounds::<DatasetAttachAllNodesToResponse>(offset);
697 self.0.encode(encoder, offset + 0, depth)?;
701 Ok(())
702 }
703 }
704
705 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
706 for DatasetAttachAllNodesToResponse
707 {
708 #[inline(always)]
709 fn new_empty() -> Self {
710 Self { delay_ms: fidl::new_empty!(i64, D) }
711 }
712
713 #[inline]
714 unsafe fn decode(
715 &mut self,
716 decoder: &mut fidl::encoding::Decoder<'_, D>,
717 offset: usize,
718 _depth: fidl::encoding::Depth,
719 ) -> fidl::Result<()> {
720 decoder.debug_check_bounds::<Self>(offset);
721 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
722 unsafe {
725 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
726 }
727 Ok(())
728 }
729 }
730
731 impl fidl::encoding::ValueTypeMarker for DatasetGetActiveTlvsResponse {
732 type Borrowed<'a> = &'a Self;
733 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
734 value
735 }
736 }
737
738 unsafe impl fidl::encoding::TypeMarker for DatasetGetActiveTlvsResponse {
739 type Owned = Self;
740
741 #[inline(always)]
742 fn inline_align(_context: fidl::encoding::Context) -> usize {
743 8
744 }
745
746 #[inline(always)]
747 fn inline_size(_context: fidl::encoding::Context) -> usize {
748 16
749 }
750 }
751
752 unsafe impl<D: fidl::encoding::ResourceDialect>
753 fidl::encoding::Encode<DatasetGetActiveTlvsResponse, D> for &DatasetGetActiveTlvsResponse
754 {
755 #[inline]
756 unsafe fn encode(
757 self,
758 encoder: &mut fidl::encoding::Encoder<'_, D>,
759 offset: usize,
760 _depth: fidl::encoding::Depth,
761 ) -> fidl::Result<()> {
762 encoder.debug_check_bounds::<DatasetGetActiveTlvsResponse>(offset);
763 fidl::encoding::Encode::<DatasetGetActiveTlvsResponse, D>::encode(
765 (
766 <fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>> as fidl::encoding::ValueTypeMarker>::borrow(&self.dataset),
767 ),
768 encoder, offset, _depth
769 )
770 }
771 }
772 unsafe impl<
773 D: fidl::encoding::ResourceDialect,
774 T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>>, D>,
775 > fidl::encoding::Encode<DatasetGetActiveTlvsResponse, D> for (T0,)
776 {
777 #[inline]
778 unsafe fn encode(
779 self,
780 encoder: &mut fidl::encoding::Encoder<'_, D>,
781 offset: usize,
782 depth: fidl::encoding::Depth,
783 ) -> fidl::Result<()> {
784 encoder.debug_check_bounds::<DatasetGetActiveTlvsResponse>(offset);
785 self.0.encode(encoder, offset + 0, depth)?;
789 Ok(())
790 }
791 }
792
793 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
794 for DatasetGetActiveTlvsResponse
795 {
796 #[inline(always)]
797 fn new_empty() -> Self {
798 Self {
799 dataset: fidl::new_empty!(
800 fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>>,
801 D
802 ),
803 }
804 }
805
806 #[inline]
807 unsafe fn decode(
808 &mut self,
809 decoder: &mut fidl::encoding::Decoder<'_, D>,
810 offset: usize,
811 _depth: fidl::encoding::Depth,
812 ) -> fidl::Result<()> {
813 decoder.debug_check_bounds::<Self>(offset);
814 fidl::decode!(
816 fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>>,
817 D,
818 &mut self.dataset,
819 decoder,
820 offset + 0,
821 _depth
822 )?;
823 Ok(())
824 }
825 }
826
827 impl fidl::encoding::ValueTypeMarker for DatasetSetActiveTlvsRequest {
828 type Borrowed<'a> = &'a Self;
829 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
830 value
831 }
832 }
833
834 unsafe impl fidl::encoding::TypeMarker for DatasetSetActiveTlvsRequest {
835 type Owned = Self;
836
837 #[inline(always)]
838 fn inline_align(_context: fidl::encoding::Context) -> usize {
839 8
840 }
841
842 #[inline(always)]
843 fn inline_size(_context: fidl::encoding::Context) -> usize {
844 16
845 }
846 }
847
848 unsafe impl<D: fidl::encoding::ResourceDialect>
849 fidl::encoding::Encode<DatasetSetActiveTlvsRequest, D> for &DatasetSetActiveTlvsRequest
850 {
851 #[inline]
852 unsafe fn encode(
853 self,
854 encoder: &mut fidl::encoding::Encoder<'_, D>,
855 offset: usize,
856 _depth: fidl::encoding::Depth,
857 ) -> fidl::Result<()> {
858 encoder.debug_check_bounds::<DatasetSetActiveTlvsRequest>(offset);
859 fidl::encoding::Encode::<DatasetSetActiveTlvsRequest, D>::encode(
861 (<fidl::encoding::Vector<u8, 254> as fidl::encoding::ValueTypeMarker>::borrow(
862 &self.dataset,
863 ),),
864 encoder,
865 offset,
866 _depth,
867 )
868 }
869 }
870 unsafe impl<
871 D: fidl::encoding::ResourceDialect,
872 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 254>, D>,
873 > fidl::encoding::Encode<DatasetSetActiveTlvsRequest, D> for (T0,)
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::<DatasetSetActiveTlvsRequest>(offset);
883 self.0.encode(encoder, offset + 0, depth)?;
887 Ok(())
888 }
889 }
890
891 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
892 for DatasetSetActiveTlvsRequest
893 {
894 #[inline(always)]
895 fn new_empty() -> Self {
896 Self { dataset: fidl::new_empty!(fidl::encoding::Vector<u8, 254>, D) }
897 }
898
899 #[inline]
900 unsafe fn decode(
901 &mut self,
902 decoder: &mut fidl::encoding::Decoder<'_, D>,
903 offset: usize,
904 _depth: fidl::encoding::Depth,
905 ) -> fidl::Result<()> {
906 decoder.debug_check_bounds::<Self>(offset);
907 fidl::decode!(fidl::encoding::Vector<u8, 254>, D, &mut self.dataset, decoder, offset + 0, _depth)?;
909 Ok(())
910 }
911 }
912
913 impl fidl::encoding::ValueTypeMarker for EpskcStartEphemeralKeyRequest {
914 type Borrowed<'a> = &'a Self;
915 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
916 value
917 }
918 }
919
920 unsafe impl fidl::encoding::TypeMarker for EpskcStartEphemeralKeyRequest {
921 type Owned = Self;
922
923 #[inline(always)]
924 fn inline_align(_context: fidl::encoding::Context) -> usize {
925 4
926 }
927
928 #[inline(always)]
929 fn inline_size(_context: fidl::encoding::Context) -> usize {
930 4
931 }
932 #[inline(always)]
933 fn encode_is_copy() -> bool {
934 true
935 }
936
937 #[inline(always)]
938 fn decode_is_copy() -> bool {
939 true
940 }
941 }
942
943 unsafe impl<D: fidl::encoding::ResourceDialect>
944 fidl::encoding::Encode<EpskcStartEphemeralKeyRequest, D>
945 for &EpskcStartEphemeralKeyRequest
946 {
947 #[inline]
948 unsafe fn encode(
949 self,
950 encoder: &mut fidl::encoding::Encoder<'_, D>,
951 offset: usize,
952 _depth: fidl::encoding::Depth,
953 ) -> fidl::Result<()> {
954 encoder.debug_check_bounds::<EpskcStartEphemeralKeyRequest>(offset);
955 unsafe {
956 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
958 (buf_ptr as *mut EpskcStartEphemeralKeyRequest)
959 .write_unaligned((self as *const EpskcStartEphemeralKeyRequest).read());
960 }
963 Ok(())
964 }
965 }
966 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<u32, D>>
967 fidl::encoding::Encode<EpskcStartEphemeralKeyRequest, D> for (T0,)
968 {
969 #[inline]
970 unsafe fn encode(
971 self,
972 encoder: &mut fidl::encoding::Encoder<'_, D>,
973 offset: usize,
974 depth: fidl::encoding::Depth,
975 ) -> fidl::Result<()> {
976 encoder.debug_check_bounds::<EpskcStartEphemeralKeyRequest>(offset);
977 self.0.encode(encoder, offset + 0, depth)?;
981 Ok(())
982 }
983 }
984
985 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
986 for EpskcStartEphemeralKeyRequest
987 {
988 #[inline(always)]
989 fn new_empty() -> Self {
990 Self { lifetime: fidl::new_empty!(u32, 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 unsafe {
1005 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
1006 }
1007 Ok(())
1008 }
1009 }
1010
1011 impl fidl::encoding::ValueTypeMarker for EpskcStopEphemeralKeyRequest {
1012 type Borrowed<'a> = &'a Self;
1013 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1014 value
1015 }
1016 }
1017
1018 unsafe impl fidl::encoding::TypeMarker for EpskcStopEphemeralKeyRequest {
1019 type Owned = Self;
1020
1021 #[inline(always)]
1022 fn inline_align(_context: fidl::encoding::Context) -> usize {
1023 1
1024 }
1025
1026 #[inline(always)]
1027 fn inline_size(_context: fidl::encoding::Context) -> usize {
1028 1
1029 }
1030 }
1031
1032 unsafe impl<D: fidl::encoding::ResourceDialect>
1033 fidl::encoding::Encode<EpskcStopEphemeralKeyRequest, D> for &EpskcStopEphemeralKeyRequest
1034 {
1035 #[inline]
1036 unsafe fn encode(
1037 self,
1038 encoder: &mut fidl::encoding::Encoder<'_, D>,
1039 offset: usize,
1040 _depth: fidl::encoding::Depth,
1041 ) -> fidl::Result<()> {
1042 encoder.debug_check_bounds::<EpskcStopEphemeralKeyRequest>(offset);
1043 fidl::encoding::Encode::<EpskcStopEphemeralKeyRequest, D>::encode(
1045 (<bool as fidl::encoding::ValueTypeMarker>::borrow(&self.retain_active_session),),
1046 encoder,
1047 offset,
1048 _depth,
1049 )
1050 }
1051 }
1052 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<bool, D>>
1053 fidl::encoding::Encode<EpskcStopEphemeralKeyRequest, D> for (T0,)
1054 {
1055 #[inline]
1056 unsafe fn encode(
1057 self,
1058 encoder: &mut fidl::encoding::Encoder<'_, D>,
1059 offset: usize,
1060 depth: fidl::encoding::Depth,
1061 ) -> fidl::Result<()> {
1062 encoder.debug_check_bounds::<EpskcStopEphemeralKeyRequest>(offset);
1063 self.0.encode(encoder, offset + 0, depth)?;
1067 Ok(())
1068 }
1069 }
1070
1071 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1072 for EpskcStopEphemeralKeyRequest
1073 {
1074 #[inline(always)]
1075 fn new_empty() -> Self {
1076 Self { retain_active_session: fidl::new_empty!(bool, D) }
1077 }
1078
1079 #[inline]
1080 unsafe fn decode(
1081 &mut self,
1082 decoder: &mut fidl::encoding::Decoder<'_, D>,
1083 offset: usize,
1084 _depth: fidl::encoding::Depth,
1085 ) -> fidl::Result<()> {
1086 decoder.debug_check_bounds::<Self>(offset);
1087 fidl::decode!(bool, D, &mut self.retain_active_session, decoder, offset + 0, _depth)?;
1089 Ok(())
1090 }
1091 }
1092
1093 impl fidl::encoding::ValueTypeMarker for EpskcStartEphemeralKeyResponse {
1094 type Borrowed<'a> = &'a Self;
1095 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1096 value
1097 }
1098 }
1099
1100 unsafe impl fidl::encoding::TypeMarker for EpskcStartEphemeralKeyResponse {
1101 type Owned = Self;
1102
1103 #[inline(always)]
1104 fn inline_align(_context: fidl::encoding::Context) -> usize {
1105 8
1106 }
1107
1108 #[inline(always)]
1109 fn inline_size(_context: fidl::encoding::Context) -> usize {
1110 16
1111 }
1112 }
1113
1114 unsafe impl<D: fidl::encoding::ResourceDialect>
1115 fidl::encoding::Encode<EpskcStartEphemeralKeyResponse, D>
1116 for &EpskcStartEphemeralKeyResponse
1117 {
1118 #[inline]
1119 unsafe fn encode(
1120 self,
1121 encoder: &mut fidl::encoding::Encoder<'_, D>,
1122 offset: usize,
1123 _depth: fidl::encoding::Depth,
1124 ) -> fidl::Result<()> {
1125 encoder.debug_check_bounds::<EpskcStartEphemeralKeyResponse>(offset);
1126 fidl::encoding::Encode::<EpskcStartEphemeralKeyResponse, D>::encode(
1128 (<fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow(
1129 &self.key,
1130 ),),
1131 encoder,
1132 offset,
1133 _depth,
1134 )
1135 }
1136 }
1137 unsafe impl<
1138 D: fidl::encoding::ResourceDialect,
1139 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 32>, D>,
1140 > fidl::encoding::Encode<EpskcStartEphemeralKeyResponse, D> for (T0,)
1141 {
1142 #[inline]
1143 unsafe fn encode(
1144 self,
1145 encoder: &mut fidl::encoding::Encoder<'_, D>,
1146 offset: usize,
1147 depth: fidl::encoding::Depth,
1148 ) -> fidl::Result<()> {
1149 encoder.debug_check_bounds::<EpskcStartEphemeralKeyResponse>(offset);
1150 self.0.encode(encoder, offset + 0, depth)?;
1154 Ok(())
1155 }
1156 }
1157
1158 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1159 for EpskcStartEphemeralKeyResponse
1160 {
1161 #[inline(always)]
1162 fn new_empty() -> Self {
1163 Self { key: fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D) }
1164 }
1165
1166 #[inline]
1167 unsafe fn decode(
1168 &mut self,
1169 decoder: &mut fidl::encoding::Decoder<'_, D>,
1170 offset: usize,
1171 _depth: fidl::encoding::Depth,
1172 ) -> fidl::Result<()> {
1173 decoder.debug_check_bounds::<Self>(offset);
1174 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, &mut self.key, decoder, offset + 0, _depth)?;
1176 Ok(())
1177 }
1178 }
1179
1180 impl fidl::encoding::ValueTypeMarker for EpskcWatchEphemeralKeyStateResponse {
1181 type Borrowed<'a> = &'a Self;
1182 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1183 value
1184 }
1185 }
1186
1187 unsafe impl fidl::encoding::TypeMarker for EpskcWatchEphemeralKeyStateResponse {
1188 type Owned = Self;
1189
1190 #[inline(always)]
1191 fn inline_align(_context: fidl::encoding::Context) -> usize {
1192 4
1193 }
1194
1195 #[inline(always)]
1196 fn inline_size(_context: fidl::encoding::Context) -> usize {
1197 4
1198 }
1199 }
1200
1201 unsafe impl<D: fidl::encoding::ResourceDialect>
1202 fidl::encoding::Encode<EpskcWatchEphemeralKeyStateResponse, D>
1203 for &EpskcWatchEphemeralKeyStateResponse
1204 {
1205 #[inline]
1206 unsafe fn encode(
1207 self,
1208 encoder: &mut fidl::encoding::Encoder<'_, D>,
1209 offset: usize,
1210 _depth: fidl::encoding::Depth,
1211 ) -> fidl::Result<()> {
1212 encoder.debug_check_bounds::<EpskcWatchEphemeralKeyStateResponse>(offset);
1213 fidl::encoding::Encode::<EpskcWatchEphemeralKeyStateResponse, D>::encode(
1215 (<EphemeralKeyState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),),
1216 encoder,
1217 offset,
1218 _depth,
1219 )
1220 }
1221 }
1222 unsafe impl<
1223 D: fidl::encoding::ResourceDialect,
1224 T0: fidl::encoding::Encode<EphemeralKeyState, D>,
1225 > fidl::encoding::Encode<EpskcWatchEphemeralKeyStateResponse, D> for (T0,)
1226 {
1227 #[inline]
1228 unsafe fn encode(
1229 self,
1230 encoder: &mut fidl::encoding::Encoder<'_, D>,
1231 offset: usize,
1232 depth: fidl::encoding::Depth,
1233 ) -> fidl::Result<()> {
1234 encoder.debug_check_bounds::<EpskcWatchEphemeralKeyStateResponse>(offset);
1235 self.0.encode(encoder, offset + 0, depth)?;
1239 Ok(())
1240 }
1241 }
1242
1243 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1244 for EpskcWatchEphemeralKeyStateResponse
1245 {
1246 #[inline(always)]
1247 fn new_empty() -> Self {
1248 Self { state: fidl::new_empty!(EphemeralKeyState, D) }
1249 }
1250
1251 #[inline]
1252 unsafe fn decode(
1253 &mut self,
1254 decoder: &mut fidl::encoding::Decoder<'_, D>,
1255 offset: usize,
1256 _depth: fidl::encoding::Depth,
1257 ) -> fidl::Result<()> {
1258 decoder.debug_check_bounds::<Self>(offset);
1259 fidl::decode!(EphemeralKeyState, D, &mut self.state, decoder, offset + 0, _depth)?;
1261 Ok(())
1262 }
1263 }
1264
1265 impl fidl::encoding::ValueTypeMarker for FeatureGetFeatureConfigResponse {
1266 type Borrowed<'a> = &'a Self;
1267 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1268 value
1269 }
1270 }
1271
1272 unsafe impl fidl::encoding::TypeMarker for FeatureGetFeatureConfigResponse {
1273 type Owned = Self;
1274
1275 #[inline(always)]
1276 fn inline_align(_context: fidl::encoding::Context) -> usize {
1277 8
1278 }
1279
1280 #[inline(always)]
1281 fn inline_size(_context: fidl::encoding::Context) -> usize {
1282 16
1283 }
1284 }
1285
1286 unsafe impl<D: fidl::encoding::ResourceDialect>
1287 fidl::encoding::Encode<FeatureGetFeatureConfigResponse, D>
1288 for &FeatureGetFeatureConfigResponse
1289 {
1290 #[inline]
1291 unsafe fn encode(
1292 self,
1293 encoder: &mut fidl::encoding::Encoder<'_, D>,
1294 offset: usize,
1295 _depth: fidl::encoding::Depth,
1296 ) -> fidl::Result<()> {
1297 encoder.debug_check_bounds::<FeatureGetFeatureConfigResponse>(offset);
1298 fidl::encoding::Encode::<FeatureGetFeatureConfigResponse, D>::encode(
1300 (<FeatureConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
1301 encoder,
1302 offset,
1303 _depth,
1304 )
1305 }
1306 }
1307 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<FeatureConfig, D>>
1308 fidl::encoding::Encode<FeatureGetFeatureConfigResponse, D> for (T0,)
1309 {
1310 #[inline]
1311 unsafe fn encode(
1312 self,
1313 encoder: &mut fidl::encoding::Encoder<'_, D>,
1314 offset: usize,
1315 depth: fidl::encoding::Depth,
1316 ) -> fidl::Result<()> {
1317 encoder.debug_check_bounds::<FeatureGetFeatureConfigResponse>(offset);
1318 self.0.encode(encoder, offset + 0, depth)?;
1322 Ok(())
1323 }
1324 }
1325
1326 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1327 for FeatureGetFeatureConfigResponse
1328 {
1329 #[inline(always)]
1330 fn new_empty() -> Self {
1331 Self { config: fidl::new_empty!(FeatureConfig, D) }
1332 }
1333
1334 #[inline]
1335 unsafe fn decode(
1336 &mut self,
1337 decoder: &mut fidl::encoding::Decoder<'_, D>,
1338 offset: usize,
1339 _depth: fidl::encoding::Depth,
1340 ) -> fidl::Result<()> {
1341 decoder.debug_check_bounds::<Self>(offset);
1342 fidl::decode!(FeatureConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
1344 Ok(())
1345 }
1346 }
1347
1348 impl fidl::encoding::ValueTypeMarker for FeatureUpdateFeatureConfigRequest {
1349 type Borrowed<'a> = &'a Self;
1350 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1351 value
1352 }
1353 }
1354
1355 unsafe impl fidl::encoding::TypeMarker for FeatureUpdateFeatureConfigRequest {
1356 type Owned = Self;
1357
1358 #[inline(always)]
1359 fn inline_align(_context: fidl::encoding::Context) -> usize {
1360 8
1361 }
1362
1363 #[inline(always)]
1364 fn inline_size(_context: fidl::encoding::Context) -> usize {
1365 16
1366 }
1367 }
1368
1369 unsafe impl<D: fidl::encoding::ResourceDialect>
1370 fidl::encoding::Encode<FeatureUpdateFeatureConfigRequest, D>
1371 for &FeatureUpdateFeatureConfigRequest
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::<FeatureUpdateFeatureConfigRequest>(offset);
1381 fidl::encoding::Encode::<FeatureUpdateFeatureConfigRequest, D>::encode(
1383 (<FeatureConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
1384 encoder,
1385 offset,
1386 _depth,
1387 )
1388 }
1389 }
1390 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<FeatureConfig, D>>
1391 fidl::encoding::Encode<FeatureUpdateFeatureConfigRequest, D> for (T0,)
1392 {
1393 #[inline]
1394 unsafe fn encode(
1395 self,
1396 encoder: &mut fidl::encoding::Encoder<'_, D>,
1397 offset: usize,
1398 depth: fidl::encoding::Depth,
1399 ) -> fidl::Result<()> {
1400 encoder.debug_check_bounds::<FeatureUpdateFeatureConfigRequest>(offset);
1401 self.0.encode(encoder, offset + 0, depth)?;
1405 Ok(())
1406 }
1407 }
1408
1409 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1410 for FeatureUpdateFeatureConfigRequest
1411 {
1412 #[inline(always)]
1413 fn new_empty() -> Self {
1414 Self { config: fidl::new_empty!(FeatureConfig, D) }
1415 }
1416
1417 #[inline]
1418 unsafe fn decode(
1419 &mut self,
1420 decoder: &mut fidl::encoding::Decoder<'_, D>,
1421 offset: usize,
1422 _depth: fidl::encoding::Depth,
1423 ) -> fidl::Result<()> {
1424 decoder.debug_check_bounds::<Self>(offset);
1425 fidl::decode!(FeatureConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
1427 Ok(())
1428 }
1429 }
1430
1431 impl fidl::encoding::ValueTypeMarker for MeshcopUpdateTxtEntriesRequest {
1432 type Borrowed<'a> = &'a Self;
1433 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1434 value
1435 }
1436 }
1437
1438 unsafe impl fidl::encoding::TypeMarker for MeshcopUpdateTxtEntriesRequest {
1439 type Owned = Self;
1440
1441 #[inline(always)]
1442 fn inline_align(_context: fidl::encoding::Context) -> usize {
1443 8
1444 }
1445
1446 #[inline(always)]
1447 fn inline_size(_context: fidl::encoding::Context) -> usize {
1448 16
1449 }
1450 }
1451
1452 unsafe impl<D: fidl::encoding::ResourceDialect>
1453 fidl::encoding::Encode<MeshcopUpdateTxtEntriesRequest, D>
1454 for &MeshcopUpdateTxtEntriesRequest
1455 {
1456 #[inline]
1457 unsafe fn encode(
1458 self,
1459 encoder: &mut fidl::encoding::Encoder<'_, D>,
1460 offset: usize,
1461 _depth: fidl::encoding::Depth,
1462 ) -> fidl::Result<()> {
1463 encoder.debug_check_bounds::<MeshcopUpdateTxtEntriesRequest>(offset);
1464 fidl::encoding::Encode::<MeshcopUpdateTxtEntriesRequest, D>::encode(
1466 (
1467 <fidl::encoding::Vector<TxtEntries, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.txt_entries),
1468 ),
1469 encoder, offset, _depth
1470 )
1471 }
1472 }
1473 unsafe impl<
1474 D: fidl::encoding::ResourceDialect,
1475 T0: fidl::encoding::Encode<fidl::encoding::Vector<TxtEntries, 32>, D>,
1476 > fidl::encoding::Encode<MeshcopUpdateTxtEntriesRequest, D> for (T0,)
1477 {
1478 #[inline]
1479 unsafe fn encode(
1480 self,
1481 encoder: &mut fidl::encoding::Encoder<'_, D>,
1482 offset: usize,
1483 depth: fidl::encoding::Depth,
1484 ) -> fidl::Result<()> {
1485 encoder.debug_check_bounds::<MeshcopUpdateTxtEntriesRequest>(offset);
1486 self.0.encode(encoder, offset + 0, depth)?;
1490 Ok(())
1491 }
1492 }
1493
1494 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1495 for MeshcopUpdateTxtEntriesRequest
1496 {
1497 #[inline(always)]
1498 fn new_empty() -> Self {
1499 Self { txt_entries: fidl::new_empty!(fidl::encoding::Vector<TxtEntries, 32>, D) }
1500 }
1501
1502 #[inline]
1503 unsafe fn decode(
1504 &mut self,
1505 decoder: &mut fidl::encoding::Decoder<'_, D>,
1506 offset: usize,
1507 _depth: fidl::encoding::Depth,
1508 ) -> fidl::Result<()> {
1509 decoder.debug_check_bounds::<Self>(offset);
1510 fidl::decode!(fidl::encoding::Vector<TxtEntries, 32>, D, &mut self.txt_entries, decoder, offset + 0, _depth)?;
1512 Ok(())
1513 }
1514 }
1515
1516 impl fidl::encoding::ValueTypeMarker for ThreadCapabilitiesGetCapabilitiesResponse {
1517 type Borrowed<'a> = &'a Self;
1518 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1519 value
1520 }
1521 }
1522
1523 unsafe impl fidl::encoding::TypeMarker for ThreadCapabilitiesGetCapabilitiesResponse {
1524 type Owned = Self;
1525
1526 #[inline(always)]
1527 fn inline_align(_context: fidl::encoding::Context) -> usize {
1528 8
1529 }
1530
1531 #[inline(always)]
1532 fn inline_size(_context: fidl::encoding::Context) -> usize {
1533 16
1534 }
1535 }
1536
1537 unsafe impl<D: fidl::encoding::ResourceDialect>
1538 fidl::encoding::Encode<ThreadCapabilitiesGetCapabilitiesResponse, D>
1539 for &ThreadCapabilitiesGetCapabilitiesResponse
1540 {
1541 #[inline]
1542 unsafe fn encode(
1543 self,
1544 encoder: &mut fidl::encoding::Encoder<'_, D>,
1545 offset: usize,
1546 _depth: fidl::encoding::Depth,
1547 ) -> fidl::Result<()> {
1548 encoder.debug_check_bounds::<ThreadCapabilitiesGetCapabilitiesResponse>(offset);
1549 fidl::encoding::Encode::<ThreadCapabilitiesGetCapabilitiesResponse, D>::encode(
1551 (<Capabilities as fidl::encoding::ValueTypeMarker>::borrow(&self.capabilities),),
1552 encoder,
1553 offset,
1554 _depth,
1555 )
1556 }
1557 }
1558 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Capabilities, D>>
1559 fidl::encoding::Encode<ThreadCapabilitiesGetCapabilitiesResponse, D> for (T0,)
1560 {
1561 #[inline]
1562 unsafe fn encode(
1563 self,
1564 encoder: &mut fidl::encoding::Encoder<'_, D>,
1565 offset: usize,
1566 depth: fidl::encoding::Depth,
1567 ) -> fidl::Result<()> {
1568 encoder.debug_check_bounds::<ThreadCapabilitiesGetCapabilitiesResponse>(offset);
1569 self.0.encode(encoder, offset + 0, depth)?;
1573 Ok(())
1574 }
1575 }
1576
1577 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1578 for ThreadCapabilitiesGetCapabilitiesResponse
1579 {
1580 #[inline(always)]
1581 fn new_empty() -> Self {
1582 Self { capabilities: fidl::new_empty!(Capabilities, D) }
1583 }
1584
1585 #[inline]
1586 unsafe fn decode(
1587 &mut self,
1588 decoder: &mut fidl::encoding::Decoder<'_, D>,
1589 offset: usize,
1590 _depth: fidl::encoding::Depth,
1591 ) -> fidl::Result<()> {
1592 decoder.debug_check_bounds::<Self>(offset);
1593 fidl::decode!(Capabilities, D, &mut self.capabilities, decoder, offset + 0, _depth)?;
1595 Ok(())
1596 }
1597 }
1598
1599 impl fidl::encoding::ValueTypeMarker for TxtEntries {
1600 type Borrowed<'a> = &'a Self;
1601 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1602 value
1603 }
1604 }
1605
1606 unsafe impl fidl::encoding::TypeMarker for TxtEntries {
1607 type Owned = Self;
1608
1609 #[inline(always)]
1610 fn inline_align(_context: fidl::encoding::Context) -> usize {
1611 8
1612 }
1613
1614 #[inline(always)]
1615 fn inline_size(_context: fidl::encoding::Context) -> usize {
1616 32
1617 }
1618 }
1619
1620 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TxtEntries, D>
1621 for &TxtEntries
1622 {
1623 #[inline]
1624 unsafe fn encode(
1625 self,
1626 encoder: &mut fidl::encoding::Encoder<'_, D>,
1627 offset: usize,
1628 _depth: fidl::encoding::Depth,
1629 ) -> fidl::Result<()> {
1630 encoder.debug_check_bounds::<TxtEntries>(offset);
1631 fidl::encoding::Encode::<TxtEntries, D>::encode(
1633 (
1634 <fidl::encoding::BoundedString<254> as fidl::encoding::ValueTypeMarker>::borrow(
1635 &self.key,
1636 ),
1637 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow(
1638 &self.value,
1639 ),
1640 ),
1641 encoder,
1642 offset,
1643 _depth,
1644 )
1645 }
1646 }
1647 unsafe impl<
1648 D: fidl::encoding::ResourceDialect,
1649 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<254>, D>,
1650 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 253>, D>,
1651 > fidl::encoding::Encode<TxtEntries, D> for (T0, T1)
1652 {
1653 #[inline]
1654 unsafe fn encode(
1655 self,
1656 encoder: &mut fidl::encoding::Encoder<'_, D>,
1657 offset: usize,
1658 depth: fidl::encoding::Depth,
1659 ) -> fidl::Result<()> {
1660 encoder.debug_check_bounds::<TxtEntries>(offset);
1661 self.0.encode(encoder, offset + 0, depth)?;
1665 self.1.encode(encoder, offset + 16, depth)?;
1666 Ok(())
1667 }
1668 }
1669
1670 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TxtEntries {
1671 #[inline(always)]
1672 fn new_empty() -> Self {
1673 Self {
1674 key: fidl::new_empty!(fidl::encoding::BoundedString<254>, D),
1675 value: fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D),
1676 }
1677 }
1678
1679 #[inline]
1680 unsafe fn decode(
1681 &mut self,
1682 decoder: &mut fidl::encoding::Decoder<'_, D>,
1683 offset: usize,
1684 _depth: fidl::encoding::Depth,
1685 ) -> fidl::Result<()> {
1686 decoder.debug_check_bounds::<Self>(offset);
1687 fidl::decode!(
1689 fidl::encoding::BoundedString<254>,
1690 D,
1691 &mut self.key,
1692 decoder,
1693 offset + 0,
1694 _depth
1695 )?;
1696 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, &mut self.value, decoder, offset + 16, _depth)?;
1697 Ok(())
1698 }
1699 }
1700
1701 impl Capabilities {
1702 #[inline(always)]
1703 fn max_ordinal_present(&self) -> u64 {
1704 if let Some(_) = self.epskc {
1705 return 3;
1706 }
1707 if let Some(_) = self.dhcpv6_pd {
1708 return 2;
1709 }
1710 if let Some(_) = self.nat64 {
1711 return 1;
1712 }
1713 0
1714 }
1715 }
1716
1717 impl fidl::encoding::ValueTypeMarker for Capabilities {
1718 type Borrowed<'a> = &'a Self;
1719 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1720 value
1721 }
1722 }
1723
1724 unsafe impl fidl::encoding::TypeMarker for Capabilities {
1725 type Owned = Self;
1726
1727 #[inline(always)]
1728 fn inline_align(_context: fidl::encoding::Context) -> usize {
1729 8
1730 }
1731
1732 #[inline(always)]
1733 fn inline_size(_context: fidl::encoding::Context) -> usize {
1734 16
1735 }
1736 }
1737
1738 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capabilities, D>
1739 for &Capabilities
1740 {
1741 unsafe fn encode(
1742 self,
1743 encoder: &mut fidl::encoding::Encoder<'_, D>,
1744 offset: usize,
1745 mut depth: fidl::encoding::Depth,
1746 ) -> fidl::Result<()> {
1747 encoder.debug_check_bounds::<Capabilities>(offset);
1748 let max_ordinal: u64 = self.max_ordinal_present();
1750 encoder.write_num(max_ordinal, offset);
1751 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1752 if max_ordinal == 0 {
1754 return Ok(());
1755 }
1756 depth.increment()?;
1757 let envelope_size = 8;
1758 let bytes_len = max_ordinal as usize * envelope_size;
1759 #[allow(unused_variables)]
1760 let offset = encoder.out_of_line_offset(bytes_len);
1761 let mut _prev_end_offset: usize = 0;
1762 if 1 > max_ordinal {
1763 return Ok(());
1764 }
1765
1766 let cur_offset: usize = (1 - 1) * envelope_size;
1769
1770 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1772
1773 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1778 self.nat64.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1779 encoder,
1780 offset + cur_offset,
1781 depth,
1782 )?;
1783
1784 _prev_end_offset = cur_offset + envelope_size;
1785 if 2 > max_ordinal {
1786 return Ok(());
1787 }
1788
1789 let cur_offset: usize = (2 - 1) * envelope_size;
1792
1793 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1795
1796 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1801 self.dhcpv6_pd.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1802 encoder,
1803 offset + cur_offset,
1804 depth,
1805 )?;
1806
1807 _prev_end_offset = cur_offset + envelope_size;
1808 if 3 > max_ordinal {
1809 return Ok(());
1810 }
1811
1812 let cur_offset: usize = (3 - 1) * envelope_size;
1815
1816 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1818
1819 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1824 self.epskc.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1825 encoder,
1826 offset + cur_offset,
1827 depth,
1828 )?;
1829
1830 _prev_end_offset = cur_offset + envelope_size;
1831
1832 Ok(())
1833 }
1834 }
1835
1836 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capabilities {
1837 #[inline(always)]
1838 fn new_empty() -> Self {
1839 Self::default()
1840 }
1841
1842 unsafe fn decode(
1843 &mut self,
1844 decoder: &mut fidl::encoding::Decoder<'_, D>,
1845 offset: usize,
1846 mut depth: fidl::encoding::Depth,
1847 ) -> fidl::Result<()> {
1848 decoder.debug_check_bounds::<Self>(offset);
1849 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1850 None => return Err(fidl::Error::NotNullable),
1851 Some(len) => len,
1852 };
1853 if len == 0 {
1855 return Ok(());
1856 };
1857 depth.increment()?;
1858 let envelope_size = 8;
1859 let bytes_len = len * envelope_size;
1860 let offset = decoder.out_of_line_offset(bytes_len)?;
1861 let mut _next_ordinal_to_read = 0;
1863 let mut next_offset = offset;
1864 let end_offset = offset + bytes_len;
1865 _next_ordinal_to_read += 1;
1866 if next_offset >= end_offset {
1867 return Ok(());
1868 }
1869
1870 while _next_ordinal_to_read < 1 {
1872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1873 _next_ordinal_to_read += 1;
1874 next_offset += envelope_size;
1875 }
1876
1877 let next_out_of_line = decoder.next_out_of_line();
1878 let handles_before = decoder.remaining_handles();
1879 if let Some((inlined, num_bytes, num_handles)) =
1880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1881 {
1882 let member_inline_size =
1883 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1884 if inlined != (member_inline_size <= 4) {
1885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1886 }
1887 let inner_offset;
1888 let mut inner_depth = depth.clone();
1889 if inlined {
1890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1891 inner_offset = next_offset;
1892 } else {
1893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1894 inner_depth.increment()?;
1895 }
1896 let val_ref = self.nat64.get_or_insert_with(|| fidl::new_empty!(bool, D));
1897 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1898 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1899 {
1900 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1901 }
1902 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1903 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1904 }
1905 }
1906
1907 next_offset += envelope_size;
1908 _next_ordinal_to_read += 1;
1909 if next_offset >= end_offset {
1910 return Ok(());
1911 }
1912
1913 while _next_ordinal_to_read < 2 {
1915 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1916 _next_ordinal_to_read += 1;
1917 next_offset += envelope_size;
1918 }
1919
1920 let next_out_of_line = decoder.next_out_of_line();
1921 let handles_before = decoder.remaining_handles();
1922 if let Some((inlined, num_bytes, num_handles)) =
1923 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1924 {
1925 let member_inline_size =
1926 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1927 if inlined != (member_inline_size <= 4) {
1928 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1929 }
1930 let inner_offset;
1931 let mut inner_depth = depth.clone();
1932 if inlined {
1933 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1934 inner_offset = next_offset;
1935 } else {
1936 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1937 inner_depth.increment()?;
1938 }
1939 let val_ref = self.dhcpv6_pd.get_or_insert_with(|| fidl::new_empty!(bool, D));
1940 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1942 {
1943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1944 }
1945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1947 }
1948 }
1949
1950 next_offset += envelope_size;
1951 _next_ordinal_to_read += 1;
1952 if next_offset >= end_offset {
1953 return Ok(());
1954 }
1955
1956 while _next_ordinal_to_read < 3 {
1958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1959 _next_ordinal_to_read += 1;
1960 next_offset += envelope_size;
1961 }
1962
1963 let next_out_of_line = decoder.next_out_of_line();
1964 let handles_before = decoder.remaining_handles();
1965 if let Some((inlined, num_bytes, num_handles)) =
1966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1967 {
1968 let member_inline_size =
1969 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1970 if inlined != (member_inline_size <= 4) {
1971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1972 }
1973 let inner_offset;
1974 let mut inner_depth = depth.clone();
1975 if inlined {
1976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1977 inner_offset = next_offset;
1978 } else {
1979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1980 inner_depth.increment()?;
1981 }
1982 let val_ref = self.epskc.get_or_insert_with(|| fidl::new_empty!(bool, D));
1983 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1984 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1985 {
1986 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1987 }
1988 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1989 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1990 }
1991 }
1992
1993 next_offset += envelope_size;
1994
1995 while next_offset < end_offset {
1997 _next_ordinal_to_read += 1;
1998 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1999 next_offset += envelope_size;
2000 }
2001
2002 Ok(())
2003 }
2004 }
2005
2006 impl FeatureConfig {
2007 #[inline(always)]
2008 fn max_ordinal_present(&self) -> u64 {
2009 if let Some(_) = self.epskc_enabled {
2010 return 9;
2011 }
2012 if let Some(_) = self.link_metrics_manager_enabled {
2013 return 8;
2014 }
2015 if let Some(_) = self.dns_upstream_query_enabled {
2016 return 7;
2017 }
2018 if let Some(_) = self.dhcpv6_pd_enabled {
2019 return 6;
2020 }
2021 if let Some(_) = self.detailed_logging_level {
2022 return 5;
2023 }
2024 if let Some(_) = self.detailed_logging_enabled {
2025 return 4;
2026 }
2027 if let Some(_) = self.srp_replication_enabled {
2028 return 3;
2029 }
2030 if let Some(_) = self.nat64_enabled {
2031 return 2;
2032 }
2033 if let Some(_) = self.trel_enabled {
2034 return 1;
2035 }
2036 0
2037 }
2038 }
2039
2040 impl fidl::encoding::ValueTypeMarker for FeatureConfig {
2041 type Borrowed<'a> = &'a Self;
2042 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2043 value
2044 }
2045 }
2046
2047 unsafe impl fidl::encoding::TypeMarker for FeatureConfig {
2048 type Owned = Self;
2049
2050 #[inline(always)]
2051 fn inline_align(_context: fidl::encoding::Context) -> usize {
2052 8
2053 }
2054
2055 #[inline(always)]
2056 fn inline_size(_context: fidl::encoding::Context) -> usize {
2057 16
2058 }
2059 }
2060
2061 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FeatureConfig, D>
2062 for &FeatureConfig
2063 {
2064 unsafe fn encode(
2065 self,
2066 encoder: &mut fidl::encoding::Encoder<'_, D>,
2067 offset: usize,
2068 mut depth: fidl::encoding::Depth,
2069 ) -> fidl::Result<()> {
2070 encoder.debug_check_bounds::<FeatureConfig>(offset);
2071 let max_ordinal: u64 = self.max_ordinal_present();
2073 encoder.write_num(max_ordinal, offset);
2074 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2075 if max_ordinal == 0 {
2077 return Ok(());
2078 }
2079 depth.increment()?;
2080 let envelope_size = 8;
2081 let bytes_len = max_ordinal as usize * envelope_size;
2082 #[allow(unused_variables)]
2083 let offset = encoder.out_of_line_offset(bytes_len);
2084 let mut _prev_end_offset: usize = 0;
2085 if 1 > max_ordinal {
2086 return Ok(());
2087 }
2088
2089 let cur_offset: usize = (1 - 1) * envelope_size;
2092
2093 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2095
2096 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2101 self.trel_enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2102 encoder,
2103 offset + cur_offset,
2104 depth,
2105 )?;
2106
2107 _prev_end_offset = cur_offset + envelope_size;
2108 if 2 > max_ordinal {
2109 return Ok(());
2110 }
2111
2112 let cur_offset: usize = (2 - 1) * envelope_size;
2115
2116 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2118
2119 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2124 self.nat64_enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2125 encoder,
2126 offset + cur_offset,
2127 depth,
2128 )?;
2129
2130 _prev_end_offset = cur_offset + envelope_size;
2131 if 3 > max_ordinal {
2132 return Ok(());
2133 }
2134
2135 let cur_offset: usize = (3 - 1) * envelope_size;
2138
2139 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2141
2142 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2147 self.srp_replication_enabled
2148 .as_ref()
2149 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2150 encoder,
2151 offset + cur_offset,
2152 depth,
2153 )?;
2154
2155 _prev_end_offset = cur_offset + envelope_size;
2156 if 4 > max_ordinal {
2157 return Ok(());
2158 }
2159
2160 let cur_offset: usize = (4 - 1) * envelope_size;
2163
2164 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2166
2167 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2172 self.detailed_logging_enabled
2173 .as_ref()
2174 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2175 encoder,
2176 offset + cur_offset,
2177 depth,
2178 )?;
2179
2180 _prev_end_offset = cur_offset + envelope_size;
2181 if 5 > max_ordinal {
2182 return Ok(());
2183 }
2184
2185 let cur_offset: usize = (5 - 1) * envelope_size;
2188
2189 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2191
2192 fidl::encoding::encode_in_envelope_optional::<DetailedLoggingLevel, D>(
2197 self.detailed_logging_level
2198 .as_ref()
2199 .map(<DetailedLoggingLevel as fidl::encoding::ValueTypeMarker>::borrow),
2200 encoder,
2201 offset + cur_offset,
2202 depth,
2203 )?;
2204
2205 _prev_end_offset = cur_offset + envelope_size;
2206 if 6 > max_ordinal {
2207 return Ok(());
2208 }
2209
2210 let cur_offset: usize = (6 - 1) * envelope_size;
2213
2214 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2216
2217 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2222 self.dhcpv6_pd_enabled
2223 .as_ref()
2224 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2225 encoder,
2226 offset + cur_offset,
2227 depth,
2228 )?;
2229
2230 _prev_end_offset = cur_offset + envelope_size;
2231 if 7 > max_ordinal {
2232 return Ok(());
2233 }
2234
2235 let cur_offset: usize = (7 - 1) * envelope_size;
2238
2239 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2241
2242 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2247 self.dns_upstream_query_enabled
2248 .as_ref()
2249 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2250 encoder,
2251 offset + cur_offset,
2252 depth,
2253 )?;
2254
2255 _prev_end_offset = cur_offset + envelope_size;
2256 if 8 > max_ordinal {
2257 return Ok(());
2258 }
2259
2260 let cur_offset: usize = (8 - 1) * envelope_size;
2263
2264 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2266
2267 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2272 self.link_metrics_manager_enabled
2273 .as_ref()
2274 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2275 encoder,
2276 offset + cur_offset,
2277 depth,
2278 )?;
2279
2280 _prev_end_offset = cur_offset + envelope_size;
2281 if 9 > max_ordinal {
2282 return Ok(());
2283 }
2284
2285 let cur_offset: usize = (9 - 1) * envelope_size;
2288
2289 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2291
2292 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2297 self.epskc_enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2298 encoder,
2299 offset + cur_offset,
2300 depth,
2301 )?;
2302
2303 _prev_end_offset = cur_offset + envelope_size;
2304
2305 Ok(())
2306 }
2307 }
2308
2309 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FeatureConfig {
2310 #[inline(always)]
2311 fn new_empty() -> Self {
2312 Self::default()
2313 }
2314
2315 unsafe fn decode(
2316 &mut self,
2317 decoder: &mut fidl::encoding::Decoder<'_, D>,
2318 offset: usize,
2319 mut depth: fidl::encoding::Depth,
2320 ) -> fidl::Result<()> {
2321 decoder.debug_check_bounds::<Self>(offset);
2322 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2323 None => return Err(fidl::Error::NotNullable),
2324 Some(len) => len,
2325 };
2326 if len == 0 {
2328 return Ok(());
2329 };
2330 depth.increment()?;
2331 let envelope_size = 8;
2332 let bytes_len = len * envelope_size;
2333 let offset = decoder.out_of_line_offset(bytes_len)?;
2334 let mut _next_ordinal_to_read = 0;
2336 let mut next_offset = offset;
2337 let end_offset = offset + bytes_len;
2338 _next_ordinal_to_read += 1;
2339 if next_offset >= end_offset {
2340 return Ok(());
2341 }
2342
2343 while _next_ordinal_to_read < 1 {
2345 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2346 _next_ordinal_to_read += 1;
2347 next_offset += envelope_size;
2348 }
2349
2350 let next_out_of_line = decoder.next_out_of_line();
2351 let handles_before = decoder.remaining_handles();
2352 if let Some((inlined, num_bytes, num_handles)) =
2353 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2354 {
2355 let member_inline_size =
2356 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2357 if inlined != (member_inline_size <= 4) {
2358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2359 }
2360 let inner_offset;
2361 let mut inner_depth = depth.clone();
2362 if inlined {
2363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2364 inner_offset = next_offset;
2365 } else {
2366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2367 inner_depth.increment()?;
2368 }
2369 let val_ref = self.trel_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
2370 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2371 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2372 {
2373 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2374 }
2375 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2376 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2377 }
2378 }
2379
2380 next_offset += envelope_size;
2381 _next_ordinal_to_read += 1;
2382 if next_offset >= end_offset {
2383 return Ok(());
2384 }
2385
2386 while _next_ordinal_to_read < 2 {
2388 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2389 _next_ordinal_to_read += 1;
2390 next_offset += envelope_size;
2391 }
2392
2393 let next_out_of_line = decoder.next_out_of_line();
2394 let handles_before = decoder.remaining_handles();
2395 if let Some((inlined, num_bytes, num_handles)) =
2396 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2397 {
2398 let member_inline_size =
2399 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2400 if inlined != (member_inline_size <= 4) {
2401 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2402 }
2403 let inner_offset;
2404 let mut inner_depth = depth.clone();
2405 if inlined {
2406 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2407 inner_offset = next_offset;
2408 } else {
2409 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2410 inner_depth.increment()?;
2411 }
2412 let val_ref = self.nat64_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
2413 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2414 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2415 {
2416 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2417 }
2418 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2419 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2420 }
2421 }
2422
2423 next_offset += envelope_size;
2424 _next_ordinal_to_read += 1;
2425 if next_offset >= end_offset {
2426 return Ok(());
2427 }
2428
2429 while _next_ordinal_to_read < 3 {
2431 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2432 _next_ordinal_to_read += 1;
2433 next_offset += envelope_size;
2434 }
2435
2436 let next_out_of_line = decoder.next_out_of_line();
2437 let handles_before = decoder.remaining_handles();
2438 if let Some((inlined, num_bytes, num_handles)) =
2439 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2440 {
2441 let member_inline_size =
2442 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2443 if inlined != (member_inline_size <= 4) {
2444 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2445 }
2446 let inner_offset;
2447 let mut inner_depth = depth.clone();
2448 if inlined {
2449 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2450 inner_offset = next_offset;
2451 } else {
2452 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2453 inner_depth.increment()?;
2454 }
2455 let val_ref =
2456 self.srp_replication_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
2457 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2458 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2459 {
2460 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2461 }
2462 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2463 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2464 }
2465 }
2466
2467 next_offset += envelope_size;
2468 _next_ordinal_to_read += 1;
2469 if next_offset >= end_offset {
2470 return Ok(());
2471 }
2472
2473 while _next_ordinal_to_read < 4 {
2475 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2476 _next_ordinal_to_read += 1;
2477 next_offset += envelope_size;
2478 }
2479
2480 let next_out_of_line = decoder.next_out_of_line();
2481 let handles_before = decoder.remaining_handles();
2482 if let Some((inlined, num_bytes, num_handles)) =
2483 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2484 {
2485 let member_inline_size =
2486 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2487 if inlined != (member_inline_size <= 4) {
2488 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2489 }
2490 let inner_offset;
2491 let mut inner_depth = depth.clone();
2492 if inlined {
2493 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2494 inner_offset = next_offset;
2495 } else {
2496 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2497 inner_depth.increment()?;
2498 }
2499 let val_ref =
2500 self.detailed_logging_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
2501 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2502 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2503 {
2504 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2505 }
2506 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2507 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2508 }
2509 }
2510
2511 next_offset += envelope_size;
2512 _next_ordinal_to_read += 1;
2513 if next_offset >= end_offset {
2514 return Ok(());
2515 }
2516
2517 while _next_ordinal_to_read < 5 {
2519 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2520 _next_ordinal_to_read += 1;
2521 next_offset += envelope_size;
2522 }
2523
2524 let next_out_of_line = decoder.next_out_of_line();
2525 let handles_before = decoder.remaining_handles();
2526 if let Some((inlined, num_bytes, num_handles)) =
2527 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2528 {
2529 let member_inline_size =
2530 <DetailedLoggingLevel as fidl::encoding::TypeMarker>::inline_size(
2531 decoder.context,
2532 );
2533 if inlined != (member_inline_size <= 4) {
2534 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2535 }
2536 let inner_offset;
2537 let mut inner_depth = depth.clone();
2538 if inlined {
2539 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2540 inner_offset = next_offset;
2541 } else {
2542 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2543 inner_depth.increment()?;
2544 }
2545 let val_ref = self
2546 .detailed_logging_level
2547 .get_or_insert_with(|| fidl::new_empty!(DetailedLoggingLevel, D));
2548 fidl::decode!(
2549 DetailedLoggingLevel,
2550 D,
2551 val_ref,
2552 decoder,
2553 inner_offset,
2554 inner_depth
2555 )?;
2556 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2557 {
2558 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2559 }
2560 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2561 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2562 }
2563 }
2564
2565 next_offset += envelope_size;
2566 _next_ordinal_to_read += 1;
2567 if next_offset >= end_offset {
2568 return Ok(());
2569 }
2570
2571 while _next_ordinal_to_read < 6 {
2573 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2574 _next_ordinal_to_read += 1;
2575 next_offset += envelope_size;
2576 }
2577
2578 let next_out_of_line = decoder.next_out_of_line();
2579 let handles_before = decoder.remaining_handles();
2580 if let Some((inlined, num_bytes, num_handles)) =
2581 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2582 {
2583 let member_inline_size =
2584 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2585 if inlined != (member_inline_size <= 4) {
2586 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2587 }
2588 let inner_offset;
2589 let mut inner_depth = depth.clone();
2590 if inlined {
2591 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2592 inner_offset = next_offset;
2593 } else {
2594 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2595 inner_depth.increment()?;
2596 }
2597 let val_ref =
2598 self.dhcpv6_pd_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
2599 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2600 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2601 {
2602 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2603 }
2604 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2605 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2606 }
2607 }
2608
2609 next_offset += envelope_size;
2610 _next_ordinal_to_read += 1;
2611 if next_offset >= end_offset {
2612 return Ok(());
2613 }
2614
2615 while _next_ordinal_to_read < 7 {
2617 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2618 _next_ordinal_to_read += 1;
2619 next_offset += envelope_size;
2620 }
2621
2622 let next_out_of_line = decoder.next_out_of_line();
2623 let handles_before = decoder.remaining_handles();
2624 if let Some((inlined, num_bytes, num_handles)) =
2625 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2626 {
2627 let member_inline_size =
2628 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2629 if inlined != (member_inline_size <= 4) {
2630 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2631 }
2632 let inner_offset;
2633 let mut inner_depth = depth.clone();
2634 if inlined {
2635 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2636 inner_offset = next_offset;
2637 } else {
2638 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2639 inner_depth.increment()?;
2640 }
2641 let val_ref = self
2642 .dns_upstream_query_enabled
2643 .get_or_insert_with(|| fidl::new_empty!(bool, D));
2644 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2645 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2646 {
2647 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2648 }
2649 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2650 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2651 }
2652 }
2653
2654 next_offset += envelope_size;
2655 _next_ordinal_to_read += 1;
2656 if next_offset >= end_offset {
2657 return Ok(());
2658 }
2659
2660 while _next_ordinal_to_read < 8 {
2662 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2663 _next_ordinal_to_read += 1;
2664 next_offset += envelope_size;
2665 }
2666
2667 let next_out_of_line = decoder.next_out_of_line();
2668 let handles_before = decoder.remaining_handles();
2669 if let Some((inlined, num_bytes, num_handles)) =
2670 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2671 {
2672 let member_inline_size =
2673 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2674 if inlined != (member_inline_size <= 4) {
2675 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2676 }
2677 let inner_offset;
2678 let mut inner_depth = depth.clone();
2679 if inlined {
2680 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2681 inner_offset = next_offset;
2682 } else {
2683 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2684 inner_depth.increment()?;
2685 }
2686 let val_ref = self
2687 .link_metrics_manager_enabled
2688 .get_or_insert_with(|| fidl::new_empty!(bool, D));
2689 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2690 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2691 {
2692 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2693 }
2694 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2695 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2696 }
2697 }
2698
2699 next_offset += envelope_size;
2700 _next_ordinal_to_read += 1;
2701 if next_offset >= end_offset {
2702 return Ok(());
2703 }
2704
2705 while _next_ordinal_to_read < 9 {
2707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2708 _next_ordinal_to_read += 1;
2709 next_offset += envelope_size;
2710 }
2711
2712 let next_out_of_line = decoder.next_out_of_line();
2713 let handles_before = decoder.remaining_handles();
2714 if let Some((inlined, num_bytes, num_handles)) =
2715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2716 {
2717 let member_inline_size =
2718 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2719 if inlined != (member_inline_size <= 4) {
2720 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2721 }
2722 let inner_offset;
2723 let mut inner_depth = depth.clone();
2724 if inlined {
2725 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2726 inner_offset = next_offset;
2727 } else {
2728 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2729 inner_depth.increment()?;
2730 }
2731 let val_ref = self.epskc_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
2732 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2733 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2734 {
2735 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2736 }
2737 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2738 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2739 }
2740 }
2741
2742 next_offset += envelope_size;
2743
2744 while next_offset < end_offset {
2746 _next_ordinal_to_read += 1;
2747 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2748 next_offset += envelope_size;
2749 }
2750
2751 Ok(())
2752 }
2753 }
2754}