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
22#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
23pub enum DetailedLoggingLevel {
24 LowpanLogUnspecified,
25 LowpanLogEmerg,
26 LowpanLogAlert,
27 LowpanLogCrit,
28 LowpanLogErr,
29 LowpanLogWarning,
30 LowpanLogNotice,
31 LowpanLogInfo,
32 LowpanLogDebug,
33 #[doc(hidden)]
34 __SourceBreaking {
35 unknown_ordinal: u32,
36 },
37}
38
39#[macro_export]
41macro_rules! DetailedLoggingLevelUnknown {
42 () => {
43 _
44 };
45}
46
47impl DetailedLoggingLevel {
48 #[inline]
49 pub fn from_primitive(prim: u32) -> Option<Self> {
50 match prim {
51 0 => Some(Self::LowpanLogUnspecified),
52 1 => Some(Self::LowpanLogEmerg),
53 2 => Some(Self::LowpanLogAlert),
54 3 => Some(Self::LowpanLogCrit),
55 4 => Some(Self::LowpanLogErr),
56 5 => Some(Self::LowpanLogWarning),
57 6 => Some(Self::LowpanLogNotice),
58 7 => Some(Self::LowpanLogInfo),
59 8 => Some(Self::LowpanLogDebug),
60 _ => None,
61 }
62 }
63
64 #[inline]
65 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
66 match prim {
67 0 => Self::LowpanLogUnspecified,
68 1 => Self::LowpanLogEmerg,
69 2 => Self::LowpanLogAlert,
70 3 => Self::LowpanLogCrit,
71 4 => Self::LowpanLogErr,
72 5 => Self::LowpanLogWarning,
73 6 => Self::LowpanLogNotice,
74 7 => Self::LowpanLogInfo,
75 8 => Self::LowpanLogDebug,
76 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
77 }
78 }
79
80 #[inline]
81 pub fn unknown() -> Self {
82 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
83 }
84
85 #[inline]
86 pub const fn into_primitive(self) -> u32 {
87 match self {
88 Self::LowpanLogUnspecified => 0,
89 Self::LowpanLogEmerg => 1,
90 Self::LowpanLogAlert => 2,
91 Self::LowpanLogCrit => 3,
92 Self::LowpanLogErr => 4,
93 Self::LowpanLogWarning => 5,
94 Self::LowpanLogNotice => 6,
95 Self::LowpanLogInfo => 7,
96 Self::LowpanLogDebug => 8,
97 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
98 }
99 }
100
101 #[inline]
102 pub fn is_unknown(&self) -> bool {
103 match self {
104 Self::__SourceBreaking { unknown_ordinal: _ } => true,
105 _ => false,
106 }
107 }
108}
109
110#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
111pub struct DatasetAttachAllNodesToRequest {
112 pub dataset: Vec<u8>,
115}
116
117impl fidl::Persistable for DatasetAttachAllNodesToRequest {}
118
119#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
120#[repr(C)]
121pub struct DatasetAttachAllNodesToResponse {
122 pub delay_ms: i64,
130}
131
132impl fidl::Persistable for DatasetAttachAllNodesToResponse {}
133
134#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
135pub struct DatasetGetActiveTlvsResponse {
136 pub dataset: Option<Vec<u8>>,
137}
138
139impl fidl::Persistable for DatasetGetActiveTlvsResponse {}
140
141#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
142pub struct DatasetSetActiveTlvsRequest {
143 pub dataset: Vec<u8>,
144}
145
146impl fidl::Persistable for DatasetSetActiveTlvsRequest {}
147
148#[derive(Clone, Debug, PartialEq)]
149pub struct FeatureGetFeatureConfigResponse {
150 pub config: FeatureConfig,
151}
152
153impl fidl::Persistable for FeatureGetFeatureConfigResponse {}
154
155#[derive(Clone, Debug, PartialEq)]
156pub struct FeatureUpdateFeatureConfigRequest {
157 pub config: FeatureConfig,
158}
159
160impl fidl::Persistable for FeatureUpdateFeatureConfigRequest {}
161
162#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
163pub struct MeshcopUpdateTxtEntriesRequest {
164 pub txt_entries: Vec<TxtEntries>,
165}
166
167impl fidl::Persistable for MeshcopUpdateTxtEntriesRequest {}
168
169#[derive(Clone, Debug, PartialEq)]
170pub struct ThreadCapabilitiesGetCapabilitiesResponse {
171 pub capabilities: Capabilities,
172}
173
174impl fidl::Persistable for ThreadCapabilitiesGetCapabilitiesResponse {}
175
176#[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
177pub struct TxtEntries {
178 pub key: String,
183 pub value: Vec<u8>,
189}
190
191impl fidl::Persistable for TxtEntries {}
192
193#[derive(Clone, Debug, Default, PartialEq)]
202pub struct Capabilities {
203 pub nat64: Option<bool>,
207 pub dhcpv6_pd: Option<bool>,
210 #[doc(hidden)]
211 pub __source_breaking: fidl::marker::SourceBreaking,
212}
213
214impl fidl::Persistable for Capabilities {}
215
216#[derive(Clone, Debug, Default, PartialEq)]
221pub struct FeatureConfig {
222 pub trel_enabled: Option<bool>,
224 pub nat64_enabled: Option<bool>,
226 pub srp_replication_enabled: Option<bool>,
228 pub detailed_logging_enabled: Option<bool>,
232 pub detailed_logging_level: Option<DetailedLoggingLevel>,
235 pub dhcpv6_pd_enabled: Option<bool>,
237 pub dns_upstream_query_enabled: Option<bool>,
239 pub link_metrics_manager_enabled: Option<bool>,
241 #[doc(hidden)]
242 pub __source_breaking: fidl::marker::SourceBreaking,
243}
244
245impl fidl::Persistable for FeatureConfig {}
246
247mod internal {
248 use super::*;
249 unsafe impl fidl::encoding::TypeMarker for DetailedLoggingLevel {
250 type Owned = Self;
251
252 #[inline(always)]
253 fn inline_align(_context: fidl::encoding::Context) -> usize {
254 std::mem::align_of::<u32>()
255 }
256
257 #[inline(always)]
258 fn inline_size(_context: fidl::encoding::Context) -> usize {
259 std::mem::size_of::<u32>()
260 }
261
262 #[inline(always)]
263 fn encode_is_copy() -> bool {
264 false
265 }
266
267 #[inline(always)]
268 fn decode_is_copy() -> bool {
269 false
270 }
271 }
272
273 impl fidl::encoding::ValueTypeMarker for DetailedLoggingLevel {
274 type Borrowed<'a> = Self;
275 #[inline(always)]
276 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
277 *value
278 }
279 }
280
281 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
282 for DetailedLoggingLevel
283 {
284 #[inline]
285 unsafe fn encode(
286 self,
287 encoder: &mut fidl::encoding::Encoder<'_, D>,
288 offset: usize,
289 _depth: fidl::encoding::Depth,
290 ) -> fidl::Result<()> {
291 encoder.debug_check_bounds::<Self>(offset);
292 encoder.write_num(self.into_primitive(), offset);
293 Ok(())
294 }
295 }
296
297 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DetailedLoggingLevel {
298 #[inline(always)]
299 fn new_empty() -> Self {
300 Self::unknown()
301 }
302
303 #[inline]
304 unsafe fn decode(
305 &mut self,
306 decoder: &mut fidl::encoding::Decoder<'_, D>,
307 offset: usize,
308 _depth: fidl::encoding::Depth,
309 ) -> fidl::Result<()> {
310 decoder.debug_check_bounds::<Self>(offset);
311 let prim = decoder.read_num::<u32>(offset);
312
313 *self = Self::from_primitive_allow_unknown(prim);
314 Ok(())
315 }
316 }
317
318 impl fidl::encoding::ValueTypeMarker for DatasetAttachAllNodesToRequest {
319 type Borrowed<'a> = &'a Self;
320 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
321 value
322 }
323 }
324
325 unsafe impl fidl::encoding::TypeMarker for DatasetAttachAllNodesToRequest {
326 type Owned = Self;
327
328 #[inline(always)]
329 fn inline_align(_context: fidl::encoding::Context) -> usize {
330 8
331 }
332
333 #[inline(always)]
334 fn inline_size(_context: fidl::encoding::Context) -> usize {
335 16
336 }
337 }
338
339 unsafe impl<D: fidl::encoding::ResourceDialect>
340 fidl::encoding::Encode<DatasetAttachAllNodesToRequest, D>
341 for &DatasetAttachAllNodesToRequest
342 {
343 #[inline]
344 unsafe fn encode(
345 self,
346 encoder: &mut fidl::encoding::Encoder<'_, D>,
347 offset: usize,
348 _depth: fidl::encoding::Depth,
349 ) -> fidl::Result<()> {
350 encoder.debug_check_bounds::<DatasetAttachAllNodesToRequest>(offset);
351 fidl::encoding::Encode::<DatasetAttachAllNodesToRequest, D>::encode(
353 (<fidl::encoding::Vector<u8, 254> as fidl::encoding::ValueTypeMarker>::borrow(
354 &self.dataset,
355 ),),
356 encoder,
357 offset,
358 _depth,
359 )
360 }
361 }
362 unsafe impl<
363 D: fidl::encoding::ResourceDialect,
364 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 254>, D>,
365 > fidl::encoding::Encode<DatasetAttachAllNodesToRequest, D> for (T0,)
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::<DatasetAttachAllNodesToRequest>(offset);
375 self.0.encode(encoder, offset + 0, depth)?;
379 Ok(())
380 }
381 }
382
383 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
384 for DatasetAttachAllNodesToRequest
385 {
386 #[inline(always)]
387 fn new_empty() -> Self {
388 Self { dataset: fidl::new_empty!(fidl::encoding::Vector<u8, 254>, D) }
389 }
390
391 #[inline]
392 unsafe fn decode(
393 &mut self,
394 decoder: &mut fidl::encoding::Decoder<'_, D>,
395 offset: usize,
396 _depth: fidl::encoding::Depth,
397 ) -> fidl::Result<()> {
398 decoder.debug_check_bounds::<Self>(offset);
399 fidl::decode!(fidl::encoding::Vector<u8, 254>, D, &mut self.dataset, decoder, offset + 0, _depth)?;
401 Ok(())
402 }
403 }
404
405 impl fidl::encoding::ValueTypeMarker for DatasetAttachAllNodesToResponse {
406 type Borrowed<'a> = &'a Self;
407 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
408 value
409 }
410 }
411
412 unsafe impl fidl::encoding::TypeMarker for DatasetAttachAllNodesToResponse {
413 type Owned = Self;
414
415 #[inline(always)]
416 fn inline_align(_context: fidl::encoding::Context) -> usize {
417 8
418 }
419
420 #[inline(always)]
421 fn inline_size(_context: fidl::encoding::Context) -> usize {
422 8
423 }
424 #[inline(always)]
425 fn encode_is_copy() -> bool {
426 true
427 }
428
429 #[inline(always)]
430 fn decode_is_copy() -> bool {
431 true
432 }
433 }
434
435 unsafe impl<D: fidl::encoding::ResourceDialect>
436 fidl::encoding::Encode<DatasetAttachAllNodesToResponse, D>
437 for &DatasetAttachAllNodesToResponse
438 {
439 #[inline]
440 unsafe fn encode(
441 self,
442 encoder: &mut fidl::encoding::Encoder<'_, D>,
443 offset: usize,
444 _depth: fidl::encoding::Depth,
445 ) -> fidl::Result<()> {
446 encoder.debug_check_bounds::<DatasetAttachAllNodesToResponse>(offset);
447 unsafe {
448 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
450 (buf_ptr as *mut DatasetAttachAllNodesToResponse)
451 .write_unaligned((self as *const DatasetAttachAllNodesToResponse).read());
452 }
455 Ok(())
456 }
457 }
458 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<i64, D>>
459 fidl::encoding::Encode<DatasetAttachAllNodesToResponse, D> for (T0,)
460 {
461 #[inline]
462 unsafe fn encode(
463 self,
464 encoder: &mut fidl::encoding::Encoder<'_, D>,
465 offset: usize,
466 depth: fidl::encoding::Depth,
467 ) -> fidl::Result<()> {
468 encoder.debug_check_bounds::<DatasetAttachAllNodesToResponse>(offset);
469 self.0.encode(encoder, offset + 0, depth)?;
473 Ok(())
474 }
475 }
476
477 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
478 for DatasetAttachAllNodesToResponse
479 {
480 #[inline(always)]
481 fn new_empty() -> Self {
482 Self { delay_ms: fidl::new_empty!(i64, D) }
483 }
484
485 #[inline]
486 unsafe fn decode(
487 &mut self,
488 decoder: &mut fidl::encoding::Decoder<'_, D>,
489 offset: usize,
490 _depth: fidl::encoding::Depth,
491 ) -> fidl::Result<()> {
492 decoder.debug_check_bounds::<Self>(offset);
493 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
494 unsafe {
497 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
498 }
499 Ok(())
500 }
501 }
502
503 impl fidl::encoding::ValueTypeMarker for DatasetGetActiveTlvsResponse {
504 type Borrowed<'a> = &'a Self;
505 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
506 value
507 }
508 }
509
510 unsafe impl fidl::encoding::TypeMarker for DatasetGetActiveTlvsResponse {
511 type Owned = Self;
512
513 #[inline(always)]
514 fn inline_align(_context: fidl::encoding::Context) -> usize {
515 8
516 }
517
518 #[inline(always)]
519 fn inline_size(_context: fidl::encoding::Context) -> usize {
520 16
521 }
522 }
523
524 unsafe impl<D: fidl::encoding::ResourceDialect>
525 fidl::encoding::Encode<DatasetGetActiveTlvsResponse, D> for &DatasetGetActiveTlvsResponse
526 {
527 #[inline]
528 unsafe fn encode(
529 self,
530 encoder: &mut fidl::encoding::Encoder<'_, D>,
531 offset: usize,
532 _depth: fidl::encoding::Depth,
533 ) -> fidl::Result<()> {
534 encoder.debug_check_bounds::<DatasetGetActiveTlvsResponse>(offset);
535 fidl::encoding::Encode::<DatasetGetActiveTlvsResponse, D>::encode(
537 (
538 <fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>> as fidl::encoding::ValueTypeMarker>::borrow(&self.dataset),
539 ),
540 encoder, offset, _depth
541 )
542 }
543 }
544 unsafe impl<
545 D: fidl::encoding::ResourceDialect,
546 T0: fidl::encoding::Encode<fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>>, D>,
547 > fidl::encoding::Encode<DatasetGetActiveTlvsResponse, D> for (T0,)
548 {
549 #[inline]
550 unsafe fn encode(
551 self,
552 encoder: &mut fidl::encoding::Encoder<'_, D>,
553 offset: usize,
554 depth: fidl::encoding::Depth,
555 ) -> fidl::Result<()> {
556 encoder.debug_check_bounds::<DatasetGetActiveTlvsResponse>(offset);
557 self.0.encode(encoder, offset + 0, depth)?;
561 Ok(())
562 }
563 }
564
565 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
566 for DatasetGetActiveTlvsResponse
567 {
568 #[inline(always)]
569 fn new_empty() -> Self {
570 Self {
571 dataset: fidl::new_empty!(
572 fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>>,
573 D
574 ),
575 }
576 }
577
578 #[inline]
579 unsafe fn decode(
580 &mut self,
581 decoder: &mut fidl::encoding::Decoder<'_, D>,
582 offset: usize,
583 _depth: fidl::encoding::Depth,
584 ) -> fidl::Result<()> {
585 decoder.debug_check_bounds::<Self>(offset);
586 fidl::decode!(
588 fidl::encoding::Optional<fidl::encoding::Vector<u8, 254>>,
589 D,
590 &mut self.dataset,
591 decoder,
592 offset + 0,
593 _depth
594 )?;
595 Ok(())
596 }
597 }
598
599 impl fidl::encoding::ValueTypeMarker for DatasetSetActiveTlvsRequest {
600 type Borrowed<'a> = &'a Self;
601 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
602 value
603 }
604 }
605
606 unsafe impl fidl::encoding::TypeMarker for DatasetSetActiveTlvsRequest {
607 type Owned = Self;
608
609 #[inline(always)]
610 fn inline_align(_context: fidl::encoding::Context) -> usize {
611 8
612 }
613
614 #[inline(always)]
615 fn inline_size(_context: fidl::encoding::Context) -> usize {
616 16
617 }
618 }
619
620 unsafe impl<D: fidl::encoding::ResourceDialect>
621 fidl::encoding::Encode<DatasetSetActiveTlvsRequest, D> for &DatasetSetActiveTlvsRequest
622 {
623 #[inline]
624 unsafe fn encode(
625 self,
626 encoder: &mut fidl::encoding::Encoder<'_, D>,
627 offset: usize,
628 _depth: fidl::encoding::Depth,
629 ) -> fidl::Result<()> {
630 encoder.debug_check_bounds::<DatasetSetActiveTlvsRequest>(offset);
631 fidl::encoding::Encode::<DatasetSetActiveTlvsRequest, D>::encode(
633 (<fidl::encoding::Vector<u8, 254> as fidl::encoding::ValueTypeMarker>::borrow(
634 &self.dataset,
635 ),),
636 encoder,
637 offset,
638 _depth,
639 )
640 }
641 }
642 unsafe impl<
643 D: fidl::encoding::ResourceDialect,
644 T0: fidl::encoding::Encode<fidl::encoding::Vector<u8, 254>, D>,
645 > fidl::encoding::Encode<DatasetSetActiveTlvsRequest, D> for (T0,)
646 {
647 #[inline]
648 unsafe fn encode(
649 self,
650 encoder: &mut fidl::encoding::Encoder<'_, D>,
651 offset: usize,
652 depth: fidl::encoding::Depth,
653 ) -> fidl::Result<()> {
654 encoder.debug_check_bounds::<DatasetSetActiveTlvsRequest>(offset);
655 self.0.encode(encoder, offset + 0, depth)?;
659 Ok(())
660 }
661 }
662
663 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
664 for DatasetSetActiveTlvsRequest
665 {
666 #[inline(always)]
667 fn new_empty() -> Self {
668 Self { dataset: fidl::new_empty!(fidl::encoding::Vector<u8, 254>, D) }
669 }
670
671 #[inline]
672 unsafe fn decode(
673 &mut self,
674 decoder: &mut fidl::encoding::Decoder<'_, D>,
675 offset: usize,
676 _depth: fidl::encoding::Depth,
677 ) -> fidl::Result<()> {
678 decoder.debug_check_bounds::<Self>(offset);
679 fidl::decode!(fidl::encoding::Vector<u8, 254>, D, &mut self.dataset, decoder, offset + 0, _depth)?;
681 Ok(())
682 }
683 }
684
685 impl fidl::encoding::ValueTypeMarker for FeatureGetFeatureConfigResponse {
686 type Borrowed<'a> = &'a Self;
687 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
688 value
689 }
690 }
691
692 unsafe impl fidl::encoding::TypeMarker for FeatureGetFeatureConfigResponse {
693 type Owned = Self;
694
695 #[inline(always)]
696 fn inline_align(_context: fidl::encoding::Context) -> usize {
697 8
698 }
699
700 #[inline(always)]
701 fn inline_size(_context: fidl::encoding::Context) -> usize {
702 16
703 }
704 }
705
706 unsafe impl<D: fidl::encoding::ResourceDialect>
707 fidl::encoding::Encode<FeatureGetFeatureConfigResponse, D>
708 for &FeatureGetFeatureConfigResponse
709 {
710 #[inline]
711 unsafe fn encode(
712 self,
713 encoder: &mut fidl::encoding::Encoder<'_, D>,
714 offset: usize,
715 _depth: fidl::encoding::Depth,
716 ) -> fidl::Result<()> {
717 encoder.debug_check_bounds::<FeatureGetFeatureConfigResponse>(offset);
718 fidl::encoding::Encode::<FeatureGetFeatureConfigResponse, D>::encode(
720 (<FeatureConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
721 encoder,
722 offset,
723 _depth,
724 )
725 }
726 }
727 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<FeatureConfig, D>>
728 fidl::encoding::Encode<FeatureGetFeatureConfigResponse, D> for (T0,)
729 {
730 #[inline]
731 unsafe fn encode(
732 self,
733 encoder: &mut fidl::encoding::Encoder<'_, D>,
734 offset: usize,
735 depth: fidl::encoding::Depth,
736 ) -> fidl::Result<()> {
737 encoder.debug_check_bounds::<FeatureGetFeatureConfigResponse>(offset);
738 self.0.encode(encoder, offset + 0, depth)?;
742 Ok(())
743 }
744 }
745
746 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
747 for FeatureGetFeatureConfigResponse
748 {
749 #[inline(always)]
750 fn new_empty() -> Self {
751 Self { config: fidl::new_empty!(FeatureConfig, D) }
752 }
753
754 #[inline]
755 unsafe fn decode(
756 &mut self,
757 decoder: &mut fidl::encoding::Decoder<'_, D>,
758 offset: usize,
759 _depth: fidl::encoding::Depth,
760 ) -> fidl::Result<()> {
761 decoder.debug_check_bounds::<Self>(offset);
762 fidl::decode!(FeatureConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
764 Ok(())
765 }
766 }
767
768 impl fidl::encoding::ValueTypeMarker for FeatureUpdateFeatureConfigRequest {
769 type Borrowed<'a> = &'a Self;
770 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
771 value
772 }
773 }
774
775 unsafe impl fidl::encoding::TypeMarker for FeatureUpdateFeatureConfigRequest {
776 type Owned = Self;
777
778 #[inline(always)]
779 fn inline_align(_context: fidl::encoding::Context) -> usize {
780 8
781 }
782
783 #[inline(always)]
784 fn inline_size(_context: fidl::encoding::Context) -> usize {
785 16
786 }
787 }
788
789 unsafe impl<D: fidl::encoding::ResourceDialect>
790 fidl::encoding::Encode<FeatureUpdateFeatureConfigRequest, D>
791 for &FeatureUpdateFeatureConfigRequest
792 {
793 #[inline]
794 unsafe fn encode(
795 self,
796 encoder: &mut fidl::encoding::Encoder<'_, D>,
797 offset: usize,
798 _depth: fidl::encoding::Depth,
799 ) -> fidl::Result<()> {
800 encoder.debug_check_bounds::<FeatureUpdateFeatureConfigRequest>(offset);
801 fidl::encoding::Encode::<FeatureUpdateFeatureConfigRequest, D>::encode(
803 (<FeatureConfig as fidl::encoding::ValueTypeMarker>::borrow(&self.config),),
804 encoder,
805 offset,
806 _depth,
807 )
808 }
809 }
810 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<FeatureConfig, D>>
811 fidl::encoding::Encode<FeatureUpdateFeatureConfigRequest, D> for (T0,)
812 {
813 #[inline]
814 unsafe fn encode(
815 self,
816 encoder: &mut fidl::encoding::Encoder<'_, D>,
817 offset: usize,
818 depth: fidl::encoding::Depth,
819 ) -> fidl::Result<()> {
820 encoder.debug_check_bounds::<FeatureUpdateFeatureConfigRequest>(offset);
821 self.0.encode(encoder, offset + 0, depth)?;
825 Ok(())
826 }
827 }
828
829 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
830 for FeatureUpdateFeatureConfigRequest
831 {
832 #[inline(always)]
833 fn new_empty() -> Self {
834 Self { config: fidl::new_empty!(FeatureConfig, D) }
835 }
836
837 #[inline]
838 unsafe fn decode(
839 &mut self,
840 decoder: &mut fidl::encoding::Decoder<'_, D>,
841 offset: usize,
842 _depth: fidl::encoding::Depth,
843 ) -> fidl::Result<()> {
844 decoder.debug_check_bounds::<Self>(offset);
845 fidl::decode!(FeatureConfig, D, &mut self.config, decoder, offset + 0, _depth)?;
847 Ok(())
848 }
849 }
850
851 impl fidl::encoding::ValueTypeMarker for MeshcopUpdateTxtEntriesRequest {
852 type Borrowed<'a> = &'a Self;
853 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
854 value
855 }
856 }
857
858 unsafe impl fidl::encoding::TypeMarker for MeshcopUpdateTxtEntriesRequest {
859 type Owned = Self;
860
861 #[inline(always)]
862 fn inline_align(_context: fidl::encoding::Context) -> usize {
863 8
864 }
865
866 #[inline(always)]
867 fn inline_size(_context: fidl::encoding::Context) -> usize {
868 16
869 }
870 }
871
872 unsafe impl<D: fidl::encoding::ResourceDialect>
873 fidl::encoding::Encode<MeshcopUpdateTxtEntriesRequest, D>
874 for &MeshcopUpdateTxtEntriesRequest
875 {
876 #[inline]
877 unsafe fn encode(
878 self,
879 encoder: &mut fidl::encoding::Encoder<'_, D>,
880 offset: usize,
881 _depth: fidl::encoding::Depth,
882 ) -> fidl::Result<()> {
883 encoder.debug_check_bounds::<MeshcopUpdateTxtEntriesRequest>(offset);
884 fidl::encoding::Encode::<MeshcopUpdateTxtEntriesRequest, D>::encode(
886 (
887 <fidl::encoding::Vector<TxtEntries, 32> as fidl::encoding::ValueTypeMarker>::borrow(&self.txt_entries),
888 ),
889 encoder, offset, _depth
890 )
891 }
892 }
893 unsafe impl<
894 D: fidl::encoding::ResourceDialect,
895 T0: fidl::encoding::Encode<fidl::encoding::Vector<TxtEntries, 32>, D>,
896 > fidl::encoding::Encode<MeshcopUpdateTxtEntriesRequest, D> for (T0,)
897 {
898 #[inline]
899 unsafe fn encode(
900 self,
901 encoder: &mut fidl::encoding::Encoder<'_, D>,
902 offset: usize,
903 depth: fidl::encoding::Depth,
904 ) -> fidl::Result<()> {
905 encoder.debug_check_bounds::<MeshcopUpdateTxtEntriesRequest>(offset);
906 self.0.encode(encoder, offset + 0, depth)?;
910 Ok(())
911 }
912 }
913
914 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
915 for MeshcopUpdateTxtEntriesRequest
916 {
917 #[inline(always)]
918 fn new_empty() -> Self {
919 Self { txt_entries: fidl::new_empty!(fidl::encoding::Vector<TxtEntries, 32>, D) }
920 }
921
922 #[inline]
923 unsafe fn decode(
924 &mut self,
925 decoder: &mut fidl::encoding::Decoder<'_, D>,
926 offset: usize,
927 _depth: fidl::encoding::Depth,
928 ) -> fidl::Result<()> {
929 decoder.debug_check_bounds::<Self>(offset);
930 fidl::decode!(fidl::encoding::Vector<TxtEntries, 32>, D, &mut self.txt_entries, decoder, offset + 0, _depth)?;
932 Ok(())
933 }
934 }
935
936 impl fidl::encoding::ValueTypeMarker for ThreadCapabilitiesGetCapabilitiesResponse {
937 type Borrowed<'a> = &'a Self;
938 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
939 value
940 }
941 }
942
943 unsafe impl fidl::encoding::TypeMarker for ThreadCapabilitiesGetCapabilitiesResponse {
944 type Owned = Self;
945
946 #[inline(always)]
947 fn inline_align(_context: fidl::encoding::Context) -> usize {
948 8
949 }
950
951 #[inline(always)]
952 fn inline_size(_context: fidl::encoding::Context) -> usize {
953 16
954 }
955 }
956
957 unsafe impl<D: fidl::encoding::ResourceDialect>
958 fidl::encoding::Encode<ThreadCapabilitiesGetCapabilitiesResponse, D>
959 for &ThreadCapabilitiesGetCapabilitiesResponse
960 {
961 #[inline]
962 unsafe fn encode(
963 self,
964 encoder: &mut fidl::encoding::Encoder<'_, D>,
965 offset: usize,
966 _depth: fidl::encoding::Depth,
967 ) -> fidl::Result<()> {
968 encoder.debug_check_bounds::<ThreadCapabilitiesGetCapabilitiesResponse>(offset);
969 fidl::encoding::Encode::<ThreadCapabilitiesGetCapabilitiesResponse, D>::encode(
971 (<Capabilities as fidl::encoding::ValueTypeMarker>::borrow(&self.capabilities),),
972 encoder,
973 offset,
974 _depth,
975 )
976 }
977 }
978 unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<Capabilities, D>>
979 fidl::encoding::Encode<ThreadCapabilitiesGetCapabilitiesResponse, D> for (T0,)
980 {
981 #[inline]
982 unsafe fn encode(
983 self,
984 encoder: &mut fidl::encoding::Encoder<'_, D>,
985 offset: usize,
986 depth: fidl::encoding::Depth,
987 ) -> fidl::Result<()> {
988 encoder.debug_check_bounds::<ThreadCapabilitiesGetCapabilitiesResponse>(offset);
989 self.0.encode(encoder, offset + 0, depth)?;
993 Ok(())
994 }
995 }
996
997 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
998 for ThreadCapabilitiesGetCapabilitiesResponse
999 {
1000 #[inline(always)]
1001 fn new_empty() -> Self {
1002 Self { capabilities: fidl::new_empty!(Capabilities, D) }
1003 }
1004
1005 #[inline]
1006 unsafe fn decode(
1007 &mut self,
1008 decoder: &mut fidl::encoding::Decoder<'_, D>,
1009 offset: usize,
1010 _depth: fidl::encoding::Depth,
1011 ) -> fidl::Result<()> {
1012 decoder.debug_check_bounds::<Self>(offset);
1013 fidl::decode!(Capabilities, D, &mut self.capabilities, decoder, offset + 0, _depth)?;
1015 Ok(())
1016 }
1017 }
1018
1019 impl fidl::encoding::ValueTypeMarker for TxtEntries {
1020 type Borrowed<'a> = &'a Self;
1021 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1022 value
1023 }
1024 }
1025
1026 unsafe impl fidl::encoding::TypeMarker for TxtEntries {
1027 type Owned = Self;
1028
1029 #[inline(always)]
1030 fn inline_align(_context: fidl::encoding::Context) -> usize {
1031 8
1032 }
1033
1034 #[inline(always)]
1035 fn inline_size(_context: fidl::encoding::Context) -> usize {
1036 32
1037 }
1038 }
1039
1040 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<TxtEntries, D>
1041 for &TxtEntries
1042 {
1043 #[inline]
1044 unsafe fn encode(
1045 self,
1046 encoder: &mut fidl::encoding::Encoder<'_, D>,
1047 offset: usize,
1048 _depth: fidl::encoding::Depth,
1049 ) -> fidl::Result<()> {
1050 encoder.debug_check_bounds::<TxtEntries>(offset);
1051 fidl::encoding::Encode::<TxtEntries, D>::encode(
1053 (
1054 <fidl::encoding::BoundedString<254> as fidl::encoding::ValueTypeMarker>::borrow(
1055 &self.key,
1056 ),
1057 <fidl::encoding::Vector<u8, 253> as fidl::encoding::ValueTypeMarker>::borrow(
1058 &self.value,
1059 ),
1060 ),
1061 encoder,
1062 offset,
1063 _depth,
1064 )
1065 }
1066 }
1067 unsafe impl<
1068 D: fidl::encoding::ResourceDialect,
1069 T0: fidl::encoding::Encode<fidl::encoding::BoundedString<254>, D>,
1070 T1: fidl::encoding::Encode<fidl::encoding::Vector<u8, 253>, D>,
1071 > fidl::encoding::Encode<TxtEntries, D> for (T0, T1)
1072 {
1073 #[inline]
1074 unsafe fn encode(
1075 self,
1076 encoder: &mut fidl::encoding::Encoder<'_, D>,
1077 offset: usize,
1078 depth: fidl::encoding::Depth,
1079 ) -> fidl::Result<()> {
1080 encoder.debug_check_bounds::<TxtEntries>(offset);
1081 self.0.encode(encoder, offset + 0, depth)?;
1085 self.1.encode(encoder, offset + 16, depth)?;
1086 Ok(())
1087 }
1088 }
1089
1090 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for TxtEntries {
1091 #[inline(always)]
1092 fn new_empty() -> Self {
1093 Self {
1094 key: fidl::new_empty!(fidl::encoding::BoundedString<254>, D),
1095 value: fidl::new_empty!(fidl::encoding::Vector<u8, 253>, D),
1096 }
1097 }
1098
1099 #[inline]
1100 unsafe fn decode(
1101 &mut self,
1102 decoder: &mut fidl::encoding::Decoder<'_, D>,
1103 offset: usize,
1104 _depth: fidl::encoding::Depth,
1105 ) -> fidl::Result<()> {
1106 decoder.debug_check_bounds::<Self>(offset);
1107 fidl::decode!(
1109 fidl::encoding::BoundedString<254>,
1110 D,
1111 &mut self.key,
1112 decoder,
1113 offset + 0,
1114 _depth
1115 )?;
1116 fidl::decode!(fidl::encoding::Vector<u8, 253>, D, &mut self.value, decoder, offset + 16, _depth)?;
1117 Ok(())
1118 }
1119 }
1120
1121 impl Capabilities {
1122 #[inline(always)]
1123 fn max_ordinal_present(&self) -> u64 {
1124 if let Some(_) = self.dhcpv6_pd {
1125 return 2;
1126 }
1127 if let Some(_) = self.nat64 {
1128 return 1;
1129 }
1130 0
1131 }
1132 }
1133
1134 impl fidl::encoding::ValueTypeMarker for Capabilities {
1135 type Borrowed<'a> = &'a Self;
1136 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1137 value
1138 }
1139 }
1140
1141 unsafe impl fidl::encoding::TypeMarker for Capabilities {
1142 type Owned = Self;
1143
1144 #[inline(always)]
1145 fn inline_align(_context: fidl::encoding::Context) -> usize {
1146 8
1147 }
1148
1149 #[inline(always)]
1150 fn inline_size(_context: fidl::encoding::Context) -> usize {
1151 16
1152 }
1153 }
1154
1155 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Capabilities, D>
1156 for &Capabilities
1157 {
1158 unsafe fn encode(
1159 self,
1160 encoder: &mut fidl::encoding::Encoder<'_, D>,
1161 offset: usize,
1162 mut depth: fidl::encoding::Depth,
1163 ) -> fidl::Result<()> {
1164 encoder.debug_check_bounds::<Capabilities>(offset);
1165 let max_ordinal: u64 = self.max_ordinal_present();
1167 encoder.write_num(max_ordinal, offset);
1168 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1169 if max_ordinal == 0 {
1171 return Ok(());
1172 }
1173 depth.increment()?;
1174 let envelope_size = 8;
1175 let bytes_len = max_ordinal as usize * envelope_size;
1176 #[allow(unused_variables)]
1177 let offset = encoder.out_of_line_offset(bytes_len);
1178 let mut _prev_end_offset: usize = 0;
1179 if 1 > max_ordinal {
1180 return Ok(());
1181 }
1182
1183 let cur_offset: usize = (1 - 1) * envelope_size;
1186
1187 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1189
1190 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1195 self.nat64.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1196 encoder,
1197 offset + cur_offset,
1198 depth,
1199 )?;
1200
1201 _prev_end_offset = cur_offset + envelope_size;
1202 if 2 > max_ordinal {
1203 return Ok(());
1204 }
1205
1206 let cur_offset: usize = (2 - 1) * envelope_size;
1209
1210 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1212
1213 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1218 self.dhcpv6_pd.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1219 encoder,
1220 offset + cur_offset,
1221 depth,
1222 )?;
1223
1224 _prev_end_offset = cur_offset + envelope_size;
1225
1226 Ok(())
1227 }
1228 }
1229
1230 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for Capabilities {
1231 #[inline(always)]
1232 fn new_empty() -> Self {
1233 Self::default()
1234 }
1235
1236 unsafe fn decode(
1237 &mut self,
1238 decoder: &mut fidl::encoding::Decoder<'_, D>,
1239 offset: usize,
1240 mut depth: fidl::encoding::Depth,
1241 ) -> fidl::Result<()> {
1242 decoder.debug_check_bounds::<Self>(offset);
1243 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1244 None => return Err(fidl::Error::NotNullable),
1245 Some(len) => len,
1246 };
1247 if len == 0 {
1249 return Ok(());
1250 };
1251 depth.increment()?;
1252 let envelope_size = 8;
1253 let bytes_len = len * envelope_size;
1254 let offset = decoder.out_of_line_offset(bytes_len)?;
1255 let mut _next_ordinal_to_read = 0;
1257 let mut next_offset = offset;
1258 let end_offset = offset + bytes_len;
1259 _next_ordinal_to_read += 1;
1260 if next_offset >= end_offset {
1261 return Ok(());
1262 }
1263
1264 while _next_ordinal_to_read < 1 {
1266 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1267 _next_ordinal_to_read += 1;
1268 next_offset += envelope_size;
1269 }
1270
1271 let next_out_of_line = decoder.next_out_of_line();
1272 let handles_before = decoder.remaining_handles();
1273 if let Some((inlined, num_bytes, num_handles)) =
1274 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1275 {
1276 let member_inline_size =
1277 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1278 if inlined != (member_inline_size <= 4) {
1279 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1280 }
1281 let inner_offset;
1282 let mut inner_depth = depth.clone();
1283 if inlined {
1284 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1285 inner_offset = next_offset;
1286 } else {
1287 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1288 inner_depth.increment()?;
1289 }
1290 let val_ref = self.nat64.get_or_insert_with(|| fidl::new_empty!(bool, D));
1291 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1292 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1293 {
1294 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1295 }
1296 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1297 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1298 }
1299 }
1300
1301 next_offset += envelope_size;
1302 _next_ordinal_to_read += 1;
1303 if next_offset >= end_offset {
1304 return Ok(());
1305 }
1306
1307 while _next_ordinal_to_read < 2 {
1309 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1310 _next_ordinal_to_read += 1;
1311 next_offset += envelope_size;
1312 }
1313
1314 let next_out_of_line = decoder.next_out_of_line();
1315 let handles_before = decoder.remaining_handles();
1316 if let Some((inlined, num_bytes, num_handles)) =
1317 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1318 {
1319 let member_inline_size =
1320 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1321 if inlined != (member_inline_size <= 4) {
1322 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1323 }
1324 let inner_offset;
1325 let mut inner_depth = depth.clone();
1326 if inlined {
1327 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1328 inner_offset = next_offset;
1329 } else {
1330 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1331 inner_depth.increment()?;
1332 }
1333 let val_ref = self.dhcpv6_pd.get_or_insert_with(|| fidl::new_empty!(bool, D));
1334 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1335 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1336 {
1337 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1338 }
1339 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1340 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1341 }
1342 }
1343
1344 next_offset += envelope_size;
1345
1346 while next_offset < end_offset {
1348 _next_ordinal_to_read += 1;
1349 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1350 next_offset += envelope_size;
1351 }
1352
1353 Ok(())
1354 }
1355 }
1356
1357 impl FeatureConfig {
1358 #[inline(always)]
1359 fn max_ordinal_present(&self) -> u64 {
1360 if let Some(_) = self.link_metrics_manager_enabled {
1361 return 8;
1362 }
1363 if let Some(_) = self.dns_upstream_query_enabled {
1364 return 7;
1365 }
1366 if let Some(_) = self.dhcpv6_pd_enabled {
1367 return 6;
1368 }
1369 if let Some(_) = self.detailed_logging_level {
1370 return 5;
1371 }
1372 if let Some(_) = self.detailed_logging_enabled {
1373 return 4;
1374 }
1375 if let Some(_) = self.srp_replication_enabled {
1376 return 3;
1377 }
1378 if let Some(_) = self.nat64_enabled {
1379 return 2;
1380 }
1381 if let Some(_) = self.trel_enabled {
1382 return 1;
1383 }
1384 0
1385 }
1386 }
1387
1388 impl fidl::encoding::ValueTypeMarker for FeatureConfig {
1389 type Borrowed<'a> = &'a Self;
1390 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1391 value
1392 }
1393 }
1394
1395 unsafe impl fidl::encoding::TypeMarker for FeatureConfig {
1396 type Owned = Self;
1397
1398 #[inline(always)]
1399 fn inline_align(_context: fidl::encoding::Context) -> usize {
1400 8
1401 }
1402
1403 #[inline(always)]
1404 fn inline_size(_context: fidl::encoding::Context) -> usize {
1405 16
1406 }
1407 }
1408
1409 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<FeatureConfig, D>
1410 for &FeatureConfig
1411 {
1412 unsafe fn encode(
1413 self,
1414 encoder: &mut fidl::encoding::Encoder<'_, D>,
1415 offset: usize,
1416 mut depth: fidl::encoding::Depth,
1417 ) -> fidl::Result<()> {
1418 encoder.debug_check_bounds::<FeatureConfig>(offset);
1419 let max_ordinal: u64 = self.max_ordinal_present();
1421 encoder.write_num(max_ordinal, offset);
1422 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1423 if max_ordinal == 0 {
1425 return Ok(());
1426 }
1427 depth.increment()?;
1428 let envelope_size = 8;
1429 let bytes_len = max_ordinal as usize * envelope_size;
1430 #[allow(unused_variables)]
1431 let offset = encoder.out_of_line_offset(bytes_len);
1432 let mut _prev_end_offset: usize = 0;
1433 if 1 > max_ordinal {
1434 return Ok(());
1435 }
1436
1437 let cur_offset: usize = (1 - 1) * envelope_size;
1440
1441 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1443
1444 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1449 self.trel_enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1450 encoder,
1451 offset + cur_offset,
1452 depth,
1453 )?;
1454
1455 _prev_end_offset = cur_offset + envelope_size;
1456 if 2 > max_ordinal {
1457 return Ok(());
1458 }
1459
1460 let cur_offset: usize = (2 - 1) * envelope_size;
1463
1464 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1466
1467 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1472 self.nat64_enabled.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1473 encoder,
1474 offset + cur_offset,
1475 depth,
1476 )?;
1477
1478 _prev_end_offset = cur_offset + envelope_size;
1479 if 3 > max_ordinal {
1480 return Ok(());
1481 }
1482
1483 let cur_offset: usize = (3 - 1) * envelope_size;
1486
1487 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1489
1490 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1495 self.srp_replication_enabled
1496 .as_ref()
1497 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1498 encoder,
1499 offset + cur_offset,
1500 depth,
1501 )?;
1502
1503 _prev_end_offset = cur_offset + envelope_size;
1504 if 4 > max_ordinal {
1505 return Ok(());
1506 }
1507
1508 let cur_offset: usize = (4 - 1) * envelope_size;
1511
1512 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1514
1515 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1520 self.detailed_logging_enabled
1521 .as_ref()
1522 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1523 encoder,
1524 offset + cur_offset,
1525 depth,
1526 )?;
1527
1528 _prev_end_offset = cur_offset + envelope_size;
1529 if 5 > max_ordinal {
1530 return Ok(());
1531 }
1532
1533 let cur_offset: usize = (5 - 1) * envelope_size;
1536
1537 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1539
1540 fidl::encoding::encode_in_envelope_optional::<DetailedLoggingLevel, D>(
1545 self.detailed_logging_level
1546 .as_ref()
1547 .map(<DetailedLoggingLevel as fidl::encoding::ValueTypeMarker>::borrow),
1548 encoder,
1549 offset + cur_offset,
1550 depth,
1551 )?;
1552
1553 _prev_end_offset = cur_offset + envelope_size;
1554 if 6 > max_ordinal {
1555 return Ok(());
1556 }
1557
1558 let cur_offset: usize = (6 - 1) * envelope_size;
1561
1562 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1564
1565 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1570 self.dhcpv6_pd_enabled
1571 .as_ref()
1572 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1573 encoder,
1574 offset + cur_offset,
1575 depth,
1576 )?;
1577
1578 _prev_end_offset = cur_offset + envelope_size;
1579 if 7 > max_ordinal {
1580 return Ok(());
1581 }
1582
1583 let cur_offset: usize = (7 - 1) * envelope_size;
1586
1587 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1589
1590 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1595 self.dns_upstream_query_enabled
1596 .as_ref()
1597 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1598 encoder,
1599 offset + cur_offset,
1600 depth,
1601 )?;
1602
1603 _prev_end_offset = cur_offset + envelope_size;
1604 if 8 > max_ordinal {
1605 return Ok(());
1606 }
1607
1608 let cur_offset: usize = (8 - 1) * envelope_size;
1611
1612 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1614
1615 fidl::encoding::encode_in_envelope_optional::<bool, D>(
1620 self.link_metrics_manager_enabled
1621 .as_ref()
1622 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
1623 encoder,
1624 offset + cur_offset,
1625 depth,
1626 )?;
1627
1628 _prev_end_offset = cur_offset + envelope_size;
1629
1630 Ok(())
1631 }
1632 }
1633
1634 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for FeatureConfig {
1635 #[inline(always)]
1636 fn new_empty() -> Self {
1637 Self::default()
1638 }
1639
1640 unsafe fn decode(
1641 &mut self,
1642 decoder: &mut fidl::encoding::Decoder<'_, D>,
1643 offset: usize,
1644 mut depth: fidl::encoding::Depth,
1645 ) -> fidl::Result<()> {
1646 decoder.debug_check_bounds::<Self>(offset);
1647 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1648 None => return Err(fidl::Error::NotNullable),
1649 Some(len) => len,
1650 };
1651 if len == 0 {
1653 return Ok(());
1654 };
1655 depth.increment()?;
1656 let envelope_size = 8;
1657 let bytes_len = len * envelope_size;
1658 let offset = decoder.out_of_line_offset(bytes_len)?;
1659 let mut _next_ordinal_to_read = 0;
1661 let mut next_offset = offset;
1662 let end_offset = offset + bytes_len;
1663 _next_ordinal_to_read += 1;
1664 if next_offset >= end_offset {
1665 return Ok(());
1666 }
1667
1668 while _next_ordinal_to_read < 1 {
1670 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1671 _next_ordinal_to_read += 1;
1672 next_offset += envelope_size;
1673 }
1674
1675 let next_out_of_line = decoder.next_out_of_line();
1676 let handles_before = decoder.remaining_handles();
1677 if let Some((inlined, num_bytes, num_handles)) =
1678 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1679 {
1680 let member_inline_size =
1681 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1682 if inlined != (member_inline_size <= 4) {
1683 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1684 }
1685 let inner_offset;
1686 let mut inner_depth = depth.clone();
1687 if inlined {
1688 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1689 inner_offset = next_offset;
1690 } else {
1691 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1692 inner_depth.increment()?;
1693 }
1694 let val_ref = self.trel_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1695 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1696 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1697 {
1698 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1699 }
1700 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1701 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1702 }
1703 }
1704
1705 next_offset += envelope_size;
1706 _next_ordinal_to_read += 1;
1707 if next_offset >= end_offset {
1708 return Ok(());
1709 }
1710
1711 while _next_ordinal_to_read < 2 {
1713 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1714 _next_ordinal_to_read += 1;
1715 next_offset += envelope_size;
1716 }
1717
1718 let next_out_of_line = decoder.next_out_of_line();
1719 let handles_before = decoder.remaining_handles();
1720 if let Some((inlined, num_bytes, num_handles)) =
1721 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1722 {
1723 let member_inline_size =
1724 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1725 if inlined != (member_inline_size <= 4) {
1726 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1727 }
1728 let inner_offset;
1729 let mut inner_depth = depth.clone();
1730 if inlined {
1731 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1732 inner_offset = next_offset;
1733 } else {
1734 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1735 inner_depth.increment()?;
1736 }
1737 let val_ref = self.nat64_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1738 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1739 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1740 {
1741 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1742 }
1743 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1744 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1745 }
1746 }
1747
1748 next_offset += envelope_size;
1749 _next_ordinal_to_read += 1;
1750 if next_offset >= end_offset {
1751 return Ok(());
1752 }
1753
1754 while _next_ordinal_to_read < 3 {
1756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1757 _next_ordinal_to_read += 1;
1758 next_offset += envelope_size;
1759 }
1760
1761 let next_out_of_line = decoder.next_out_of_line();
1762 let handles_before = decoder.remaining_handles();
1763 if let Some((inlined, num_bytes, num_handles)) =
1764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1765 {
1766 let member_inline_size =
1767 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1768 if inlined != (member_inline_size <= 4) {
1769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1770 }
1771 let inner_offset;
1772 let mut inner_depth = depth.clone();
1773 if inlined {
1774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1775 inner_offset = next_offset;
1776 } else {
1777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1778 inner_depth.increment()?;
1779 }
1780 let val_ref =
1781 self.srp_replication_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1782 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1783 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1784 {
1785 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1786 }
1787 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1788 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1789 }
1790 }
1791
1792 next_offset += envelope_size;
1793 _next_ordinal_to_read += 1;
1794 if next_offset >= end_offset {
1795 return Ok(());
1796 }
1797
1798 while _next_ordinal_to_read < 4 {
1800 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1801 _next_ordinal_to_read += 1;
1802 next_offset += envelope_size;
1803 }
1804
1805 let next_out_of_line = decoder.next_out_of_line();
1806 let handles_before = decoder.remaining_handles();
1807 if let Some((inlined, num_bytes, num_handles)) =
1808 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1809 {
1810 let member_inline_size =
1811 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1812 if inlined != (member_inline_size <= 4) {
1813 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1814 }
1815 let inner_offset;
1816 let mut inner_depth = depth.clone();
1817 if inlined {
1818 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1819 inner_offset = next_offset;
1820 } else {
1821 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1822 inner_depth.increment()?;
1823 }
1824 let val_ref =
1825 self.detailed_logging_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1826 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1827 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1828 {
1829 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1830 }
1831 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1832 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1833 }
1834 }
1835
1836 next_offset += envelope_size;
1837 _next_ordinal_to_read += 1;
1838 if next_offset >= end_offset {
1839 return Ok(());
1840 }
1841
1842 while _next_ordinal_to_read < 5 {
1844 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1845 _next_ordinal_to_read += 1;
1846 next_offset += envelope_size;
1847 }
1848
1849 let next_out_of_line = decoder.next_out_of_line();
1850 let handles_before = decoder.remaining_handles();
1851 if let Some((inlined, num_bytes, num_handles)) =
1852 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1853 {
1854 let member_inline_size =
1855 <DetailedLoggingLevel as fidl::encoding::TypeMarker>::inline_size(
1856 decoder.context,
1857 );
1858 if inlined != (member_inline_size <= 4) {
1859 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1860 }
1861 let inner_offset;
1862 let mut inner_depth = depth.clone();
1863 if inlined {
1864 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1865 inner_offset = next_offset;
1866 } else {
1867 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1868 inner_depth.increment()?;
1869 }
1870 let val_ref = self
1871 .detailed_logging_level
1872 .get_or_insert_with(|| fidl::new_empty!(DetailedLoggingLevel, D));
1873 fidl::decode!(
1874 DetailedLoggingLevel,
1875 D,
1876 val_ref,
1877 decoder,
1878 inner_offset,
1879 inner_depth
1880 )?;
1881 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1882 {
1883 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1884 }
1885 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1886 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1887 }
1888 }
1889
1890 next_offset += envelope_size;
1891 _next_ordinal_to_read += 1;
1892 if next_offset >= end_offset {
1893 return Ok(());
1894 }
1895
1896 while _next_ordinal_to_read < 6 {
1898 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1899 _next_ordinal_to_read += 1;
1900 next_offset += envelope_size;
1901 }
1902
1903 let next_out_of_line = decoder.next_out_of_line();
1904 let handles_before = decoder.remaining_handles();
1905 if let Some((inlined, num_bytes, num_handles)) =
1906 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1907 {
1908 let member_inline_size =
1909 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1910 if inlined != (member_inline_size <= 4) {
1911 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1912 }
1913 let inner_offset;
1914 let mut inner_depth = depth.clone();
1915 if inlined {
1916 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1917 inner_offset = next_offset;
1918 } else {
1919 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1920 inner_depth.increment()?;
1921 }
1922 let val_ref =
1923 self.dhcpv6_pd_enabled.get_or_insert_with(|| fidl::new_empty!(bool, D));
1924 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1926 {
1927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1928 }
1929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1931 }
1932 }
1933
1934 next_offset += envelope_size;
1935 _next_ordinal_to_read += 1;
1936 if next_offset >= end_offset {
1937 return Ok(());
1938 }
1939
1940 while _next_ordinal_to_read < 7 {
1942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1943 _next_ordinal_to_read += 1;
1944 next_offset += envelope_size;
1945 }
1946
1947 let next_out_of_line = decoder.next_out_of_line();
1948 let handles_before = decoder.remaining_handles();
1949 if let Some((inlined, num_bytes, num_handles)) =
1950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1951 {
1952 let member_inline_size =
1953 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1954 if inlined != (member_inline_size <= 4) {
1955 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1956 }
1957 let inner_offset;
1958 let mut inner_depth = depth.clone();
1959 if inlined {
1960 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1961 inner_offset = next_offset;
1962 } else {
1963 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1964 inner_depth.increment()?;
1965 }
1966 let val_ref = self
1967 .dns_upstream_query_enabled
1968 .get_or_insert_with(|| fidl::new_empty!(bool, D));
1969 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
1970 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1971 {
1972 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1973 }
1974 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1975 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1976 }
1977 }
1978
1979 next_offset += envelope_size;
1980 _next_ordinal_to_read += 1;
1981 if next_offset >= end_offset {
1982 return Ok(());
1983 }
1984
1985 while _next_ordinal_to_read < 8 {
1987 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1988 _next_ordinal_to_read += 1;
1989 next_offset += envelope_size;
1990 }
1991
1992 let next_out_of_line = decoder.next_out_of_line();
1993 let handles_before = decoder.remaining_handles();
1994 if let Some((inlined, num_bytes, num_handles)) =
1995 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1996 {
1997 let member_inline_size =
1998 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1999 if inlined != (member_inline_size <= 4) {
2000 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2001 }
2002 let inner_offset;
2003 let mut inner_depth = depth.clone();
2004 if inlined {
2005 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2006 inner_offset = next_offset;
2007 } else {
2008 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2009 inner_depth.increment()?;
2010 }
2011 let val_ref = self
2012 .link_metrics_manager_enabled
2013 .get_or_insert_with(|| fidl::new_empty!(bool, D));
2014 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2015 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2016 {
2017 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2018 }
2019 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2020 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2021 }
2022 }
2023
2024 next_offset += envelope_size;
2025
2026 while next_offset < end_offset {
2028 _next_ordinal_to_read += 1;
2029 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2030 next_offset += envelope_size;
2031 }
2032
2033 Ok(())
2034 }
2035 }
2036}