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 WlanSoftmacHardwareCapability = u32;
12
13pub const MAX_BANDS: u8 = 16;
16
17pub const MAX_SUPPORTED_MAC_ROLES: u8 = 16;
20
21pub const MAX_SUPPORTED_PHY_TYPES: u8 = 64;
24
25pub const WLAN_MAC_MAX_EXT_RATES: u32 = 255;
26
27pub const WLAN_MAC_MAX_SUPP_RATES: u32 = 8;
28
29pub const WLAN_TX_RESULT_MAX_ENTRY: u32 = 8;
30
31pub const WLAN_TX_VECTOR_IDX_INVALID: u16 = 0;
32
33#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
34pub enum BssType {
35 Unknown,
36 Infrastructure,
37 Independent,
38 Mesh,
39 Personal,
40 #[doc(hidden)]
41 __SourceBreaking {
42 unknown_ordinal: u32,
43 },
44}
45
46#[macro_export]
48macro_rules! BssTypeUnknown {
49 () => {
50 _
51 };
52}
53
54impl BssType {
55 #[inline]
56 pub fn from_primitive(prim: u32) -> Option<Self> {
57 match prim {
58 0 => Some(Self::Unknown),
59 1 => Some(Self::Infrastructure),
60 2 => Some(Self::Independent),
61 3 => Some(Self::Mesh),
62 4 => Some(Self::Personal),
63 _ => None,
64 }
65 }
66
67 #[inline]
68 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
69 match prim {
70 0 => Self::Unknown,
71 1 => Self::Infrastructure,
72 2 => Self::Independent,
73 3 => Self::Mesh,
74 4 => Self::Personal,
75 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
76 }
77 }
78
79 #[inline]
80 pub fn unknown() -> Self {
81 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
82 }
83
84 #[inline]
85 pub const fn into_primitive(self) -> u32 {
86 match self {
87 Self::Unknown => 0,
88 Self::Infrastructure => 1,
89 Self::Independent => 2,
90 Self::Mesh => 3,
91 Self::Personal => 4,
92 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
93 }
94 }
95
96 #[inline]
97 pub fn is_unknown(&self) -> bool {
98 match self {
99 Self::__SourceBreaking { unknown_ordinal: _ } => true,
100 _ => false,
101 }
102 }
103}
104
105#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
106pub enum ChannelBandwidth {
107 Cbw20,
108 Cbw40,
109 Cbw40Below,
110 Cbw80,
111 Cbw160,
112 Cbw80P80,
113 #[doc(hidden)]
114 __SourceBreaking {
115 unknown_ordinal: u32,
116 },
117}
118
119#[macro_export]
121macro_rules! ChannelBandwidthUnknown {
122 () => {
123 _
124 };
125}
126
127impl ChannelBandwidth {
128 #[inline]
129 pub fn from_primitive(prim: u32) -> Option<Self> {
130 match prim {
131 1 => Some(Self::Cbw20),
132 2 => Some(Self::Cbw40),
133 3 => Some(Self::Cbw40Below),
134 4 => Some(Self::Cbw80),
135 5 => Some(Self::Cbw160),
136 6 => Some(Self::Cbw80P80),
137 _ => None,
138 }
139 }
140
141 #[inline]
142 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
143 match prim {
144 1 => Self::Cbw20,
145 2 => Self::Cbw40,
146 3 => Self::Cbw40Below,
147 4 => Self::Cbw80,
148 5 => Self::Cbw160,
149 6 => Self::Cbw80P80,
150 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
151 }
152 }
153
154 #[inline]
155 pub fn unknown() -> Self {
156 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
157 }
158
159 #[inline]
160 pub const fn into_primitive(self) -> u32 {
161 match self {
162 Self::Cbw20 => 1,
163 Self::Cbw40 => 2,
164 Self::Cbw40Below => 3,
165 Self::Cbw80 => 4,
166 Self::Cbw160 => 5,
167 Self::Cbw80P80 => 6,
168 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
169 }
170 }
171
172 #[inline]
173 pub fn is_unknown(&self) -> bool {
174 match self {
175 Self::__SourceBreaking { unknown_ordinal: _ } => true,
176 _ => false,
177 }
178 }
179}
180
181#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
183pub enum DataPlaneType {
184 EthernetDevice,
185 GenericNetworkDevice,
186 #[doc(hidden)]
187 __SourceBreaking {
188 unknown_ordinal: u8,
189 },
190}
191
192#[macro_export]
194macro_rules! DataPlaneTypeUnknown {
195 () => {
196 _
197 };
198}
199
200impl DataPlaneType {
201 #[inline]
202 pub fn from_primitive(prim: u8) -> Option<Self> {
203 match prim {
204 1 => Some(Self::EthernetDevice),
205 2 => Some(Self::GenericNetworkDevice),
206 _ => None,
207 }
208 }
209
210 #[inline]
211 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
212 match prim {
213 1 => Self::EthernetDevice,
214 2 => Self::GenericNetworkDevice,
215 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
216 }
217 }
218
219 #[inline]
220 pub fn unknown() -> Self {
221 Self::__SourceBreaking { unknown_ordinal: 0xff }
222 }
223
224 #[inline]
225 pub const fn into_primitive(self) -> u8 {
226 match self {
227 Self::EthernetDevice => 1,
228 Self::GenericNetworkDevice => 2,
229 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
230 }
231 }
232
233 #[inline]
234 pub fn is_unknown(&self) -> bool {
235 match self {
236 Self::__SourceBreaking { unknown_ordinal: _ } => true,
237 _ => false,
238 }
239 }
240}
241
242#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
245#[repr(u8)]
246pub enum GuardInterval {
247 LongGi = 1,
248 ShortGi = 2,
249}
250
251impl GuardInterval {
252 #[inline]
253 pub fn from_primitive(prim: u8) -> Option<Self> {
254 match prim {
255 1 => Some(Self::LongGi),
256 2 => Some(Self::ShortGi),
257 _ => None,
258 }
259 }
260
261 #[inline]
262 pub const fn into_primitive(self) -> u8 {
263 self as u8
264 }
265}
266
267#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
269pub enum MacImplementationType {
270 Softmac,
271 Fullmac,
272 #[doc(hidden)]
273 __SourceBreaking {
274 unknown_ordinal: u8,
275 },
276}
277
278#[macro_export]
280macro_rules! MacImplementationTypeUnknown {
281 () => {
282 _
283 };
284}
285
286impl MacImplementationType {
287 #[inline]
288 pub fn from_primitive(prim: u8) -> Option<Self> {
289 match prim {
290 1 => Some(Self::Softmac),
291 2 => Some(Self::Fullmac),
292 _ => None,
293 }
294 }
295
296 #[inline]
297 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
298 match prim {
299 1 => Self::Softmac,
300 2 => Self::Fullmac,
301 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
302 }
303 }
304
305 #[inline]
306 pub fn unknown() -> Self {
307 Self::__SourceBreaking { unknown_ordinal: 0xff }
308 }
309
310 #[inline]
311 pub const fn into_primitive(self) -> u8 {
312 match self {
313 Self::Softmac => 1,
314 Self::Fullmac => 2,
315 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
316 }
317 }
318
319 #[inline]
320 pub fn is_unknown(&self) -> bool {
321 match self {
322 Self::__SourceBreaking { unknown_ordinal: _ } => true,
323 _ => false,
324 }
325 }
326}
327
328#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
329#[repr(u32)]
330pub enum PowerSaveType {
331 PsModeUltraLowPower = 0,
332 PsModeLowPower = 1,
333 PsModeBalanced = 2,
334 PsModePerformance = 3,
335}
336
337impl PowerSaveType {
338 #[inline]
339 pub fn from_primitive(prim: u32) -> Option<Self> {
340 match prim {
341 0 => Some(Self::PsModeUltraLowPower),
342 1 => Some(Self::PsModeLowPower),
343 2 => Some(Self::PsModeBalanced),
344 3 => Some(Self::PsModePerformance),
345 _ => None,
346 }
347 }
348
349 #[inline]
350 pub const fn into_primitive(self) -> u32 {
351 self as u32
352 }
353}
354
355#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
356#[repr(u32)]
357pub enum ScanType {
358 Active = 1,
359 Passive = 2,
360}
361
362impl ScanType {
363 #[inline]
364 pub fn from_primitive(prim: u32) -> Option<Self> {
365 match prim {
366 1 => Some(Self::Active),
367 2 => Some(Self::Passive),
368 _ => None,
369 }
370 }
371
372 #[inline]
373 pub const fn into_primitive(self) -> u32 {
374 self as u32
375 }
376}
377
378#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
379pub enum WlanKeyType {
380 Pairwise,
381 Group,
382 Igtk,
383 Peer,
384 #[doc(hidden)]
385 __SourceBreaking {
386 unknown_ordinal: u8,
387 },
388}
389
390#[macro_export]
392macro_rules! WlanKeyTypeUnknown {
393 () => {
394 _
395 };
396}
397
398impl WlanKeyType {
399 #[inline]
400 pub fn from_primitive(prim: u8) -> Option<Self> {
401 match prim {
402 1 => Some(Self::Pairwise),
403 2 => Some(Self::Group),
404 3 => Some(Self::Igtk),
405 4 => Some(Self::Peer),
406 _ => None,
407 }
408 }
409
410 #[inline]
411 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
412 match prim {
413 1 => Self::Pairwise,
414 2 => Self::Group,
415 3 => Self::Igtk,
416 4 => Self::Peer,
417 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
418 }
419 }
420
421 #[inline]
422 pub fn unknown() -> Self {
423 Self::__SourceBreaking { unknown_ordinal: 0xff }
424 }
425
426 #[inline]
427 pub const fn into_primitive(self) -> u8 {
428 match self {
429 Self::Pairwise => 1,
430 Self::Group => 2,
431 Self::Igtk => 3,
432 Self::Peer => 4,
433 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
434 }
435 }
436
437 #[inline]
438 pub fn is_unknown(&self) -> bool {
439 match self {
440 Self::__SourceBreaking { unknown_ordinal: _ } => true,
441 _ => false,
442 }
443 }
444}
445
446#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
447pub enum WlanMacRole {
448 Client,
449 Ap,
450 Mesh,
451 #[doc(hidden)]
452 __SourceBreaking {
453 unknown_ordinal: u32,
454 },
455}
456
457#[macro_export]
459macro_rules! WlanMacRoleUnknown {
460 () => {
461 _
462 };
463}
464
465impl WlanMacRole {
466 #[inline]
467 pub fn from_primitive(prim: u32) -> Option<Self> {
468 match prim {
469 1 => Some(Self::Client),
470 2 => Some(Self::Ap),
471 3 => Some(Self::Mesh),
472 _ => None,
473 }
474 }
475
476 #[inline]
477 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
478 match prim {
479 1 => Self::Client,
480 2 => Self::Ap,
481 3 => Self::Mesh,
482 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
483 }
484 }
485
486 #[inline]
487 pub fn unknown() -> Self {
488 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
489 }
490
491 #[inline]
492 pub const fn into_primitive(self) -> u32 {
493 match self {
494 Self::Client => 1,
495 Self::Ap => 2,
496 Self::Mesh => 3,
497 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
498 }
499 }
500
501 #[inline]
502 pub fn is_unknown(&self) -> bool {
503 match self {
504 Self::__SourceBreaking { unknown_ordinal: _ } => true,
505 _ => false,
506 }
507 }
508}
509
510#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
511pub enum WlanPhyType {
512 Dsss,
513 Hr,
514 Ofdm,
515 Erp,
516 Ht,
517 Dmg,
518 Vht,
519 Tvht,
520 S1G,
521 Cdmg,
522 Cmmg,
523 He,
524 #[doc(hidden)]
525 __SourceBreaking {
526 unknown_ordinal: u32,
527 },
528}
529
530#[macro_export]
532macro_rules! WlanPhyTypeUnknown {
533 () => {
534 _
535 };
536}
537
538impl WlanPhyType {
539 #[inline]
540 pub fn from_primitive(prim: u32) -> Option<Self> {
541 match prim {
542 1 => Some(Self::Dsss),
543 2 => Some(Self::Hr),
544 3 => Some(Self::Ofdm),
545 4 => Some(Self::Erp),
546 5 => Some(Self::Ht),
547 6 => Some(Self::Dmg),
548 7 => Some(Self::Vht),
549 8 => Some(Self::Tvht),
550 9 => Some(Self::S1G),
551 10 => Some(Self::Cdmg),
552 11 => Some(Self::Cmmg),
553 12 => Some(Self::He),
554 _ => None,
555 }
556 }
557
558 #[inline]
559 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
560 match prim {
561 1 => Self::Dsss,
562 2 => Self::Hr,
563 3 => Self::Ofdm,
564 4 => Self::Erp,
565 5 => Self::Ht,
566 6 => Self::Dmg,
567 7 => Self::Vht,
568 8 => Self::Tvht,
569 9 => Self::S1G,
570 10 => Self::Cdmg,
571 11 => Self::Cmmg,
572 12 => Self::He,
573 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
574 }
575 }
576
577 #[inline]
578 pub fn unknown() -> Self {
579 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
580 }
581
582 #[inline]
583 pub const fn into_primitive(self) -> u32 {
584 match self {
585 Self::Dsss => 1,
586 Self::Hr => 2,
587 Self::Ofdm => 3,
588 Self::Erp => 4,
589 Self::Ht => 5,
590 Self::Dmg => 6,
591 Self::Vht => 7,
592 Self::Tvht => 8,
593 Self::S1G => 9,
594 Self::Cdmg => 10,
595 Self::Cmmg => 11,
596 Self::He => 12,
597 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
598 }
599 }
600
601 #[inline]
602 pub fn is_unknown(&self) -> bool {
603 match self {
604 Self::__SourceBreaking { unknown_ordinal: _ } => true,
605 _ => false,
606 }
607 }
608}
609
610#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
611#[repr(u32)]
612pub enum WlanSoftmacHardwareCapabilityBit {
613 ShortPreamble = 32,
614 SpectrumMgmt = 256,
615 Qos = 512,
616 ShortSlotTime = 1024,
617 RadioMsmt = 4096,
618 SimultaneousClientAp = 65536,
619}
620
621impl WlanSoftmacHardwareCapabilityBit {
622 #[inline]
623 pub fn from_primitive(prim: u32) -> Option<Self> {
624 match prim {
625 32 => Some(Self::ShortPreamble),
626 256 => Some(Self::SpectrumMgmt),
627 512 => Some(Self::Qos),
628 1024 => Some(Self::ShortSlotTime),
629 4096 => Some(Self::RadioMsmt),
630 65536 => Some(Self::SimultaneousClientAp),
631 _ => None,
632 }
633 }
634
635 #[inline]
636 pub const fn into_primitive(self) -> u32 {
637 self as u32
638 }
639}
640
641#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
643pub enum WlanTxResultCode {
644 Failed,
646 Success,
648 #[doc(hidden)]
649 __SourceBreaking { unknown_ordinal: u8 },
650}
651
652#[macro_export]
654macro_rules! WlanTxResultCodeUnknown {
655 () => {
656 _
657 };
658}
659
660impl WlanTxResultCode {
661 #[inline]
662 pub fn from_primitive(prim: u8) -> Option<Self> {
663 match prim {
664 0 => Some(Self::Failed),
665 1 => Some(Self::Success),
666 _ => None,
667 }
668 }
669
670 #[inline]
671 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
672 match prim {
673 0 => Self::Failed,
674 1 => Self::Success,
675 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
676 }
677 }
678
679 #[inline]
680 pub fn unknown() -> Self {
681 Self::__SourceBreaking { unknown_ordinal: 0xff }
682 }
683
684 #[inline]
685 pub const fn into_primitive(self) -> u8 {
686 match self {
687 Self::Failed => 0,
688 Self::Success => 1,
689 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
690 }
691 }
692
693 #[inline]
694 pub fn is_unknown(&self) -> bool {
695 match self {
696 Self::__SourceBreaking { unknown_ordinal: _ } => true,
697 _ => false,
698 }
699 }
700}
701
702#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
704pub struct BandRssiAdjustment {
705 pub band: fidl_fuchsia_wlan_ieee80211__common::WlanBand,
706 pub rssi_adjustment: i8,
707}
708
709impl fidl::Persistable for BandRssiAdjustment {}
710
711#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
714#[repr(C)]
715pub struct ScheduledScanPlan {
716 pub interval: u32,
718 pub iterations: u32,
720}
721
722impl fidl::Persistable for ScheduledScanPlan {}
723
724#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
725pub struct WlanChannel {
726 pub primary: u8,
727 pub cbw: ChannelBandwidth,
728 pub secondary80: u8,
729}
730
731impl fidl::Persistable for WlanChannel {}
732
733#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
736pub struct WlanTxResult {
737 pub tx_result_entry: [WlanTxResultEntry; 8],
740 pub peer_addr: [u8; 6],
742 pub result_code: WlanTxResultCode,
743}
744
745impl fidl::Persistable for WlanTxResult {}
746
747#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
750#[repr(C)]
751pub struct WlanTxResultEntry {
752 pub tx_vector_idx: u16,
753 pub attempts: u8,
756}
757
758impl fidl::Persistable for WlanTxResultEntry {}
759
760#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
762pub struct WlanWmmAccessCategoryParameters {
763 pub ecw_min: u8,
764 pub ecw_max: u8,
765 pub aifsn: u8,
766 pub txop_limit: u16,
767 pub acm: bool,
768}
769
770impl fidl::Persistable for WlanWmmAccessCategoryParameters {}
771
772#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
773pub struct WlanWmmParameters {
774 pub apsd: bool,
775 pub ac_be_params: WlanWmmAccessCategoryParameters,
776 pub ac_bk_params: WlanWmmAccessCategoryParameters,
777 pub ac_vi_params: WlanWmmAccessCategoryParameters,
778 pub ac_vo_params: WlanWmmAccessCategoryParameters,
779}
780
781impl fidl::Persistable for WlanWmmParameters {}
782
783#[derive(Clone, Debug, Default, PartialEq)]
785pub struct ApfPacketFilterSupport {
786 pub supported: Option<bool>,
787 pub version: Option<i32>,
789 pub max_filter_length: Option<i32>,
791 #[doc(hidden)]
792 pub __source_breaking: fidl::marker::SourceBreaking,
793}
794
795impl fidl::Persistable for ApfPacketFilterSupport {}
796
797#[derive(Clone, Debug, Default, PartialEq)]
801pub struct DataPlaneExtension {
802 pub data_plane_type: Option<DataPlaneType>,
803 #[doc(hidden)]
804 pub __source_breaking: fidl::marker::SourceBreaking,
805}
806
807impl fidl::Persistable for DataPlaneExtension {}
808
809#[derive(Clone, Debug, Default, PartialEq)]
813pub struct DeviceExtension {
814 pub is_synthetic: Option<bool>,
818 pub mac_implementation_type: Option<MacImplementationType>,
820 pub tx_status_report_supported: Option<bool>,
822 #[doc(hidden)]
823 pub __source_breaking: fidl::marker::SourceBreaking,
824}
825
826impl fidl::Persistable for DeviceExtension {}
827
828#[derive(Clone, Debug, Default, PartialEq)]
832pub struct DfsFeature {
833 pub supported: Option<bool>,
838 #[doc(hidden)]
839 pub __source_breaking: fidl::marker::SourceBreaking,
840}
841
842impl fidl::Persistable for DfsFeature {}
843
844#[derive(Clone, Debug, Default, PartialEq)]
847pub struct DiscoverySupport {
848 pub scan_offload: Option<ScanOffloadExtension>,
849 pub probe_response_offload: Option<ProbeResponseOffloadExtension>,
850 #[doc(hidden)]
851 pub __source_breaking: fidl::marker::SourceBreaking,
852}
853
854impl fidl::Persistable for DiscoverySupport {}
855
856#[derive(Clone, Debug, Default, PartialEq)]
859pub struct JoinBssRequest {
860 pub bssid: Option<[u8; 6]>,
861 pub bss_type: Option<BssType>,
862 pub remote: Option<bool>,
863 pub beacon_period: Option<u16>,
864 #[doc(hidden)]
865 pub __source_breaking: fidl::marker::SourceBreaking,
866}
867
868impl fidl::Persistable for JoinBssRequest {}
869
870#[derive(Clone, Debug, Default, PartialEq)]
873pub struct MacSublayerSupport {
874 pub rate_selection_offload: Option<RateSelectionOffloadExtension>,
875 pub data_plane: Option<DataPlaneExtension>,
876 pub device: Option<DeviceExtension>,
877 #[doc(hidden)]
878 pub __source_breaking: fidl::marker::SourceBreaking,
879}
880
881impl fidl::Persistable for MacSublayerSupport {}
882
883#[derive(Clone, Debug, Default, PartialEq)]
887pub struct MfpFeature {
888 pub supported: Option<bool>,
889 #[doc(hidden)]
890 pub __source_breaking: fidl::marker::SourceBreaking,
891}
892
893impl fidl::Persistable for MfpFeature {}
894
895#[derive(Clone, Debug, Default, PartialEq)]
899pub struct OweFeature {
900 pub supported: Option<bool>,
901 #[doc(hidden)]
902 pub __source_breaking: fidl::marker::SourceBreaking,
903}
904
905impl fidl::Persistable for OweFeature {}
906
907#[derive(Clone, Debug, Default, PartialEq)]
911pub struct ProbeResponseOffloadExtension {
912 pub supported: Option<bool>,
914 #[doc(hidden)]
915 pub __source_breaking: fidl::marker::SourceBreaking,
916}
917
918impl fidl::Persistable for ProbeResponseOffloadExtension {}
919
920#[derive(Clone, Debug, Default, PartialEq)]
924pub struct RateSelectionOffloadExtension {
925 pub supported: Option<bool>,
927 #[doc(hidden)]
928 pub __source_breaking: fidl::marker::SourceBreaking,
929}
930
931impl fidl::Persistable for RateSelectionOffloadExtension {}
932
933#[derive(Clone, Debug, Default, PartialEq)]
937pub struct SaeFeature {
938 pub driver_handler_supported: Option<bool>,
940 pub sme_handler_supported: Option<bool>,
942 pub hash_to_element_supported: Option<bool>,
946 #[doc(hidden)]
947 pub __source_breaking: fidl::marker::SourceBreaking,
948}
949
950impl fidl::Persistable for SaeFeature {}
951
952#[derive(Clone, Debug, Default, PartialEq)]
956pub struct ScanOffloadExtension {
957 pub supported: Option<bool>,
959 pub scan_cancel_supported: Option<bool>,
960 #[doc(hidden)]
961 pub __source_breaking: fidl::marker::SourceBreaking,
962}
963
964impl fidl::Persistable for ScanOffloadExtension {}
965
966#[derive(Clone, Debug, Default, PartialEq)]
973pub struct ScheduledScanMatchSet {
974 pub ssid: Option<Vec<u8>>,
976 pub bssid: Option<[u8; 6]>,
978 pub min_rssi_threshold: Option<i8>,
980 pub relative_rssi_threshold: Option<i8>,
984 pub band_rssi_adjustments: Option<Vec<BandRssiAdjustment>>,
987 #[doc(hidden)]
988 pub __source_breaking: fidl::marker::SourceBreaking,
989}
990
991impl fidl::Persistable for ScheduledScanMatchSet {}
992
993#[derive(Clone, Debug, Default, PartialEq)]
995pub struct ScheduledScanRequest {
996 pub scan_plans: Option<Vec<ScheduledScanPlan>>,
999 pub ssids: Option<Vec<Vec<u8>>>,
1005 pub frequencies: Option<Vec<u32>>,
1008 pub min_rssi_threshold: Option<i8>,
1010 pub relative_rssi_threshold: Option<i8>,
1014 pub band_rssi_adjustments: Option<Vec<BandRssiAdjustment>>,
1017 pub match_sets: Option<Vec<ScheduledScanMatchSet>>,
1022 #[doc(hidden)]
1023 pub __source_breaking: fidl::marker::SourceBreaking,
1024}
1025
1026impl fidl::Persistable for ScheduledScanRequest {}
1027
1028#[derive(Clone, Debug, Default, PartialEq)]
1031pub struct SecuritySupport {
1032 pub sae: Option<SaeFeature>,
1033 pub mfp: Option<MfpFeature>,
1034 pub owe: Option<OweFeature>,
1035 #[doc(hidden)]
1036 pub __source_breaking: fidl::marker::SourceBreaking,
1037}
1038
1039impl fidl::Persistable for SecuritySupport {}
1040
1041#[derive(Clone, Debug, Default, PartialEq)]
1044pub struct SpectrumManagementSupport {
1045 pub dfs: Option<DfsFeature>,
1046 #[doc(hidden)]
1047 pub __source_breaking: fidl::marker::SourceBreaking,
1048}
1049
1050impl fidl::Persistable for SpectrumManagementSupport {}
1051
1052mod internal {
1053 use super::*;
1054 unsafe impl fidl::encoding::TypeMarker for BssType {
1055 type Owned = Self;
1056
1057 #[inline(always)]
1058 fn inline_align(_context: fidl::encoding::Context) -> usize {
1059 std::mem::align_of::<u32>()
1060 }
1061
1062 #[inline(always)]
1063 fn inline_size(_context: fidl::encoding::Context) -> usize {
1064 std::mem::size_of::<u32>()
1065 }
1066
1067 #[inline(always)]
1068 fn encode_is_copy() -> bool {
1069 false
1070 }
1071
1072 #[inline(always)]
1073 fn decode_is_copy() -> bool {
1074 false
1075 }
1076 }
1077
1078 impl fidl::encoding::ValueTypeMarker for BssType {
1079 type Borrowed<'a> = Self;
1080 #[inline(always)]
1081 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1082 *value
1083 }
1084 }
1085
1086 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BssType {
1087 #[inline]
1088 unsafe fn encode(
1089 self,
1090 encoder: &mut fidl::encoding::Encoder<'_, D>,
1091 offset: usize,
1092 _depth: fidl::encoding::Depth,
1093 ) -> fidl::Result<()> {
1094 encoder.debug_check_bounds::<Self>(offset);
1095 encoder.write_num(self.into_primitive(), offset);
1096 Ok(())
1097 }
1098 }
1099
1100 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssType {
1101 #[inline(always)]
1102 fn new_empty() -> Self {
1103 Self::unknown()
1104 }
1105
1106 #[inline]
1107 unsafe fn decode(
1108 &mut self,
1109 decoder: &mut fidl::encoding::Decoder<'_, D>,
1110 offset: usize,
1111 _depth: fidl::encoding::Depth,
1112 ) -> fidl::Result<()> {
1113 decoder.debug_check_bounds::<Self>(offset);
1114 let prim = decoder.read_num::<u32>(offset);
1115
1116 *self = Self::from_primitive_allow_unknown(prim);
1117 Ok(())
1118 }
1119 }
1120 unsafe impl fidl::encoding::TypeMarker for ChannelBandwidth {
1121 type Owned = Self;
1122
1123 #[inline(always)]
1124 fn inline_align(_context: fidl::encoding::Context) -> usize {
1125 std::mem::align_of::<u32>()
1126 }
1127
1128 #[inline(always)]
1129 fn inline_size(_context: fidl::encoding::Context) -> usize {
1130 std::mem::size_of::<u32>()
1131 }
1132
1133 #[inline(always)]
1134 fn encode_is_copy() -> bool {
1135 false
1136 }
1137
1138 #[inline(always)]
1139 fn decode_is_copy() -> bool {
1140 false
1141 }
1142 }
1143
1144 impl fidl::encoding::ValueTypeMarker for ChannelBandwidth {
1145 type Borrowed<'a> = Self;
1146 #[inline(always)]
1147 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1148 *value
1149 }
1150 }
1151
1152 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1153 for ChannelBandwidth
1154 {
1155 #[inline]
1156 unsafe fn encode(
1157 self,
1158 encoder: &mut fidl::encoding::Encoder<'_, D>,
1159 offset: usize,
1160 _depth: fidl::encoding::Depth,
1161 ) -> fidl::Result<()> {
1162 encoder.debug_check_bounds::<Self>(offset);
1163 encoder.write_num(self.into_primitive(), offset);
1164 Ok(())
1165 }
1166 }
1167
1168 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelBandwidth {
1169 #[inline(always)]
1170 fn new_empty() -> Self {
1171 Self::unknown()
1172 }
1173
1174 #[inline]
1175 unsafe fn decode(
1176 &mut self,
1177 decoder: &mut fidl::encoding::Decoder<'_, D>,
1178 offset: usize,
1179 _depth: fidl::encoding::Depth,
1180 ) -> fidl::Result<()> {
1181 decoder.debug_check_bounds::<Self>(offset);
1182 let prim = decoder.read_num::<u32>(offset);
1183
1184 *self = Self::from_primitive_allow_unknown(prim);
1185 Ok(())
1186 }
1187 }
1188 unsafe impl fidl::encoding::TypeMarker for DataPlaneType {
1189 type Owned = Self;
1190
1191 #[inline(always)]
1192 fn inline_align(_context: fidl::encoding::Context) -> usize {
1193 std::mem::align_of::<u8>()
1194 }
1195
1196 #[inline(always)]
1197 fn inline_size(_context: fidl::encoding::Context) -> usize {
1198 std::mem::size_of::<u8>()
1199 }
1200
1201 #[inline(always)]
1202 fn encode_is_copy() -> bool {
1203 false
1204 }
1205
1206 #[inline(always)]
1207 fn decode_is_copy() -> bool {
1208 false
1209 }
1210 }
1211
1212 impl fidl::encoding::ValueTypeMarker for DataPlaneType {
1213 type Borrowed<'a> = Self;
1214 #[inline(always)]
1215 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1216 *value
1217 }
1218 }
1219
1220 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPlaneType {
1221 #[inline]
1222 unsafe fn encode(
1223 self,
1224 encoder: &mut fidl::encoding::Encoder<'_, D>,
1225 offset: usize,
1226 _depth: fidl::encoding::Depth,
1227 ) -> fidl::Result<()> {
1228 encoder.debug_check_bounds::<Self>(offset);
1229 encoder.write_num(self.into_primitive(), offset);
1230 Ok(())
1231 }
1232 }
1233
1234 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneType {
1235 #[inline(always)]
1236 fn new_empty() -> Self {
1237 Self::unknown()
1238 }
1239
1240 #[inline]
1241 unsafe fn decode(
1242 &mut self,
1243 decoder: &mut fidl::encoding::Decoder<'_, D>,
1244 offset: usize,
1245 _depth: fidl::encoding::Depth,
1246 ) -> fidl::Result<()> {
1247 decoder.debug_check_bounds::<Self>(offset);
1248 let prim = decoder.read_num::<u8>(offset);
1249
1250 *self = Self::from_primitive_allow_unknown(prim);
1251 Ok(())
1252 }
1253 }
1254 unsafe impl fidl::encoding::TypeMarker for GuardInterval {
1255 type Owned = Self;
1256
1257 #[inline(always)]
1258 fn inline_align(_context: fidl::encoding::Context) -> usize {
1259 std::mem::align_of::<u8>()
1260 }
1261
1262 #[inline(always)]
1263 fn inline_size(_context: fidl::encoding::Context) -> usize {
1264 std::mem::size_of::<u8>()
1265 }
1266
1267 #[inline(always)]
1268 fn encode_is_copy() -> bool {
1269 true
1270 }
1271
1272 #[inline(always)]
1273 fn decode_is_copy() -> bool {
1274 false
1275 }
1276 }
1277
1278 impl fidl::encoding::ValueTypeMarker for GuardInterval {
1279 type Borrowed<'a> = Self;
1280 #[inline(always)]
1281 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1282 *value
1283 }
1284 }
1285
1286 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuardInterval {
1287 #[inline]
1288 unsafe fn encode(
1289 self,
1290 encoder: &mut fidl::encoding::Encoder<'_, D>,
1291 offset: usize,
1292 _depth: fidl::encoding::Depth,
1293 ) -> fidl::Result<()> {
1294 encoder.debug_check_bounds::<Self>(offset);
1295 encoder.write_num(self.into_primitive(), offset);
1296 Ok(())
1297 }
1298 }
1299
1300 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuardInterval {
1301 #[inline(always)]
1302 fn new_empty() -> Self {
1303 Self::LongGi
1304 }
1305
1306 #[inline]
1307 unsafe fn decode(
1308 &mut self,
1309 decoder: &mut fidl::encoding::Decoder<'_, D>,
1310 offset: usize,
1311 _depth: fidl::encoding::Depth,
1312 ) -> fidl::Result<()> {
1313 decoder.debug_check_bounds::<Self>(offset);
1314 let prim = decoder.read_num::<u8>(offset);
1315
1316 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1317 Ok(())
1318 }
1319 }
1320 unsafe impl fidl::encoding::TypeMarker for MacImplementationType {
1321 type Owned = Self;
1322
1323 #[inline(always)]
1324 fn inline_align(_context: fidl::encoding::Context) -> usize {
1325 std::mem::align_of::<u8>()
1326 }
1327
1328 #[inline(always)]
1329 fn inline_size(_context: fidl::encoding::Context) -> usize {
1330 std::mem::size_of::<u8>()
1331 }
1332
1333 #[inline(always)]
1334 fn encode_is_copy() -> bool {
1335 false
1336 }
1337
1338 #[inline(always)]
1339 fn decode_is_copy() -> bool {
1340 false
1341 }
1342 }
1343
1344 impl fidl::encoding::ValueTypeMarker for MacImplementationType {
1345 type Borrowed<'a> = Self;
1346 #[inline(always)]
1347 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1348 *value
1349 }
1350 }
1351
1352 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1353 for MacImplementationType
1354 {
1355 #[inline]
1356 unsafe fn encode(
1357 self,
1358 encoder: &mut fidl::encoding::Encoder<'_, D>,
1359 offset: usize,
1360 _depth: fidl::encoding::Depth,
1361 ) -> fidl::Result<()> {
1362 encoder.debug_check_bounds::<Self>(offset);
1363 encoder.write_num(self.into_primitive(), offset);
1364 Ok(())
1365 }
1366 }
1367
1368 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacImplementationType {
1369 #[inline(always)]
1370 fn new_empty() -> Self {
1371 Self::unknown()
1372 }
1373
1374 #[inline]
1375 unsafe fn decode(
1376 &mut self,
1377 decoder: &mut fidl::encoding::Decoder<'_, D>,
1378 offset: usize,
1379 _depth: fidl::encoding::Depth,
1380 ) -> fidl::Result<()> {
1381 decoder.debug_check_bounds::<Self>(offset);
1382 let prim = decoder.read_num::<u8>(offset);
1383
1384 *self = Self::from_primitive_allow_unknown(prim);
1385 Ok(())
1386 }
1387 }
1388 unsafe impl fidl::encoding::TypeMarker for PowerSaveType {
1389 type Owned = Self;
1390
1391 #[inline(always)]
1392 fn inline_align(_context: fidl::encoding::Context) -> usize {
1393 std::mem::align_of::<u32>()
1394 }
1395
1396 #[inline(always)]
1397 fn inline_size(_context: fidl::encoding::Context) -> usize {
1398 std::mem::size_of::<u32>()
1399 }
1400
1401 #[inline(always)]
1402 fn encode_is_copy() -> bool {
1403 true
1404 }
1405
1406 #[inline(always)]
1407 fn decode_is_copy() -> bool {
1408 false
1409 }
1410 }
1411
1412 impl fidl::encoding::ValueTypeMarker for PowerSaveType {
1413 type Borrowed<'a> = Self;
1414 #[inline(always)]
1415 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1416 *value
1417 }
1418 }
1419
1420 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerSaveType {
1421 #[inline]
1422 unsafe fn encode(
1423 self,
1424 encoder: &mut fidl::encoding::Encoder<'_, D>,
1425 offset: usize,
1426 _depth: fidl::encoding::Depth,
1427 ) -> fidl::Result<()> {
1428 encoder.debug_check_bounds::<Self>(offset);
1429 encoder.write_num(self.into_primitive(), offset);
1430 Ok(())
1431 }
1432 }
1433
1434 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerSaveType {
1435 #[inline(always)]
1436 fn new_empty() -> Self {
1437 Self::PsModeUltraLowPower
1438 }
1439
1440 #[inline]
1441 unsafe fn decode(
1442 &mut self,
1443 decoder: &mut fidl::encoding::Decoder<'_, D>,
1444 offset: usize,
1445 _depth: fidl::encoding::Depth,
1446 ) -> fidl::Result<()> {
1447 decoder.debug_check_bounds::<Self>(offset);
1448 let prim = decoder.read_num::<u32>(offset);
1449
1450 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1451 Ok(())
1452 }
1453 }
1454 unsafe impl fidl::encoding::TypeMarker for ScanType {
1455 type Owned = Self;
1456
1457 #[inline(always)]
1458 fn inline_align(_context: fidl::encoding::Context) -> usize {
1459 std::mem::align_of::<u32>()
1460 }
1461
1462 #[inline(always)]
1463 fn inline_size(_context: fidl::encoding::Context) -> usize {
1464 std::mem::size_of::<u32>()
1465 }
1466
1467 #[inline(always)]
1468 fn encode_is_copy() -> bool {
1469 true
1470 }
1471
1472 #[inline(always)]
1473 fn decode_is_copy() -> bool {
1474 false
1475 }
1476 }
1477
1478 impl fidl::encoding::ValueTypeMarker for ScanType {
1479 type Borrowed<'a> = Self;
1480 #[inline(always)]
1481 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1482 *value
1483 }
1484 }
1485
1486 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanType {
1487 #[inline]
1488 unsafe fn encode(
1489 self,
1490 encoder: &mut fidl::encoding::Encoder<'_, D>,
1491 offset: usize,
1492 _depth: fidl::encoding::Depth,
1493 ) -> fidl::Result<()> {
1494 encoder.debug_check_bounds::<Self>(offset);
1495 encoder.write_num(self.into_primitive(), offset);
1496 Ok(())
1497 }
1498 }
1499
1500 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanType {
1501 #[inline(always)]
1502 fn new_empty() -> Self {
1503 Self::Active
1504 }
1505
1506 #[inline]
1507 unsafe fn decode(
1508 &mut self,
1509 decoder: &mut fidl::encoding::Decoder<'_, D>,
1510 offset: usize,
1511 _depth: fidl::encoding::Depth,
1512 ) -> fidl::Result<()> {
1513 decoder.debug_check_bounds::<Self>(offset);
1514 let prim = decoder.read_num::<u32>(offset);
1515
1516 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1517 Ok(())
1518 }
1519 }
1520 unsafe impl fidl::encoding::TypeMarker for WlanKeyType {
1521 type Owned = Self;
1522
1523 #[inline(always)]
1524 fn inline_align(_context: fidl::encoding::Context) -> usize {
1525 std::mem::align_of::<u8>()
1526 }
1527
1528 #[inline(always)]
1529 fn inline_size(_context: fidl::encoding::Context) -> usize {
1530 std::mem::size_of::<u8>()
1531 }
1532
1533 #[inline(always)]
1534 fn encode_is_copy() -> bool {
1535 false
1536 }
1537
1538 #[inline(always)]
1539 fn decode_is_copy() -> bool {
1540 false
1541 }
1542 }
1543
1544 impl fidl::encoding::ValueTypeMarker for WlanKeyType {
1545 type Borrowed<'a> = Self;
1546 #[inline(always)]
1547 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1548 *value
1549 }
1550 }
1551
1552 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanKeyType {
1553 #[inline]
1554 unsafe fn encode(
1555 self,
1556 encoder: &mut fidl::encoding::Encoder<'_, D>,
1557 offset: usize,
1558 _depth: fidl::encoding::Depth,
1559 ) -> fidl::Result<()> {
1560 encoder.debug_check_bounds::<Self>(offset);
1561 encoder.write_num(self.into_primitive(), offset);
1562 Ok(())
1563 }
1564 }
1565
1566 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyType {
1567 #[inline(always)]
1568 fn new_empty() -> Self {
1569 Self::unknown()
1570 }
1571
1572 #[inline]
1573 unsafe fn decode(
1574 &mut self,
1575 decoder: &mut fidl::encoding::Decoder<'_, D>,
1576 offset: usize,
1577 _depth: fidl::encoding::Depth,
1578 ) -> fidl::Result<()> {
1579 decoder.debug_check_bounds::<Self>(offset);
1580 let prim = decoder.read_num::<u8>(offset);
1581
1582 *self = Self::from_primitive_allow_unknown(prim);
1583 Ok(())
1584 }
1585 }
1586 unsafe impl fidl::encoding::TypeMarker for WlanMacRole {
1587 type Owned = Self;
1588
1589 #[inline(always)]
1590 fn inline_align(_context: fidl::encoding::Context) -> usize {
1591 std::mem::align_of::<u32>()
1592 }
1593
1594 #[inline(always)]
1595 fn inline_size(_context: fidl::encoding::Context) -> usize {
1596 std::mem::size_of::<u32>()
1597 }
1598
1599 #[inline(always)]
1600 fn encode_is_copy() -> bool {
1601 false
1602 }
1603
1604 #[inline(always)]
1605 fn decode_is_copy() -> bool {
1606 false
1607 }
1608 }
1609
1610 impl fidl::encoding::ValueTypeMarker for WlanMacRole {
1611 type Borrowed<'a> = Self;
1612 #[inline(always)]
1613 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1614 *value
1615 }
1616 }
1617
1618 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanMacRole {
1619 #[inline]
1620 unsafe fn encode(
1621 self,
1622 encoder: &mut fidl::encoding::Encoder<'_, D>,
1623 offset: usize,
1624 _depth: fidl::encoding::Depth,
1625 ) -> fidl::Result<()> {
1626 encoder.debug_check_bounds::<Self>(offset);
1627 encoder.write_num(self.into_primitive(), offset);
1628 Ok(())
1629 }
1630 }
1631
1632 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanMacRole {
1633 #[inline(always)]
1634 fn new_empty() -> Self {
1635 Self::unknown()
1636 }
1637
1638 #[inline]
1639 unsafe fn decode(
1640 &mut self,
1641 decoder: &mut fidl::encoding::Decoder<'_, D>,
1642 offset: usize,
1643 _depth: fidl::encoding::Depth,
1644 ) -> fidl::Result<()> {
1645 decoder.debug_check_bounds::<Self>(offset);
1646 let prim = decoder.read_num::<u32>(offset);
1647
1648 *self = Self::from_primitive_allow_unknown(prim);
1649 Ok(())
1650 }
1651 }
1652 unsafe impl fidl::encoding::TypeMarker for WlanPhyType {
1653 type Owned = Self;
1654
1655 #[inline(always)]
1656 fn inline_align(_context: fidl::encoding::Context) -> usize {
1657 std::mem::align_of::<u32>()
1658 }
1659
1660 #[inline(always)]
1661 fn inline_size(_context: fidl::encoding::Context) -> usize {
1662 std::mem::size_of::<u32>()
1663 }
1664
1665 #[inline(always)]
1666 fn encode_is_copy() -> bool {
1667 false
1668 }
1669
1670 #[inline(always)]
1671 fn decode_is_copy() -> bool {
1672 false
1673 }
1674 }
1675
1676 impl fidl::encoding::ValueTypeMarker for WlanPhyType {
1677 type Borrowed<'a> = Self;
1678 #[inline(always)]
1679 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1680 *value
1681 }
1682 }
1683
1684 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanPhyType {
1685 #[inline]
1686 unsafe fn encode(
1687 self,
1688 encoder: &mut fidl::encoding::Encoder<'_, D>,
1689 offset: usize,
1690 _depth: fidl::encoding::Depth,
1691 ) -> fidl::Result<()> {
1692 encoder.debug_check_bounds::<Self>(offset);
1693 encoder.write_num(self.into_primitive(), offset);
1694 Ok(())
1695 }
1696 }
1697
1698 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyType {
1699 #[inline(always)]
1700 fn new_empty() -> Self {
1701 Self::unknown()
1702 }
1703
1704 #[inline]
1705 unsafe fn decode(
1706 &mut self,
1707 decoder: &mut fidl::encoding::Decoder<'_, D>,
1708 offset: usize,
1709 _depth: fidl::encoding::Depth,
1710 ) -> fidl::Result<()> {
1711 decoder.debug_check_bounds::<Self>(offset);
1712 let prim = decoder.read_num::<u32>(offset);
1713
1714 *self = Self::from_primitive_allow_unknown(prim);
1715 Ok(())
1716 }
1717 }
1718 unsafe impl fidl::encoding::TypeMarker for WlanSoftmacHardwareCapabilityBit {
1719 type Owned = Self;
1720
1721 #[inline(always)]
1722 fn inline_align(_context: fidl::encoding::Context) -> usize {
1723 std::mem::align_of::<u32>()
1724 }
1725
1726 #[inline(always)]
1727 fn inline_size(_context: fidl::encoding::Context) -> usize {
1728 std::mem::size_of::<u32>()
1729 }
1730
1731 #[inline(always)]
1732 fn encode_is_copy() -> bool {
1733 true
1734 }
1735
1736 #[inline(always)]
1737 fn decode_is_copy() -> bool {
1738 false
1739 }
1740 }
1741
1742 impl fidl::encoding::ValueTypeMarker for WlanSoftmacHardwareCapabilityBit {
1743 type Borrowed<'a> = Self;
1744 #[inline(always)]
1745 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1746 *value
1747 }
1748 }
1749
1750 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1751 for WlanSoftmacHardwareCapabilityBit
1752 {
1753 #[inline]
1754 unsafe fn encode(
1755 self,
1756 encoder: &mut fidl::encoding::Encoder<'_, D>,
1757 offset: usize,
1758 _depth: fidl::encoding::Depth,
1759 ) -> fidl::Result<()> {
1760 encoder.debug_check_bounds::<Self>(offset);
1761 encoder.write_num(self.into_primitive(), offset);
1762 Ok(())
1763 }
1764 }
1765
1766 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1767 for WlanSoftmacHardwareCapabilityBit
1768 {
1769 #[inline(always)]
1770 fn new_empty() -> Self {
1771 Self::ShortPreamble
1772 }
1773
1774 #[inline]
1775 unsafe fn decode(
1776 &mut self,
1777 decoder: &mut fidl::encoding::Decoder<'_, D>,
1778 offset: usize,
1779 _depth: fidl::encoding::Depth,
1780 ) -> fidl::Result<()> {
1781 decoder.debug_check_bounds::<Self>(offset);
1782 let prim = decoder.read_num::<u32>(offset);
1783
1784 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1785 Ok(())
1786 }
1787 }
1788 unsafe impl fidl::encoding::TypeMarker for WlanTxResultCode {
1789 type Owned = Self;
1790
1791 #[inline(always)]
1792 fn inline_align(_context: fidl::encoding::Context) -> usize {
1793 std::mem::align_of::<u8>()
1794 }
1795
1796 #[inline(always)]
1797 fn inline_size(_context: fidl::encoding::Context) -> usize {
1798 std::mem::size_of::<u8>()
1799 }
1800
1801 #[inline(always)]
1802 fn encode_is_copy() -> bool {
1803 false
1804 }
1805
1806 #[inline(always)]
1807 fn decode_is_copy() -> bool {
1808 false
1809 }
1810 }
1811
1812 impl fidl::encoding::ValueTypeMarker for WlanTxResultCode {
1813 type Borrowed<'a> = Self;
1814 #[inline(always)]
1815 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1816 *value
1817 }
1818 }
1819
1820 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1821 for WlanTxResultCode
1822 {
1823 #[inline]
1824 unsafe fn encode(
1825 self,
1826 encoder: &mut fidl::encoding::Encoder<'_, D>,
1827 offset: usize,
1828 _depth: fidl::encoding::Depth,
1829 ) -> fidl::Result<()> {
1830 encoder.debug_check_bounds::<Self>(offset);
1831 encoder.write_num(self.into_primitive(), offset);
1832 Ok(())
1833 }
1834 }
1835
1836 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultCode {
1837 #[inline(always)]
1838 fn new_empty() -> Self {
1839 Self::unknown()
1840 }
1841
1842 #[inline]
1843 unsafe fn decode(
1844 &mut self,
1845 decoder: &mut fidl::encoding::Decoder<'_, D>,
1846 offset: usize,
1847 _depth: fidl::encoding::Depth,
1848 ) -> fidl::Result<()> {
1849 decoder.debug_check_bounds::<Self>(offset);
1850 let prim = decoder.read_num::<u8>(offset);
1851
1852 *self = Self::from_primitive_allow_unknown(prim);
1853 Ok(())
1854 }
1855 }
1856
1857 impl fidl::encoding::ValueTypeMarker for BandRssiAdjustment {
1858 type Borrowed<'a> = &'a Self;
1859 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1860 value
1861 }
1862 }
1863
1864 unsafe impl fidl::encoding::TypeMarker for BandRssiAdjustment {
1865 type Owned = Self;
1866
1867 #[inline(always)]
1868 fn inline_align(_context: fidl::encoding::Context) -> usize {
1869 1
1870 }
1871
1872 #[inline(always)]
1873 fn inline_size(_context: fidl::encoding::Context) -> usize {
1874 2
1875 }
1876 }
1877
1878 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandRssiAdjustment, D>
1879 for &BandRssiAdjustment
1880 {
1881 #[inline]
1882 unsafe fn encode(
1883 self,
1884 encoder: &mut fidl::encoding::Encoder<'_, D>,
1885 offset: usize,
1886 _depth: fidl::encoding::Depth,
1887 ) -> fidl::Result<()> {
1888 encoder.debug_check_bounds::<BandRssiAdjustment>(offset);
1889 fidl::encoding::Encode::<BandRssiAdjustment, D>::encode(
1891 (
1892 <fidl_fuchsia_wlan_ieee80211__common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
1893 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_adjustment),
1894 ),
1895 encoder, offset, _depth
1896 )
1897 }
1898 }
1899 unsafe impl<
1900 D: fidl::encoding::ResourceDialect,
1901 T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanBand, D>,
1902 T1: fidl::encoding::Encode<i8, D>,
1903 > fidl::encoding::Encode<BandRssiAdjustment, D> for (T0, T1)
1904 {
1905 #[inline]
1906 unsafe fn encode(
1907 self,
1908 encoder: &mut fidl::encoding::Encoder<'_, D>,
1909 offset: usize,
1910 depth: fidl::encoding::Depth,
1911 ) -> fidl::Result<()> {
1912 encoder.debug_check_bounds::<BandRssiAdjustment>(offset);
1913 self.0.encode(encoder, offset + 0, depth)?;
1917 self.1.encode(encoder, offset + 1, depth)?;
1918 Ok(())
1919 }
1920 }
1921
1922 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandRssiAdjustment {
1923 #[inline(always)]
1924 fn new_empty() -> Self {
1925 Self {
1926 band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanBand, D),
1927 rssi_adjustment: fidl::new_empty!(i8, D),
1928 }
1929 }
1930
1931 #[inline]
1932 unsafe fn decode(
1933 &mut self,
1934 decoder: &mut fidl::encoding::Decoder<'_, D>,
1935 offset: usize,
1936 _depth: fidl::encoding::Depth,
1937 ) -> fidl::Result<()> {
1938 decoder.debug_check_bounds::<Self>(offset);
1939 fidl::decode!(
1941 fidl_fuchsia_wlan_ieee80211__common::WlanBand,
1942 D,
1943 &mut self.band,
1944 decoder,
1945 offset + 0,
1946 _depth
1947 )?;
1948 fidl::decode!(i8, D, &mut self.rssi_adjustment, decoder, offset + 1, _depth)?;
1949 Ok(())
1950 }
1951 }
1952
1953 impl fidl::encoding::ValueTypeMarker for ScheduledScanPlan {
1954 type Borrowed<'a> = &'a Self;
1955 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1956 value
1957 }
1958 }
1959
1960 unsafe impl fidl::encoding::TypeMarker for ScheduledScanPlan {
1961 type Owned = Self;
1962
1963 #[inline(always)]
1964 fn inline_align(_context: fidl::encoding::Context) -> usize {
1965 4
1966 }
1967
1968 #[inline(always)]
1969 fn inline_size(_context: fidl::encoding::Context) -> usize {
1970 8
1971 }
1972 #[inline(always)]
1973 fn encode_is_copy() -> bool {
1974 true
1975 }
1976
1977 #[inline(always)]
1978 fn decode_is_copy() -> bool {
1979 true
1980 }
1981 }
1982
1983 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScheduledScanPlan, D>
1984 for &ScheduledScanPlan
1985 {
1986 #[inline]
1987 unsafe fn encode(
1988 self,
1989 encoder: &mut fidl::encoding::Encoder<'_, D>,
1990 offset: usize,
1991 _depth: fidl::encoding::Depth,
1992 ) -> fidl::Result<()> {
1993 encoder.debug_check_bounds::<ScheduledScanPlan>(offset);
1994 unsafe {
1995 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
1997 (buf_ptr as *mut ScheduledScanPlan)
1998 .write_unaligned((self as *const ScheduledScanPlan).read());
1999 }
2002 Ok(())
2003 }
2004 }
2005 unsafe impl<
2006 D: fidl::encoding::ResourceDialect,
2007 T0: fidl::encoding::Encode<u32, D>,
2008 T1: fidl::encoding::Encode<u32, D>,
2009 > fidl::encoding::Encode<ScheduledScanPlan, D> for (T0, T1)
2010 {
2011 #[inline]
2012 unsafe fn encode(
2013 self,
2014 encoder: &mut fidl::encoding::Encoder<'_, D>,
2015 offset: usize,
2016 depth: fidl::encoding::Depth,
2017 ) -> fidl::Result<()> {
2018 encoder.debug_check_bounds::<ScheduledScanPlan>(offset);
2019 self.0.encode(encoder, offset + 0, depth)?;
2023 self.1.encode(encoder, offset + 4, depth)?;
2024 Ok(())
2025 }
2026 }
2027
2028 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScheduledScanPlan {
2029 #[inline(always)]
2030 fn new_empty() -> Self {
2031 Self { interval: fidl::new_empty!(u32, D), iterations: fidl::new_empty!(u32, D) }
2032 }
2033
2034 #[inline]
2035 unsafe fn decode(
2036 &mut self,
2037 decoder: &mut fidl::encoding::Decoder<'_, D>,
2038 offset: usize,
2039 _depth: fidl::encoding::Depth,
2040 ) -> fidl::Result<()> {
2041 decoder.debug_check_bounds::<Self>(offset);
2042 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2043 unsafe {
2046 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2047 }
2048 Ok(())
2049 }
2050 }
2051
2052 impl fidl::encoding::ValueTypeMarker for WlanChannel {
2053 type Borrowed<'a> = &'a Self;
2054 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2055 value
2056 }
2057 }
2058
2059 unsafe impl fidl::encoding::TypeMarker for WlanChannel {
2060 type Owned = Self;
2061
2062 #[inline(always)]
2063 fn inline_align(_context: fidl::encoding::Context) -> usize {
2064 4
2065 }
2066
2067 #[inline(always)]
2068 fn inline_size(_context: fidl::encoding::Context) -> usize {
2069 12
2070 }
2071 }
2072
2073 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanChannel, D>
2074 for &WlanChannel
2075 {
2076 #[inline]
2077 unsafe fn encode(
2078 self,
2079 encoder: &mut fidl::encoding::Encoder<'_, D>,
2080 offset: usize,
2081 _depth: fidl::encoding::Depth,
2082 ) -> fidl::Result<()> {
2083 encoder.debug_check_bounds::<WlanChannel>(offset);
2084 fidl::encoding::Encode::<WlanChannel, D>::encode(
2086 (
2087 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
2088 <ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.cbw),
2089 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.secondary80),
2090 ),
2091 encoder,
2092 offset,
2093 _depth,
2094 )
2095 }
2096 }
2097 unsafe impl<
2098 D: fidl::encoding::ResourceDialect,
2099 T0: fidl::encoding::Encode<u8, D>,
2100 T1: fidl::encoding::Encode<ChannelBandwidth, D>,
2101 T2: fidl::encoding::Encode<u8, D>,
2102 > fidl::encoding::Encode<WlanChannel, D> for (T0, T1, T2)
2103 {
2104 #[inline]
2105 unsafe fn encode(
2106 self,
2107 encoder: &mut fidl::encoding::Encoder<'_, D>,
2108 offset: usize,
2109 depth: fidl::encoding::Depth,
2110 ) -> fidl::Result<()> {
2111 encoder.debug_check_bounds::<WlanChannel>(offset);
2112 unsafe {
2115 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2116 (ptr as *mut u32).write_unaligned(0);
2117 }
2118 unsafe {
2119 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2120 (ptr as *mut u32).write_unaligned(0);
2121 }
2122 self.0.encode(encoder, offset + 0, depth)?;
2124 self.1.encode(encoder, offset + 4, depth)?;
2125 self.2.encode(encoder, offset + 8, depth)?;
2126 Ok(())
2127 }
2128 }
2129
2130 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanChannel {
2131 #[inline(always)]
2132 fn new_empty() -> Self {
2133 Self {
2134 primary: fidl::new_empty!(u8, D),
2135 cbw: fidl::new_empty!(ChannelBandwidth, D),
2136 secondary80: fidl::new_empty!(u8, D),
2137 }
2138 }
2139
2140 #[inline]
2141 unsafe fn decode(
2142 &mut self,
2143 decoder: &mut fidl::encoding::Decoder<'_, D>,
2144 offset: usize,
2145 _depth: fidl::encoding::Depth,
2146 ) -> fidl::Result<()> {
2147 decoder.debug_check_bounds::<Self>(offset);
2148 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2150 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2151 let mask = 0xffffff00u32;
2152 let maskedval = padval & mask;
2153 if maskedval != 0 {
2154 return Err(fidl::Error::NonZeroPadding {
2155 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2156 });
2157 }
2158 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2159 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2160 let mask = 0xffffff00u32;
2161 let maskedval = padval & mask;
2162 if maskedval != 0 {
2163 return Err(fidl::Error::NonZeroPadding {
2164 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2165 });
2166 }
2167 fidl::decode!(u8, D, &mut self.primary, decoder, offset + 0, _depth)?;
2168 fidl::decode!(ChannelBandwidth, D, &mut self.cbw, decoder, offset + 4, _depth)?;
2169 fidl::decode!(u8, D, &mut self.secondary80, decoder, offset + 8, _depth)?;
2170 Ok(())
2171 }
2172 }
2173
2174 impl fidl::encoding::ValueTypeMarker for WlanTxResult {
2175 type Borrowed<'a> = &'a Self;
2176 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2177 value
2178 }
2179 }
2180
2181 unsafe impl fidl::encoding::TypeMarker for WlanTxResult {
2182 type Owned = Self;
2183
2184 #[inline(always)]
2185 fn inline_align(_context: fidl::encoding::Context) -> usize {
2186 2
2187 }
2188
2189 #[inline(always)]
2190 fn inline_size(_context: fidl::encoding::Context) -> usize {
2191 40
2192 }
2193 }
2194
2195 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResult, D>
2196 for &WlanTxResult
2197 {
2198 #[inline]
2199 unsafe fn encode(
2200 self,
2201 encoder: &mut fidl::encoding::Encoder<'_, D>,
2202 offset: usize,
2203 _depth: fidl::encoding::Depth,
2204 ) -> fidl::Result<()> {
2205 encoder.debug_check_bounds::<WlanTxResult>(offset);
2206 fidl::encoding::Encode::<WlanTxResult, D>::encode(
2208 (
2209 <fidl::encoding::Array<WlanTxResultEntry, 8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_result_entry),
2210 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_addr),
2211 <WlanTxResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2212 ),
2213 encoder, offset, _depth
2214 )
2215 }
2216 }
2217 unsafe impl<
2218 D: fidl::encoding::ResourceDialect,
2219 T0: fidl::encoding::Encode<fidl::encoding::Array<WlanTxResultEntry, 8>, D>,
2220 T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2221 T2: fidl::encoding::Encode<WlanTxResultCode, D>,
2222 > fidl::encoding::Encode<WlanTxResult, D> for (T0, T1, T2)
2223 {
2224 #[inline]
2225 unsafe fn encode(
2226 self,
2227 encoder: &mut fidl::encoding::Encoder<'_, D>,
2228 offset: usize,
2229 depth: fidl::encoding::Depth,
2230 ) -> fidl::Result<()> {
2231 encoder.debug_check_bounds::<WlanTxResult>(offset);
2232 unsafe {
2235 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(38);
2236 (ptr as *mut u16).write_unaligned(0);
2237 }
2238 self.0.encode(encoder, offset + 0, depth)?;
2240 self.1.encode(encoder, offset + 32, depth)?;
2241 self.2.encode(encoder, offset + 38, depth)?;
2242 Ok(())
2243 }
2244 }
2245
2246 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResult {
2247 #[inline(always)]
2248 fn new_empty() -> Self {
2249 Self {
2250 tx_result_entry: fidl::new_empty!(fidl::encoding::Array<WlanTxResultEntry, 8>, D),
2251 peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2252 result_code: fidl::new_empty!(WlanTxResultCode, D),
2253 }
2254 }
2255
2256 #[inline]
2257 unsafe fn decode(
2258 &mut self,
2259 decoder: &mut fidl::encoding::Decoder<'_, D>,
2260 offset: usize,
2261 _depth: fidl::encoding::Depth,
2262 ) -> fidl::Result<()> {
2263 decoder.debug_check_bounds::<Self>(offset);
2264 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(38) };
2266 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2267 let mask = 0xff00u16;
2268 let maskedval = padval & mask;
2269 if maskedval != 0 {
2270 return Err(fidl::Error::NonZeroPadding {
2271 padding_start: offset + 38 + ((mask as u64).trailing_zeros() / 8) as usize,
2272 });
2273 }
2274 fidl::decode!(fidl::encoding::Array<WlanTxResultEntry, 8>, D, &mut self.tx_result_entry, decoder, offset + 0, _depth)?;
2275 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_addr, decoder, offset + 32, _depth)?;
2276 fidl::decode!(
2277 WlanTxResultCode,
2278 D,
2279 &mut self.result_code,
2280 decoder,
2281 offset + 38,
2282 _depth
2283 )?;
2284 Ok(())
2285 }
2286 }
2287
2288 impl fidl::encoding::ValueTypeMarker for WlanTxResultEntry {
2289 type Borrowed<'a> = &'a Self;
2290 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2291 value
2292 }
2293 }
2294
2295 unsafe impl fidl::encoding::TypeMarker for WlanTxResultEntry {
2296 type Owned = Self;
2297
2298 #[inline(always)]
2299 fn inline_align(_context: fidl::encoding::Context) -> usize {
2300 2
2301 }
2302
2303 #[inline(always)]
2304 fn inline_size(_context: fidl::encoding::Context) -> usize {
2305 4
2306 }
2307 }
2308
2309 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResultEntry, D>
2310 for &WlanTxResultEntry
2311 {
2312 #[inline]
2313 unsafe fn encode(
2314 self,
2315 encoder: &mut fidl::encoding::Encoder<'_, D>,
2316 offset: usize,
2317 _depth: fidl::encoding::Depth,
2318 ) -> fidl::Result<()> {
2319 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2320 unsafe {
2321 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2323 (buf_ptr as *mut WlanTxResultEntry)
2324 .write_unaligned((self as *const WlanTxResultEntry).read());
2325 let padding_ptr = buf_ptr.offset(2) as *mut u16;
2328 let padding_mask = 0xff00u16;
2329 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2330 }
2331 Ok(())
2332 }
2333 }
2334 unsafe impl<
2335 D: fidl::encoding::ResourceDialect,
2336 T0: fidl::encoding::Encode<u16, D>,
2337 T1: fidl::encoding::Encode<u8, D>,
2338 > fidl::encoding::Encode<WlanTxResultEntry, D> for (T0, T1)
2339 {
2340 #[inline]
2341 unsafe fn encode(
2342 self,
2343 encoder: &mut fidl::encoding::Encoder<'_, D>,
2344 offset: usize,
2345 depth: fidl::encoding::Depth,
2346 ) -> fidl::Result<()> {
2347 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2348 unsafe {
2351 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2352 (ptr as *mut u16).write_unaligned(0);
2353 }
2354 self.0.encode(encoder, offset + 0, depth)?;
2356 self.1.encode(encoder, offset + 2, depth)?;
2357 Ok(())
2358 }
2359 }
2360
2361 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultEntry {
2362 #[inline(always)]
2363 fn new_empty() -> Self {
2364 Self { tx_vector_idx: fidl::new_empty!(u16, D), attempts: fidl::new_empty!(u8, D) }
2365 }
2366
2367 #[inline]
2368 unsafe fn decode(
2369 &mut self,
2370 decoder: &mut fidl::encoding::Decoder<'_, D>,
2371 offset: usize,
2372 _depth: fidl::encoding::Depth,
2373 ) -> fidl::Result<()> {
2374 decoder.debug_check_bounds::<Self>(offset);
2375 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2376 let ptr = unsafe { buf_ptr.offset(2) };
2378 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2379 let mask = 0xff00u16;
2380 let maskedval = padval & mask;
2381 if maskedval != 0 {
2382 return Err(fidl::Error::NonZeroPadding {
2383 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2384 });
2385 }
2386 unsafe {
2388 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2389 }
2390 Ok(())
2391 }
2392 }
2393
2394 impl fidl::encoding::ValueTypeMarker for WlanWmmAccessCategoryParameters {
2395 type Borrowed<'a> = &'a Self;
2396 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2397 value
2398 }
2399 }
2400
2401 unsafe impl fidl::encoding::TypeMarker for WlanWmmAccessCategoryParameters {
2402 type Owned = Self;
2403
2404 #[inline(always)]
2405 fn inline_align(_context: fidl::encoding::Context) -> usize {
2406 2
2407 }
2408
2409 #[inline(always)]
2410 fn inline_size(_context: fidl::encoding::Context) -> usize {
2411 8
2412 }
2413 }
2414
2415 unsafe impl<D: fidl::encoding::ResourceDialect>
2416 fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>
2417 for &WlanWmmAccessCategoryParameters
2418 {
2419 #[inline]
2420 unsafe fn encode(
2421 self,
2422 encoder: &mut fidl::encoding::Encoder<'_, D>,
2423 offset: usize,
2424 _depth: fidl::encoding::Depth,
2425 ) -> fidl::Result<()> {
2426 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2427 fidl::encoding::Encode::<WlanWmmAccessCategoryParameters, D>::encode(
2429 (
2430 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_min),
2431 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_max),
2432 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.aifsn),
2433 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.txop_limit),
2434 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.acm),
2435 ),
2436 encoder,
2437 offset,
2438 _depth,
2439 )
2440 }
2441 }
2442 unsafe impl<
2443 D: fidl::encoding::ResourceDialect,
2444 T0: fidl::encoding::Encode<u8, D>,
2445 T1: fidl::encoding::Encode<u8, D>,
2446 T2: fidl::encoding::Encode<u8, D>,
2447 T3: fidl::encoding::Encode<u16, D>,
2448 T4: fidl::encoding::Encode<bool, D>,
2449 > fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D> for (T0, T1, T2, T3, T4)
2450 {
2451 #[inline]
2452 unsafe fn encode(
2453 self,
2454 encoder: &mut fidl::encoding::Encoder<'_, D>,
2455 offset: usize,
2456 depth: fidl::encoding::Depth,
2457 ) -> fidl::Result<()> {
2458 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2459 unsafe {
2462 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2463 (ptr as *mut u16).write_unaligned(0);
2464 }
2465 unsafe {
2466 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(6);
2467 (ptr as *mut u16).write_unaligned(0);
2468 }
2469 self.0.encode(encoder, offset + 0, depth)?;
2471 self.1.encode(encoder, offset + 1, depth)?;
2472 self.2.encode(encoder, offset + 2, depth)?;
2473 self.3.encode(encoder, offset + 4, depth)?;
2474 self.4.encode(encoder, offset + 6, depth)?;
2475 Ok(())
2476 }
2477 }
2478
2479 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2480 for WlanWmmAccessCategoryParameters
2481 {
2482 #[inline(always)]
2483 fn new_empty() -> Self {
2484 Self {
2485 ecw_min: fidl::new_empty!(u8, D),
2486 ecw_max: fidl::new_empty!(u8, D),
2487 aifsn: fidl::new_empty!(u8, D),
2488 txop_limit: fidl::new_empty!(u16, D),
2489 acm: fidl::new_empty!(bool, D),
2490 }
2491 }
2492
2493 #[inline]
2494 unsafe fn decode(
2495 &mut self,
2496 decoder: &mut fidl::encoding::Decoder<'_, D>,
2497 offset: usize,
2498 _depth: fidl::encoding::Depth,
2499 ) -> fidl::Result<()> {
2500 decoder.debug_check_bounds::<Self>(offset);
2501 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(2) };
2503 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2504 let mask = 0xff00u16;
2505 let maskedval = padval & mask;
2506 if maskedval != 0 {
2507 return Err(fidl::Error::NonZeroPadding {
2508 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2509 });
2510 }
2511 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(6) };
2512 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2513 let mask = 0xff00u16;
2514 let maskedval = padval & mask;
2515 if maskedval != 0 {
2516 return Err(fidl::Error::NonZeroPadding {
2517 padding_start: offset + 6 + ((mask as u64).trailing_zeros() / 8) as usize,
2518 });
2519 }
2520 fidl::decode!(u8, D, &mut self.ecw_min, decoder, offset + 0, _depth)?;
2521 fidl::decode!(u8, D, &mut self.ecw_max, decoder, offset + 1, _depth)?;
2522 fidl::decode!(u8, D, &mut self.aifsn, decoder, offset + 2, _depth)?;
2523 fidl::decode!(u16, D, &mut self.txop_limit, decoder, offset + 4, _depth)?;
2524 fidl::decode!(bool, D, &mut self.acm, decoder, offset + 6, _depth)?;
2525 Ok(())
2526 }
2527 }
2528
2529 impl fidl::encoding::ValueTypeMarker for WlanWmmParameters {
2530 type Borrowed<'a> = &'a Self;
2531 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2532 value
2533 }
2534 }
2535
2536 unsafe impl fidl::encoding::TypeMarker for WlanWmmParameters {
2537 type Owned = Self;
2538
2539 #[inline(always)]
2540 fn inline_align(_context: fidl::encoding::Context) -> usize {
2541 2
2542 }
2543
2544 #[inline(always)]
2545 fn inline_size(_context: fidl::encoding::Context) -> usize {
2546 34
2547 }
2548 }
2549
2550 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanWmmParameters, D>
2551 for &WlanWmmParameters
2552 {
2553 #[inline]
2554 unsafe fn encode(
2555 self,
2556 encoder: &mut fidl::encoding::Encoder<'_, D>,
2557 offset: usize,
2558 _depth: fidl::encoding::Depth,
2559 ) -> fidl::Result<()> {
2560 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2561 fidl::encoding::Encode::<WlanWmmParameters, D>::encode(
2563 (
2564 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.apsd),
2565 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2566 &self.ac_be_params,
2567 ),
2568 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2569 &self.ac_bk_params,
2570 ),
2571 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2572 &self.ac_vi_params,
2573 ),
2574 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2575 &self.ac_vo_params,
2576 ),
2577 ),
2578 encoder,
2579 offset,
2580 _depth,
2581 )
2582 }
2583 }
2584 unsafe impl<
2585 D: fidl::encoding::ResourceDialect,
2586 T0: fidl::encoding::Encode<bool, D>,
2587 T1: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2588 T2: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2589 T3: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2590 T4: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2591 > fidl::encoding::Encode<WlanWmmParameters, D> for (T0, T1, T2, T3, T4)
2592 {
2593 #[inline]
2594 unsafe fn encode(
2595 self,
2596 encoder: &mut fidl::encoding::Encoder<'_, D>,
2597 offset: usize,
2598 depth: fidl::encoding::Depth,
2599 ) -> fidl::Result<()> {
2600 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2601 unsafe {
2604 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2605 (ptr as *mut u16).write_unaligned(0);
2606 }
2607 self.0.encode(encoder, offset + 0, depth)?;
2609 self.1.encode(encoder, offset + 2, depth)?;
2610 self.2.encode(encoder, offset + 10, depth)?;
2611 self.3.encode(encoder, offset + 18, depth)?;
2612 self.4.encode(encoder, offset + 26, depth)?;
2613 Ok(())
2614 }
2615 }
2616
2617 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanWmmParameters {
2618 #[inline(always)]
2619 fn new_empty() -> Self {
2620 Self {
2621 apsd: fidl::new_empty!(bool, D),
2622 ac_be_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2623 ac_bk_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2624 ac_vi_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2625 ac_vo_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2626 }
2627 }
2628
2629 #[inline]
2630 unsafe fn decode(
2631 &mut self,
2632 decoder: &mut fidl::encoding::Decoder<'_, D>,
2633 offset: usize,
2634 _depth: fidl::encoding::Depth,
2635 ) -> fidl::Result<()> {
2636 decoder.debug_check_bounds::<Self>(offset);
2637 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2639 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2640 let mask = 0xff00u16;
2641 let maskedval = padval & mask;
2642 if maskedval != 0 {
2643 return Err(fidl::Error::NonZeroPadding {
2644 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2645 });
2646 }
2647 fidl::decode!(bool, D, &mut self.apsd, decoder, offset + 0, _depth)?;
2648 fidl::decode!(
2649 WlanWmmAccessCategoryParameters,
2650 D,
2651 &mut self.ac_be_params,
2652 decoder,
2653 offset + 2,
2654 _depth
2655 )?;
2656 fidl::decode!(
2657 WlanWmmAccessCategoryParameters,
2658 D,
2659 &mut self.ac_bk_params,
2660 decoder,
2661 offset + 10,
2662 _depth
2663 )?;
2664 fidl::decode!(
2665 WlanWmmAccessCategoryParameters,
2666 D,
2667 &mut self.ac_vi_params,
2668 decoder,
2669 offset + 18,
2670 _depth
2671 )?;
2672 fidl::decode!(
2673 WlanWmmAccessCategoryParameters,
2674 D,
2675 &mut self.ac_vo_params,
2676 decoder,
2677 offset + 26,
2678 _depth
2679 )?;
2680 Ok(())
2681 }
2682 }
2683
2684 impl ApfPacketFilterSupport {
2685 #[inline(always)]
2686 fn max_ordinal_present(&self) -> u64 {
2687 if let Some(_) = self.max_filter_length {
2688 return 3;
2689 }
2690 if let Some(_) = self.version {
2691 return 2;
2692 }
2693 if let Some(_) = self.supported {
2694 return 1;
2695 }
2696 0
2697 }
2698 }
2699
2700 impl fidl::encoding::ValueTypeMarker for ApfPacketFilterSupport {
2701 type Borrowed<'a> = &'a Self;
2702 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2703 value
2704 }
2705 }
2706
2707 unsafe impl fidl::encoding::TypeMarker for ApfPacketFilterSupport {
2708 type Owned = Self;
2709
2710 #[inline(always)]
2711 fn inline_align(_context: fidl::encoding::Context) -> usize {
2712 8
2713 }
2714
2715 #[inline(always)]
2716 fn inline_size(_context: fidl::encoding::Context) -> usize {
2717 16
2718 }
2719 }
2720
2721 unsafe impl<D: fidl::encoding::ResourceDialect>
2722 fidl::encoding::Encode<ApfPacketFilterSupport, D> for &ApfPacketFilterSupport
2723 {
2724 unsafe fn encode(
2725 self,
2726 encoder: &mut fidl::encoding::Encoder<'_, D>,
2727 offset: usize,
2728 mut depth: fidl::encoding::Depth,
2729 ) -> fidl::Result<()> {
2730 encoder.debug_check_bounds::<ApfPacketFilterSupport>(offset);
2731 let max_ordinal: u64 = self.max_ordinal_present();
2733 encoder.write_num(max_ordinal, offset);
2734 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2735 if max_ordinal == 0 {
2737 return Ok(());
2738 }
2739 depth.increment()?;
2740 let envelope_size = 8;
2741 let bytes_len = max_ordinal as usize * envelope_size;
2742 #[allow(unused_variables)]
2743 let offset = encoder.out_of_line_offset(bytes_len);
2744 let mut _prev_end_offset: usize = 0;
2745 if 1 > max_ordinal {
2746 return Ok(());
2747 }
2748
2749 let cur_offset: usize = (1 - 1) * envelope_size;
2752
2753 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2755
2756 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2761 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2762 encoder,
2763 offset + cur_offset,
2764 depth,
2765 )?;
2766
2767 _prev_end_offset = cur_offset + envelope_size;
2768 if 2 > max_ordinal {
2769 return Ok(());
2770 }
2771
2772 let cur_offset: usize = (2 - 1) * envelope_size;
2775
2776 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2778
2779 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2784 self.version.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2785 encoder,
2786 offset + cur_offset,
2787 depth,
2788 )?;
2789
2790 _prev_end_offset = cur_offset + envelope_size;
2791 if 3 > max_ordinal {
2792 return Ok(());
2793 }
2794
2795 let cur_offset: usize = (3 - 1) * envelope_size;
2798
2799 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2801
2802 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2807 self.max_filter_length
2808 .as_ref()
2809 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2810 encoder,
2811 offset + cur_offset,
2812 depth,
2813 )?;
2814
2815 _prev_end_offset = cur_offset + envelope_size;
2816
2817 Ok(())
2818 }
2819 }
2820
2821 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2822 for ApfPacketFilterSupport
2823 {
2824 #[inline(always)]
2825 fn new_empty() -> Self {
2826 Self::default()
2827 }
2828
2829 unsafe fn decode(
2830 &mut self,
2831 decoder: &mut fidl::encoding::Decoder<'_, D>,
2832 offset: usize,
2833 mut depth: fidl::encoding::Depth,
2834 ) -> fidl::Result<()> {
2835 decoder.debug_check_bounds::<Self>(offset);
2836 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2837 None => return Err(fidl::Error::NotNullable),
2838 Some(len) => len,
2839 };
2840 if len == 0 {
2842 return Ok(());
2843 };
2844 depth.increment()?;
2845 let envelope_size = 8;
2846 let bytes_len = len * envelope_size;
2847 let offset = decoder.out_of_line_offset(bytes_len)?;
2848 let mut _next_ordinal_to_read = 0;
2850 let mut next_offset = offset;
2851 let end_offset = offset + bytes_len;
2852 _next_ordinal_to_read += 1;
2853 if next_offset >= end_offset {
2854 return Ok(());
2855 }
2856
2857 while _next_ordinal_to_read < 1 {
2859 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2860 _next_ordinal_to_read += 1;
2861 next_offset += envelope_size;
2862 }
2863
2864 let next_out_of_line = decoder.next_out_of_line();
2865 let handles_before = decoder.remaining_handles();
2866 if let Some((inlined, num_bytes, num_handles)) =
2867 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2868 {
2869 let member_inline_size =
2870 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2871 if inlined != (member_inline_size <= 4) {
2872 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2873 }
2874 let inner_offset;
2875 let mut inner_depth = depth.clone();
2876 if inlined {
2877 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2878 inner_offset = next_offset;
2879 } else {
2880 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2881 inner_depth.increment()?;
2882 }
2883 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
2884 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2885 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2886 {
2887 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2888 }
2889 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2890 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2891 }
2892 }
2893
2894 next_offset += envelope_size;
2895 _next_ordinal_to_read += 1;
2896 if next_offset >= end_offset {
2897 return Ok(());
2898 }
2899
2900 while _next_ordinal_to_read < 2 {
2902 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2903 _next_ordinal_to_read += 1;
2904 next_offset += envelope_size;
2905 }
2906
2907 let next_out_of_line = decoder.next_out_of_line();
2908 let handles_before = decoder.remaining_handles();
2909 if let Some((inlined, num_bytes, num_handles)) =
2910 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2911 {
2912 let member_inline_size =
2913 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2914 if inlined != (member_inline_size <= 4) {
2915 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2916 }
2917 let inner_offset;
2918 let mut inner_depth = depth.clone();
2919 if inlined {
2920 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2921 inner_offset = next_offset;
2922 } else {
2923 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2924 inner_depth.increment()?;
2925 }
2926 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(i32, D));
2927 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2928 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2929 {
2930 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2931 }
2932 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2933 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2934 }
2935 }
2936
2937 next_offset += envelope_size;
2938 _next_ordinal_to_read += 1;
2939 if next_offset >= end_offset {
2940 return Ok(());
2941 }
2942
2943 while _next_ordinal_to_read < 3 {
2945 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2946 _next_ordinal_to_read += 1;
2947 next_offset += envelope_size;
2948 }
2949
2950 let next_out_of_line = decoder.next_out_of_line();
2951 let handles_before = decoder.remaining_handles();
2952 if let Some((inlined, num_bytes, num_handles)) =
2953 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2954 {
2955 let member_inline_size =
2956 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2957 if inlined != (member_inline_size <= 4) {
2958 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2959 }
2960 let inner_offset;
2961 let mut inner_depth = depth.clone();
2962 if inlined {
2963 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2964 inner_offset = next_offset;
2965 } else {
2966 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2967 inner_depth.increment()?;
2968 }
2969 let val_ref =
2970 self.max_filter_length.get_or_insert_with(|| fidl::new_empty!(i32, D));
2971 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2972 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2973 {
2974 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2975 }
2976 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2977 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2978 }
2979 }
2980
2981 next_offset += envelope_size;
2982
2983 while next_offset < end_offset {
2985 _next_ordinal_to_read += 1;
2986 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2987 next_offset += envelope_size;
2988 }
2989
2990 Ok(())
2991 }
2992 }
2993
2994 impl DataPlaneExtension {
2995 #[inline(always)]
2996 fn max_ordinal_present(&self) -> u64 {
2997 if let Some(_) = self.data_plane_type {
2998 return 1;
2999 }
3000 0
3001 }
3002 }
3003
3004 impl fidl::encoding::ValueTypeMarker for DataPlaneExtension {
3005 type Borrowed<'a> = &'a Self;
3006 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3007 value
3008 }
3009 }
3010
3011 unsafe impl fidl::encoding::TypeMarker for DataPlaneExtension {
3012 type Owned = Self;
3013
3014 #[inline(always)]
3015 fn inline_align(_context: fidl::encoding::Context) -> usize {
3016 8
3017 }
3018
3019 #[inline(always)]
3020 fn inline_size(_context: fidl::encoding::Context) -> usize {
3021 16
3022 }
3023 }
3024
3025 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataPlaneExtension, D>
3026 for &DataPlaneExtension
3027 {
3028 unsafe fn encode(
3029 self,
3030 encoder: &mut fidl::encoding::Encoder<'_, D>,
3031 offset: usize,
3032 mut depth: fidl::encoding::Depth,
3033 ) -> fidl::Result<()> {
3034 encoder.debug_check_bounds::<DataPlaneExtension>(offset);
3035 let max_ordinal: u64 = self.max_ordinal_present();
3037 encoder.write_num(max_ordinal, offset);
3038 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3039 if max_ordinal == 0 {
3041 return Ok(());
3042 }
3043 depth.increment()?;
3044 let envelope_size = 8;
3045 let bytes_len = max_ordinal as usize * envelope_size;
3046 #[allow(unused_variables)]
3047 let offset = encoder.out_of_line_offset(bytes_len);
3048 let mut _prev_end_offset: usize = 0;
3049 if 1 > max_ordinal {
3050 return Ok(());
3051 }
3052
3053 let cur_offset: usize = (1 - 1) * envelope_size;
3056
3057 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3059
3060 fidl::encoding::encode_in_envelope_optional::<DataPlaneType, D>(
3065 self.data_plane_type
3066 .as_ref()
3067 .map(<DataPlaneType as fidl::encoding::ValueTypeMarker>::borrow),
3068 encoder,
3069 offset + cur_offset,
3070 depth,
3071 )?;
3072
3073 _prev_end_offset = cur_offset + envelope_size;
3074
3075 Ok(())
3076 }
3077 }
3078
3079 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneExtension {
3080 #[inline(always)]
3081 fn new_empty() -> Self {
3082 Self::default()
3083 }
3084
3085 unsafe fn decode(
3086 &mut self,
3087 decoder: &mut fidl::encoding::Decoder<'_, D>,
3088 offset: usize,
3089 mut depth: fidl::encoding::Depth,
3090 ) -> fidl::Result<()> {
3091 decoder.debug_check_bounds::<Self>(offset);
3092 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3093 None => return Err(fidl::Error::NotNullable),
3094 Some(len) => len,
3095 };
3096 if len == 0 {
3098 return Ok(());
3099 };
3100 depth.increment()?;
3101 let envelope_size = 8;
3102 let bytes_len = len * envelope_size;
3103 let offset = decoder.out_of_line_offset(bytes_len)?;
3104 let mut _next_ordinal_to_read = 0;
3106 let mut next_offset = offset;
3107 let end_offset = offset + bytes_len;
3108 _next_ordinal_to_read += 1;
3109 if next_offset >= end_offset {
3110 return Ok(());
3111 }
3112
3113 while _next_ordinal_to_read < 1 {
3115 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3116 _next_ordinal_to_read += 1;
3117 next_offset += envelope_size;
3118 }
3119
3120 let next_out_of_line = decoder.next_out_of_line();
3121 let handles_before = decoder.remaining_handles();
3122 if let Some((inlined, num_bytes, num_handles)) =
3123 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3124 {
3125 let member_inline_size =
3126 <DataPlaneType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3127 if inlined != (member_inline_size <= 4) {
3128 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3129 }
3130 let inner_offset;
3131 let mut inner_depth = depth.clone();
3132 if inlined {
3133 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3134 inner_offset = next_offset;
3135 } else {
3136 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3137 inner_depth.increment()?;
3138 }
3139 let val_ref =
3140 self.data_plane_type.get_or_insert_with(|| fidl::new_empty!(DataPlaneType, D));
3141 fidl::decode!(DataPlaneType, D, val_ref, decoder, inner_offset, inner_depth)?;
3142 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3143 {
3144 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3145 }
3146 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3147 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3148 }
3149 }
3150
3151 next_offset += envelope_size;
3152
3153 while next_offset < end_offset {
3155 _next_ordinal_to_read += 1;
3156 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3157 next_offset += envelope_size;
3158 }
3159
3160 Ok(())
3161 }
3162 }
3163
3164 impl DeviceExtension {
3165 #[inline(always)]
3166 fn max_ordinal_present(&self) -> u64 {
3167 if let Some(_) = self.tx_status_report_supported {
3168 return 3;
3169 }
3170 if let Some(_) = self.mac_implementation_type {
3171 return 2;
3172 }
3173 if let Some(_) = self.is_synthetic {
3174 return 1;
3175 }
3176 0
3177 }
3178 }
3179
3180 impl fidl::encoding::ValueTypeMarker for DeviceExtension {
3181 type Borrowed<'a> = &'a Self;
3182 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3183 value
3184 }
3185 }
3186
3187 unsafe impl fidl::encoding::TypeMarker for DeviceExtension {
3188 type Owned = Self;
3189
3190 #[inline(always)]
3191 fn inline_align(_context: fidl::encoding::Context) -> usize {
3192 8
3193 }
3194
3195 #[inline(always)]
3196 fn inline_size(_context: fidl::encoding::Context) -> usize {
3197 16
3198 }
3199 }
3200
3201 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceExtension, D>
3202 for &DeviceExtension
3203 {
3204 unsafe fn encode(
3205 self,
3206 encoder: &mut fidl::encoding::Encoder<'_, D>,
3207 offset: usize,
3208 mut depth: fidl::encoding::Depth,
3209 ) -> fidl::Result<()> {
3210 encoder.debug_check_bounds::<DeviceExtension>(offset);
3211 let max_ordinal: u64 = self.max_ordinal_present();
3213 encoder.write_num(max_ordinal, offset);
3214 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3215 if max_ordinal == 0 {
3217 return Ok(());
3218 }
3219 depth.increment()?;
3220 let envelope_size = 8;
3221 let bytes_len = max_ordinal as usize * envelope_size;
3222 #[allow(unused_variables)]
3223 let offset = encoder.out_of_line_offset(bytes_len);
3224 let mut _prev_end_offset: usize = 0;
3225 if 1 > max_ordinal {
3226 return Ok(());
3227 }
3228
3229 let cur_offset: usize = (1 - 1) * envelope_size;
3232
3233 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3235
3236 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3241 self.is_synthetic.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3242 encoder,
3243 offset + cur_offset,
3244 depth,
3245 )?;
3246
3247 _prev_end_offset = cur_offset + envelope_size;
3248 if 2 > max_ordinal {
3249 return Ok(());
3250 }
3251
3252 let cur_offset: usize = (2 - 1) * envelope_size;
3255
3256 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3258
3259 fidl::encoding::encode_in_envelope_optional::<MacImplementationType, D>(
3264 self.mac_implementation_type
3265 .as_ref()
3266 .map(<MacImplementationType as fidl::encoding::ValueTypeMarker>::borrow),
3267 encoder,
3268 offset + cur_offset,
3269 depth,
3270 )?;
3271
3272 _prev_end_offset = cur_offset + envelope_size;
3273 if 3 > max_ordinal {
3274 return Ok(());
3275 }
3276
3277 let cur_offset: usize = (3 - 1) * envelope_size;
3280
3281 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3283
3284 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3289 self.tx_status_report_supported
3290 .as_ref()
3291 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3292 encoder,
3293 offset + cur_offset,
3294 depth,
3295 )?;
3296
3297 _prev_end_offset = cur_offset + envelope_size;
3298
3299 Ok(())
3300 }
3301 }
3302
3303 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceExtension {
3304 #[inline(always)]
3305 fn new_empty() -> Self {
3306 Self::default()
3307 }
3308
3309 unsafe fn decode(
3310 &mut self,
3311 decoder: &mut fidl::encoding::Decoder<'_, D>,
3312 offset: usize,
3313 mut depth: fidl::encoding::Depth,
3314 ) -> fidl::Result<()> {
3315 decoder.debug_check_bounds::<Self>(offset);
3316 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3317 None => return Err(fidl::Error::NotNullable),
3318 Some(len) => len,
3319 };
3320 if len == 0 {
3322 return Ok(());
3323 };
3324 depth.increment()?;
3325 let envelope_size = 8;
3326 let bytes_len = len * envelope_size;
3327 let offset = decoder.out_of_line_offset(bytes_len)?;
3328 let mut _next_ordinal_to_read = 0;
3330 let mut next_offset = offset;
3331 let end_offset = offset + bytes_len;
3332 _next_ordinal_to_read += 1;
3333 if next_offset >= end_offset {
3334 return Ok(());
3335 }
3336
3337 while _next_ordinal_to_read < 1 {
3339 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3340 _next_ordinal_to_read += 1;
3341 next_offset += envelope_size;
3342 }
3343
3344 let next_out_of_line = decoder.next_out_of_line();
3345 let handles_before = decoder.remaining_handles();
3346 if let Some((inlined, num_bytes, num_handles)) =
3347 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3348 {
3349 let member_inline_size =
3350 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3351 if inlined != (member_inline_size <= 4) {
3352 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3353 }
3354 let inner_offset;
3355 let mut inner_depth = depth.clone();
3356 if inlined {
3357 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3358 inner_offset = next_offset;
3359 } else {
3360 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3361 inner_depth.increment()?;
3362 }
3363 let val_ref = self.is_synthetic.get_or_insert_with(|| fidl::new_empty!(bool, D));
3364 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3365 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3366 {
3367 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3368 }
3369 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3370 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3371 }
3372 }
3373
3374 next_offset += envelope_size;
3375 _next_ordinal_to_read += 1;
3376 if next_offset >= end_offset {
3377 return Ok(());
3378 }
3379
3380 while _next_ordinal_to_read < 2 {
3382 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3383 _next_ordinal_to_read += 1;
3384 next_offset += envelope_size;
3385 }
3386
3387 let next_out_of_line = decoder.next_out_of_line();
3388 let handles_before = decoder.remaining_handles();
3389 if let Some((inlined, num_bytes, num_handles)) =
3390 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3391 {
3392 let member_inline_size =
3393 <MacImplementationType as fidl::encoding::TypeMarker>::inline_size(
3394 decoder.context,
3395 );
3396 if inlined != (member_inline_size <= 4) {
3397 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3398 }
3399 let inner_offset;
3400 let mut inner_depth = depth.clone();
3401 if inlined {
3402 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3403 inner_offset = next_offset;
3404 } else {
3405 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3406 inner_depth.increment()?;
3407 }
3408 let val_ref = self
3409 .mac_implementation_type
3410 .get_or_insert_with(|| fidl::new_empty!(MacImplementationType, D));
3411 fidl::decode!(
3412 MacImplementationType,
3413 D,
3414 val_ref,
3415 decoder,
3416 inner_offset,
3417 inner_depth
3418 )?;
3419 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3420 {
3421 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3422 }
3423 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3424 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3425 }
3426 }
3427
3428 next_offset += envelope_size;
3429 _next_ordinal_to_read += 1;
3430 if next_offset >= end_offset {
3431 return Ok(());
3432 }
3433
3434 while _next_ordinal_to_read < 3 {
3436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3437 _next_ordinal_to_read += 1;
3438 next_offset += envelope_size;
3439 }
3440
3441 let next_out_of_line = decoder.next_out_of_line();
3442 let handles_before = decoder.remaining_handles();
3443 if let Some((inlined, num_bytes, num_handles)) =
3444 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3445 {
3446 let member_inline_size =
3447 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3448 if inlined != (member_inline_size <= 4) {
3449 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3450 }
3451 let inner_offset;
3452 let mut inner_depth = depth.clone();
3453 if inlined {
3454 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3455 inner_offset = next_offset;
3456 } else {
3457 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3458 inner_depth.increment()?;
3459 }
3460 let val_ref = self
3461 .tx_status_report_supported
3462 .get_or_insert_with(|| fidl::new_empty!(bool, D));
3463 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3464 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3465 {
3466 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3467 }
3468 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3469 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3470 }
3471 }
3472
3473 next_offset += envelope_size;
3474
3475 while next_offset < end_offset {
3477 _next_ordinal_to_read += 1;
3478 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3479 next_offset += envelope_size;
3480 }
3481
3482 Ok(())
3483 }
3484 }
3485
3486 impl DfsFeature {
3487 #[inline(always)]
3488 fn max_ordinal_present(&self) -> u64 {
3489 if let Some(_) = self.supported {
3490 return 1;
3491 }
3492 0
3493 }
3494 }
3495
3496 impl fidl::encoding::ValueTypeMarker for DfsFeature {
3497 type Borrowed<'a> = &'a Self;
3498 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3499 value
3500 }
3501 }
3502
3503 unsafe impl fidl::encoding::TypeMarker for DfsFeature {
3504 type Owned = Self;
3505
3506 #[inline(always)]
3507 fn inline_align(_context: fidl::encoding::Context) -> usize {
3508 8
3509 }
3510
3511 #[inline(always)]
3512 fn inline_size(_context: fidl::encoding::Context) -> usize {
3513 16
3514 }
3515 }
3516
3517 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DfsFeature, D>
3518 for &DfsFeature
3519 {
3520 unsafe fn encode(
3521 self,
3522 encoder: &mut fidl::encoding::Encoder<'_, D>,
3523 offset: usize,
3524 mut depth: fidl::encoding::Depth,
3525 ) -> fidl::Result<()> {
3526 encoder.debug_check_bounds::<DfsFeature>(offset);
3527 let max_ordinal: u64 = self.max_ordinal_present();
3529 encoder.write_num(max_ordinal, offset);
3530 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3531 if max_ordinal == 0 {
3533 return Ok(());
3534 }
3535 depth.increment()?;
3536 let envelope_size = 8;
3537 let bytes_len = max_ordinal as usize * envelope_size;
3538 #[allow(unused_variables)]
3539 let offset = encoder.out_of_line_offset(bytes_len);
3540 let mut _prev_end_offset: usize = 0;
3541 if 1 > max_ordinal {
3542 return Ok(());
3543 }
3544
3545 let cur_offset: usize = (1 - 1) * envelope_size;
3548
3549 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3551
3552 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3557 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3558 encoder,
3559 offset + cur_offset,
3560 depth,
3561 )?;
3562
3563 _prev_end_offset = cur_offset + envelope_size;
3564
3565 Ok(())
3566 }
3567 }
3568
3569 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DfsFeature {
3570 #[inline(always)]
3571 fn new_empty() -> Self {
3572 Self::default()
3573 }
3574
3575 unsafe fn decode(
3576 &mut self,
3577 decoder: &mut fidl::encoding::Decoder<'_, D>,
3578 offset: usize,
3579 mut depth: fidl::encoding::Depth,
3580 ) -> fidl::Result<()> {
3581 decoder.debug_check_bounds::<Self>(offset);
3582 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3583 None => return Err(fidl::Error::NotNullable),
3584 Some(len) => len,
3585 };
3586 if len == 0 {
3588 return Ok(());
3589 };
3590 depth.increment()?;
3591 let envelope_size = 8;
3592 let bytes_len = len * envelope_size;
3593 let offset = decoder.out_of_line_offset(bytes_len)?;
3594 let mut _next_ordinal_to_read = 0;
3596 let mut next_offset = offset;
3597 let end_offset = offset + bytes_len;
3598 _next_ordinal_to_read += 1;
3599 if next_offset >= end_offset {
3600 return Ok(());
3601 }
3602
3603 while _next_ordinal_to_read < 1 {
3605 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3606 _next_ordinal_to_read += 1;
3607 next_offset += envelope_size;
3608 }
3609
3610 let next_out_of_line = decoder.next_out_of_line();
3611 let handles_before = decoder.remaining_handles();
3612 if let Some((inlined, num_bytes, num_handles)) =
3613 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3614 {
3615 let member_inline_size =
3616 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3617 if inlined != (member_inline_size <= 4) {
3618 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3619 }
3620 let inner_offset;
3621 let mut inner_depth = depth.clone();
3622 if inlined {
3623 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3624 inner_offset = next_offset;
3625 } else {
3626 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3627 inner_depth.increment()?;
3628 }
3629 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
3630 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3631 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3632 {
3633 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3634 }
3635 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3636 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3637 }
3638 }
3639
3640 next_offset += envelope_size;
3641
3642 while next_offset < end_offset {
3644 _next_ordinal_to_read += 1;
3645 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3646 next_offset += envelope_size;
3647 }
3648
3649 Ok(())
3650 }
3651 }
3652
3653 impl DiscoverySupport {
3654 #[inline(always)]
3655 fn max_ordinal_present(&self) -> u64 {
3656 if let Some(_) = self.probe_response_offload {
3657 return 2;
3658 }
3659 if let Some(_) = self.scan_offload {
3660 return 1;
3661 }
3662 0
3663 }
3664 }
3665
3666 impl fidl::encoding::ValueTypeMarker for DiscoverySupport {
3667 type Borrowed<'a> = &'a Self;
3668 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3669 value
3670 }
3671 }
3672
3673 unsafe impl fidl::encoding::TypeMarker for DiscoverySupport {
3674 type Owned = Self;
3675
3676 #[inline(always)]
3677 fn inline_align(_context: fidl::encoding::Context) -> usize {
3678 8
3679 }
3680
3681 #[inline(always)]
3682 fn inline_size(_context: fidl::encoding::Context) -> usize {
3683 16
3684 }
3685 }
3686
3687 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DiscoverySupport, D>
3688 for &DiscoverySupport
3689 {
3690 unsafe fn encode(
3691 self,
3692 encoder: &mut fidl::encoding::Encoder<'_, D>,
3693 offset: usize,
3694 mut depth: fidl::encoding::Depth,
3695 ) -> fidl::Result<()> {
3696 encoder.debug_check_bounds::<DiscoverySupport>(offset);
3697 let max_ordinal: u64 = self.max_ordinal_present();
3699 encoder.write_num(max_ordinal, offset);
3700 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3701 if max_ordinal == 0 {
3703 return Ok(());
3704 }
3705 depth.increment()?;
3706 let envelope_size = 8;
3707 let bytes_len = max_ordinal as usize * envelope_size;
3708 #[allow(unused_variables)]
3709 let offset = encoder.out_of_line_offset(bytes_len);
3710 let mut _prev_end_offset: usize = 0;
3711 if 1 > max_ordinal {
3712 return Ok(());
3713 }
3714
3715 let cur_offset: usize = (1 - 1) * envelope_size;
3718
3719 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3721
3722 fidl::encoding::encode_in_envelope_optional::<ScanOffloadExtension, D>(
3727 self.scan_offload
3728 .as_ref()
3729 .map(<ScanOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow),
3730 encoder,
3731 offset + cur_offset,
3732 depth,
3733 )?;
3734
3735 _prev_end_offset = cur_offset + envelope_size;
3736 if 2 > max_ordinal {
3737 return Ok(());
3738 }
3739
3740 let cur_offset: usize = (2 - 1) * envelope_size;
3743
3744 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3746
3747 fidl::encoding::encode_in_envelope_optional::<ProbeResponseOffloadExtension, D>(
3752 self.probe_response_offload.as_ref().map(
3753 <ProbeResponseOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
3754 ),
3755 encoder,
3756 offset + cur_offset,
3757 depth,
3758 )?;
3759
3760 _prev_end_offset = cur_offset + envelope_size;
3761
3762 Ok(())
3763 }
3764 }
3765
3766 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DiscoverySupport {
3767 #[inline(always)]
3768 fn new_empty() -> Self {
3769 Self::default()
3770 }
3771
3772 unsafe fn decode(
3773 &mut self,
3774 decoder: &mut fidl::encoding::Decoder<'_, D>,
3775 offset: usize,
3776 mut depth: fidl::encoding::Depth,
3777 ) -> fidl::Result<()> {
3778 decoder.debug_check_bounds::<Self>(offset);
3779 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3780 None => return Err(fidl::Error::NotNullable),
3781 Some(len) => len,
3782 };
3783 if len == 0 {
3785 return Ok(());
3786 };
3787 depth.increment()?;
3788 let envelope_size = 8;
3789 let bytes_len = len * envelope_size;
3790 let offset = decoder.out_of_line_offset(bytes_len)?;
3791 let mut _next_ordinal_to_read = 0;
3793 let mut next_offset = offset;
3794 let end_offset = offset + bytes_len;
3795 _next_ordinal_to_read += 1;
3796 if next_offset >= end_offset {
3797 return Ok(());
3798 }
3799
3800 while _next_ordinal_to_read < 1 {
3802 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3803 _next_ordinal_to_read += 1;
3804 next_offset += envelope_size;
3805 }
3806
3807 let next_out_of_line = decoder.next_out_of_line();
3808 let handles_before = decoder.remaining_handles();
3809 if let Some((inlined, num_bytes, num_handles)) =
3810 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3811 {
3812 let member_inline_size =
3813 <ScanOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3814 decoder.context,
3815 );
3816 if inlined != (member_inline_size <= 4) {
3817 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3818 }
3819 let inner_offset;
3820 let mut inner_depth = depth.clone();
3821 if inlined {
3822 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3823 inner_offset = next_offset;
3824 } else {
3825 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3826 inner_depth.increment()?;
3827 }
3828 let val_ref = self
3829 .scan_offload
3830 .get_or_insert_with(|| fidl::new_empty!(ScanOffloadExtension, D));
3831 fidl::decode!(
3832 ScanOffloadExtension,
3833 D,
3834 val_ref,
3835 decoder,
3836 inner_offset,
3837 inner_depth
3838 )?;
3839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3840 {
3841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3842 }
3843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3845 }
3846 }
3847
3848 next_offset += envelope_size;
3849 _next_ordinal_to_read += 1;
3850 if next_offset >= end_offset {
3851 return Ok(());
3852 }
3853
3854 while _next_ordinal_to_read < 2 {
3856 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3857 _next_ordinal_to_read += 1;
3858 next_offset += envelope_size;
3859 }
3860
3861 let next_out_of_line = decoder.next_out_of_line();
3862 let handles_before = decoder.remaining_handles();
3863 if let Some((inlined, num_bytes, num_handles)) =
3864 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3865 {
3866 let member_inline_size =
3867 <ProbeResponseOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3868 decoder.context,
3869 );
3870 if inlined != (member_inline_size <= 4) {
3871 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3872 }
3873 let inner_offset;
3874 let mut inner_depth = depth.clone();
3875 if inlined {
3876 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3877 inner_offset = next_offset;
3878 } else {
3879 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3880 inner_depth.increment()?;
3881 }
3882 let val_ref = self
3883 .probe_response_offload
3884 .get_or_insert_with(|| fidl::new_empty!(ProbeResponseOffloadExtension, D));
3885 fidl::decode!(
3886 ProbeResponseOffloadExtension,
3887 D,
3888 val_ref,
3889 decoder,
3890 inner_offset,
3891 inner_depth
3892 )?;
3893 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3894 {
3895 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3896 }
3897 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3898 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3899 }
3900 }
3901
3902 next_offset += envelope_size;
3903
3904 while next_offset < end_offset {
3906 _next_ordinal_to_read += 1;
3907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3908 next_offset += envelope_size;
3909 }
3910
3911 Ok(())
3912 }
3913 }
3914
3915 impl JoinBssRequest {
3916 #[inline(always)]
3917 fn max_ordinal_present(&self) -> u64 {
3918 if let Some(_) = self.beacon_period {
3919 return 4;
3920 }
3921 if let Some(_) = self.remote {
3922 return 3;
3923 }
3924 if let Some(_) = self.bss_type {
3925 return 2;
3926 }
3927 if let Some(_) = self.bssid {
3928 return 1;
3929 }
3930 0
3931 }
3932 }
3933
3934 impl fidl::encoding::ValueTypeMarker for JoinBssRequest {
3935 type Borrowed<'a> = &'a Self;
3936 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3937 value
3938 }
3939 }
3940
3941 unsafe impl fidl::encoding::TypeMarker for JoinBssRequest {
3942 type Owned = Self;
3943
3944 #[inline(always)]
3945 fn inline_align(_context: fidl::encoding::Context) -> usize {
3946 8
3947 }
3948
3949 #[inline(always)]
3950 fn inline_size(_context: fidl::encoding::Context) -> usize {
3951 16
3952 }
3953 }
3954
3955 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinBssRequest, D>
3956 for &JoinBssRequest
3957 {
3958 unsafe fn encode(
3959 self,
3960 encoder: &mut fidl::encoding::Encoder<'_, D>,
3961 offset: usize,
3962 mut depth: fidl::encoding::Depth,
3963 ) -> fidl::Result<()> {
3964 encoder.debug_check_bounds::<JoinBssRequest>(offset);
3965 let max_ordinal: u64 = self.max_ordinal_present();
3967 encoder.write_num(max_ordinal, offset);
3968 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3969 if max_ordinal == 0 {
3971 return Ok(());
3972 }
3973 depth.increment()?;
3974 let envelope_size = 8;
3975 let bytes_len = max_ordinal as usize * envelope_size;
3976 #[allow(unused_variables)]
3977 let offset = encoder.out_of_line_offset(bytes_len);
3978 let mut _prev_end_offset: usize = 0;
3979 if 1 > max_ordinal {
3980 return Ok(());
3981 }
3982
3983 let cur_offset: usize = (1 - 1) * envelope_size;
3986
3987 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3989
3990 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3995 self.bssid
3996 .as_ref()
3997 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3998 encoder,
3999 offset + cur_offset,
4000 depth,
4001 )?;
4002
4003 _prev_end_offset = cur_offset + envelope_size;
4004 if 2 > max_ordinal {
4005 return Ok(());
4006 }
4007
4008 let cur_offset: usize = (2 - 1) * envelope_size;
4011
4012 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4014
4015 fidl::encoding::encode_in_envelope_optional::<BssType, D>(
4020 self.bss_type.as_ref().map(<BssType as fidl::encoding::ValueTypeMarker>::borrow),
4021 encoder,
4022 offset + cur_offset,
4023 depth,
4024 )?;
4025
4026 _prev_end_offset = cur_offset + envelope_size;
4027 if 3 > max_ordinal {
4028 return Ok(());
4029 }
4030
4031 let cur_offset: usize = (3 - 1) * envelope_size;
4034
4035 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4037
4038 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4043 self.remote.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4044 encoder,
4045 offset + cur_offset,
4046 depth,
4047 )?;
4048
4049 _prev_end_offset = cur_offset + envelope_size;
4050 if 4 > max_ordinal {
4051 return Ok(());
4052 }
4053
4054 let cur_offset: usize = (4 - 1) * envelope_size;
4057
4058 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4060
4061 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4066 self.beacon_period.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4067 encoder,
4068 offset + cur_offset,
4069 depth,
4070 )?;
4071
4072 _prev_end_offset = cur_offset + envelope_size;
4073
4074 Ok(())
4075 }
4076 }
4077
4078 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinBssRequest {
4079 #[inline(always)]
4080 fn new_empty() -> Self {
4081 Self::default()
4082 }
4083
4084 unsafe fn decode(
4085 &mut self,
4086 decoder: &mut fidl::encoding::Decoder<'_, D>,
4087 offset: usize,
4088 mut depth: fidl::encoding::Depth,
4089 ) -> fidl::Result<()> {
4090 decoder.debug_check_bounds::<Self>(offset);
4091 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4092 None => return Err(fidl::Error::NotNullable),
4093 Some(len) => len,
4094 };
4095 if len == 0 {
4097 return Ok(());
4098 };
4099 depth.increment()?;
4100 let envelope_size = 8;
4101 let bytes_len = len * envelope_size;
4102 let offset = decoder.out_of_line_offset(bytes_len)?;
4103 let mut _next_ordinal_to_read = 0;
4105 let mut next_offset = offset;
4106 let end_offset = offset + bytes_len;
4107 _next_ordinal_to_read += 1;
4108 if next_offset >= end_offset {
4109 return Ok(());
4110 }
4111
4112 while _next_ordinal_to_read < 1 {
4114 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4115 _next_ordinal_to_read += 1;
4116 next_offset += envelope_size;
4117 }
4118
4119 let next_out_of_line = decoder.next_out_of_line();
4120 let handles_before = decoder.remaining_handles();
4121 if let Some((inlined, num_bytes, num_handles)) =
4122 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4123 {
4124 let member_inline_size =
4125 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4126 decoder.context,
4127 );
4128 if inlined != (member_inline_size <= 4) {
4129 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4130 }
4131 let inner_offset;
4132 let mut inner_depth = depth.clone();
4133 if inlined {
4134 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4135 inner_offset = next_offset;
4136 } else {
4137 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4138 inner_depth.increment()?;
4139 }
4140 let val_ref = self
4141 .bssid
4142 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4143 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4144 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4145 {
4146 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4147 }
4148 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4149 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4150 }
4151 }
4152
4153 next_offset += envelope_size;
4154 _next_ordinal_to_read += 1;
4155 if next_offset >= end_offset {
4156 return Ok(());
4157 }
4158
4159 while _next_ordinal_to_read < 2 {
4161 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4162 _next_ordinal_to_read += 1;
4163 next_offset += envelope_size;
4164 }
4165
4166 let next_out_of_line = decoder.next_out_of_line();
4167 let handles_before = decoder.remaining_handles();
4168 if let Some((inlined, num_bytes, num_handles)) =
4169 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4170 {
4171 let member_inline_size =
4172 <BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4173 if inlined != (member_inline_size <= 4) {
4174 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4175 }
4176 let inner_offset;
4177 let mut inner_depth = depth.clone();
4178 if inlined {
4179 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4180 inner_offset = next_offset;
4181 } else {
4182 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4183 inner_depth.increment()?;
4184 }
4185 let val_ref = self.bss_type.get_or_insert_with(|| fidl::new_empty!(BssType, D));
4186 fidl::decode!(BssType, D, val_ref, decoder, inner_offset, inner_depth)?;
4187 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4188 {
4189 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4190 }
4191 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4192 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4193 }
4194 }
4195
4196 next_offset += envelope_size;
4197 _next_ordinal_to_read += 1;
4198 if next_offset >= end_offset {
4199 return Ok(());
4200 }
4201
4202 while _next_ordinal_to_read < 3 {
4204 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4205 _next_ordinal_to_read += 1;
4206 next_offset += envelope_size;
4207 }
4208
4209 let next_out_of_line = decoder.next_out_of_line();
4210 let handles_before = decoder.remaining_handles();
4211 if let Some((inlined, num_bytes, num_handles)) =
4212 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4213 {
4214 let member_inline_size =
4215 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4216 if inlined != (member_inline_size <= 4) {
4217 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4218 }
4219 let inner_offset;
4220 let mut inner_depth = depth.clone();
4221 if inlined {
4222 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4223 inner_offset = next_offset;
4224 } else {
4225 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4226 inner_depth.increment()?;
4227 }
4228 let val_ref = self.remote.get_or_insert_with(|| fidl::new_empty!(bool, D));
4229 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4230 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4231 {
4232 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4233 }
4234 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4235 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4236 }
4237 }
4238
4239 next_offset += envelope_size;
4240 _next_ordinal_to_read += 1;
4241 if next_offset >= end_offset {
4242 return Ok(());
4243 }
4244
4245 while _next_ordinal_to_read < 4 {
4247 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4248 _next_ordinal_to_read += 1;
4249 next_offset += envelope_size;
4250 }
4251
4252 let next_out_of_line = decoder.next_out_of_line();
4253 let handles_before = decoder.remaining_handles();
4254 if let Some((inlined, num_bytes, num_handles)) =
4255 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4256 {
4257 let member_inline_size =
4258 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4259 if inlined != (member_inline_size <= 4) {
4260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4261 }
4262 let inner_offset;
4263 let mut inner_depth = depth.clone();
4264 if inlined {
4265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4266 inner_offset = next_offset;
4267 } else {
4268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4269 inner_depth.increment()?;
4270 }
4271 let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u16, D));
4272 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4274 {
4275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4276 }
4277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4279 }
4280 }
4281
4282 next_offset += envelope_size;
4283
4284 while next_offset < end_offset {
4286 _next_ordinal_to_read += 1;
4287 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4288 next_offset += envelope_size;
4289 }
4290
4291 Ok(())
4292 }
4293 }
4294
4295 impl MacSublayerSupport {
4296 #[inline(always)]
4297 fn max_ordinal_present(&self) -> u64 {
4298 if let Some(_) = self.device {
4299 return 3;
4300 }
4301 if let Some(_) = self.data_plane {
4302 return 2;
4303 }
4304 if let Some(_) = self.rate_selection_offload {
4305 return 1;
4306 }
4307 0
4308 }
4309 }
4310
4311 impl fidl::encoding::ValueTypeMarker for MacSublayerSupport {
4312 type Borrowed<'a> = &'a Self;
4313 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4314 value
4315 }
4316 }
4317
4318 unsafe impl fidl::encoding::TypeMarker for MacSublayerSupport {
4319 type Owned = Self;
4320
4321 #[inline(always)]
4322 fn inline_align(_context: fidl::encoding::Context) -> usize {
4323 8
4324 }
4325
4326 #[inline(always)]
4327 fn inline_size(_context: fidl::encoding::Context) -> usize {
4328 16
4329 }
4330 }
4331
4332 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacSublayerSupport, D>
4333 for &MacSublayerSupport
4334 {
4335 unsafe fn encode(
4336 self,
4337 encoder: &mut fidl::encoding::Encoder<'_, D>,
4338 offset: usize,
4339 mut depth: fidl::encoding::Depth,
4340 ) -> fidl::Result<()> {
4341 encoder.debug_check_bounds::<MacSublayerSupport>(offset);
4342 let max_ordinal: u64 = self.max_ordinal_present();
4344 encoder.write_num(max_ordinal, offset);
4345 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4346 if max_ordinal == 0 {
4348 return Ok(());
4349 }
4350 depth.increment()?;
4351 let envelope_size = 8;
4352 let bytes_len = max_ordinal as usize * envelope_size;
4353 #[allow(unused_variables)]
4354 let offset = encoder.out_of_line_offset(bytes_len);
4355 let mut _prev_end_offset: usize = 0;
4356 if 1 > max_ordinal {
4357 return Ok(());
4358 }
4359
4360 let cur_offset: usize = (1 - 1) * envelope_size;
4363
4364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4366
4367 fidl::encoding::encode_in_envelope_optional::<RateSelectionOffloadExtension, D>(
4372 self.rate_selection_offload.as_ref().map(
4373 <RateSelectionOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
4374 ),
4375 encoder,
4376 offset + cur_offset,
4377 depth,
4378 )?;
4379
4380 _prev_end_offset = cur_offset + envelope_size;
4381 if 2 > max_ordinal {
4382 return Ok(());
4383 }
4384
4385 let cur_offset: usize = (2 - 1) * envelope_size;
4388
4389 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4391
4392 fidl::encoding::encode_in_envelope_optional::<DataPlaneExtension, D>(
4397 self.data_plane
4398 .as_ref()
4399 .map(<DataPlaneExtension as fidl::encoding::ValueTypeMarker>::borrow),
4400 encoder,
4401 offset + cur_offset,
4402 depth,
4403 )?;
4404
4405 _prev_end_offset = cur_offset + envelope_size;
4406 if 3 > max_ordinal {
4407 return Ok(());
4408 }
4409
4410 let cur_offset: usize = (3 - 1) * envelope_size;
4413
4414 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4416
4417 fidl::encoding::encode_in_envelope_optional::<DeviceExtension, D>(
4422 self.device
4423 .as_ref()
4424 .map(<DeviceExtension as fidl::encoding::ValueTypeMarker>::borrow),
4425 encoder,
4426 offset + cur_offset,
4427 depth,
4428 )?;
4429
4430 _prev_end_offset = cur_offset + envelope_size;
4431
4432 Ok(())
4433 }
4434 }
4435
4436 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacSublayerSupport {
4437 #[inline(always)]
4438 fn new_empty() -> Self {
4439 Self::default()
4440 }
4441
4442 unsafe fn decode(
4443 &mut self,
4444 decoder: &mut fidl::encoding::Decoder<'_, D>,
4445 offset: usize,
4446 mut depth: fidl::encoding::Depth,
4447 ) -> fidl::Result<()> {
4448 decoder.debug_check_bounds::<Self>(offset);
4449 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4450 None => return Err(fidl::Error::NotNullable),
4451 Some(len) => len,
4452 };
4453 if len == 0 {
4455 return Ok(());
4456 };
4457 depth.increment()?;
4458 let envelope_size = 8;
4459 let bytes_len = len * envelope_size;
4460 let offset = decoder.out_of_line_offset(bytes_len)?;
4461 let mut _next_ordinal_to_read = 0;
4463 let mut next_offset = offset;
4464 let end_offset = offset + bytes_len;
4465 _next_ordinal_to_read += 1;
4466 if next_offset >= end_offset {
4467 return Ok(());
4468 }
4469
4470 while _next_ordinal_to_read < 1 {
4472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4473 _next_ordinal_to_read += 1;
4474 next_offset += envelope_size;
4475 }
4476
4477 let next_out_of_line = decoder.next_out_of_line();
4478 let handles_before = decoder.remaining_handles();
4479 if let Some((inlined, num_bytes, num_handles)) =
4480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4481 {
4482 let member_inline_size =
4483 <RateSelectionOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
4484 decoder.context,
4485 );
4486 if inlined != (member_inline_size <= 4) {
4487 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4488 }
4489 let inner_offset;
4490 let mut inner_depth = depth.clone();
4491 if inlined {
4492 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4493 inner_offset = next_offset;
4494 } else {
4495 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4496 inner_depth.increment()?;
4497 }
4498 let val_ref = self
4499 .rate_selection_offload
4500 .get_or_insert_with(|| fidl::new_empty!(RateSelectionOffloadExtension, D));
4501 fidl::decode!(
4502 RateSelectionOffloadExtension,
4503 D,
4504 val_ref,
4505 decoder,
4506 inner_offset,
4507 inner_depth
4508 )?;
4509 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4510 {
4511 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4512 }
4513 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4514 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4515 }
4516 }
4517
4518 next_offset += envelope_size;
4519 _next_ordinal_to_read += 1;
4520 if next_offset >= end_offset {
4521 return Ok(());
4522 }
4523
4524 while _next_ordinal_to_read < 2 {
4526 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4527 _next_ordinal_to_read += 1;
4528 next_offset += envelope_size;
4529 }
4530
4531 let next_out_of_line = decoder.next_out_of_line();
4532 let handles_before = decoder.remaining_handles();
4533 if let Some((inlined, num_bytes, num_handles)) =
4534 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4535 {
4536 let member_inline_size =
4537 <DataPlaneExtension as fidl::encoding::TypeMarker>::inline_size(
4538 decoder.context,
4539 );
4540 if inlined != (member_inline_size <= 4) {
4541 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4542 }
4543 let inner_offset;
4544 let mut inner_depth = depth.clone();
4545 if inlined {
4546 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4547 inner_offset = next_offset;
4548 } else {
4549 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4550 inner_depth.increment()?;
4551 }
4552 let val_ref =
4553 self.data_plane.get_or_insert_with(|| fidl::new_empty!(DataPlaneExtension, D));
4554 fidl::decode!(DataPlaneExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4556 {
4557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4558 }
4559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4561 }
4562 }
4563
4564 next_offset += envelope_size;
4565 _next_ordinal_to_read += 1;
4566 if next_offset >= end_offset {
4567 return Ok(());
4568 }
4569
4570 while _next_ordinal_to_read < 3 {
4572 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4573 _next_ordinal_to_read += 1;
4574 next_offset += envelope_size;
4575 }
4576
4577 let next_out_of_line = decoder.next_out_of_line();
4578 let handles_before = decoder.remaining_handles();
4579 if let Some((inlined, num_bytes, num_handles)) =
4580 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4581 {
4582 let member_inline_size =
4583 <DeviceExtension as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4584 if inlined != (member_inline_size <= 4) {
4585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4586 }
4587 let inner_offset;
4588 let mut inner_depth = depth.clone();
4589 if inlined {
4590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4591 inner_offset = next_offset;
4592 } else {
4593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4594 inner_depth.increment()?;
4595 }
4596 let val_ref =
4597 self.device.get_or_insert_with(|| fidl::new_empty!(DeviceExtension, D));
4598 fidl::decode!(DeviceExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4599 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4600 {
4601 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4602 }
4603 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4604 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4605 }
4606 }
4607
4608 next_offset += envelope_size;
4609
4610 while next_offset < end_offset {
4612 _next_ordinal_to_read += 1;
4613 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4614 next_offset += envelope_size;
4615 }
4616
4617 Ok(())
4618 }
4619 }
4620
4621 impl MfpFeature {
4622 #[inline(always)]
4623 fn max_ordinal_present(&self) -> u64 {
4624 if let Some(_) = self.supported {
4625 return 1;
4626 }
4627 0
4628 }
4629 }
4630
4631 impl fidl::encoding::ValueTypeMarker for MfpFeature {
4632 type Borrowed<'a> = &'a Self;
4633 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4634 value
4635 }
4636 }
4637
4638 unsafe impl fidl::encoding::TypeMarker for MfpFeature {
4639 type Owned = Self;
4640
4641 #[inline(always)]
4642 fn inline_align(_context: fidl::encoding::Context) -> usize {
4643 8
4644 }
4645
4646 #[inline(always)]
4647 fn inline_size(_context: fidl::encoding::Context) -> usize {
4648 16
4649 }
4650 }
4651
4652 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MfpFeature, D>
4653 for &MfpFeature
4654 {
4655 unsafe fn encode(
4656 self,
4657 encoder: &mut fidl::encoding::Encoder<'_, D>,
4658 offset: usize,
4659 mut depth: fidl::encoding::Depth,
4660 ) -> fidl::Result<()> {
4661 encoder.debug_check_bounds::<MfpFeature>(offset);
4662 let max_ordinal: u64 = self.max_ordinal_present();
4664 encoder.write_num(max_ordinal, offset);
4665 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4666 if max_ordinal == 0 {
4668 return Ok(());
4669 }
4670 depth.increment()?;
4671 let envelope_size = 8;
4672 let bytes_len = max_ordinal as usize * envelope_size;
4673 #[allow(unused_variables)]
4674 let offset = encoder.out_of_line_offset(bytes_len);
4675 let mut _prev_end_offset: usize = 0;
4676 if 1 > max_ordinal {
4677 return Ok(());
4678 }
4679
4680 let cur_offset: usize = (1 - 1) * envelope_size;
4683
4684 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4686
4687 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4692 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4693 encoder,
4694 offset + cur_offset,
4695 depth,
4696 )?;
4697
4698 _prev_end_offset = cur_offset + envelope_size;
4699
4700 Ok(())
4701 }
4702 }
4703
4704 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MfpFeature {
4705 #[inline(always)]
4706 fn new_empty() -> Self {
4707 Self::default()
4708 }
4709
4710 unsafe fn decode(
4711 &mut self,
4712 decoder: &mut fidl::encoding::Decoder<'_, D>,
4713 offset: usize,
4714 mut depth: fidl::encoding::Depth,
4715 ) -> fidl::Result<()> {
4716 decoder.debug_check_bounds::<Self>(offset);
4717 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4718 None => return Err(fidl::Error::NotNullable),
4719 Some(len) => len,
4720 };
4721 if len == 0 {
4723 return Ok(());
4724 };
4725 depth.increment()?;
4726 let envelope_size = 8;
4727 let bytes_len = len * envelope_size;
4728 let offset = decoder.out_of_line_offset(bytes_len)?;
4729 let mut _next_ordinal_to_read = 0;
4731 let mut next_offset = offset;
4732 let end_offset = offset + bytes_len;
4733 _next_ordinal_to_read += 1;
4734 if next_offset >= end_offset {
4735 return Ok(());
4736 }
4737
4738 while _next_ordinal_to_read < 1 {
4740 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4741 _next_ordinal_to_read += 1;
4742 next_offset += envelope_size;
4743 }
4744
4745 let next_out_of_line = decoder.next_out_of_line();
4746 let handles_before = decoder.remaining_handles();
4747 if let Some((inlined, num_bytes, num_handles)) =
4748 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4749 {
4750 let member_inline_size =
4751 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4752 if inlined != (member_inline_size <= 4) {
4753 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4754 }
4755 let inner_offset;
4756 let mut inner_depth = depth.clone();
4757 if inlined {
4758 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4759 inner_offset = next_offset;
4760 } else {
4761 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4762 inner_depth.increment()?;
4763 }
4764 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4765 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4766 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4767 {
4768 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4769 }
4770 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4771 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4772 }
4773 }
4774
4775 next_offset += envelope_size;
4776
4777 while next_offset < end_offset {
4779 _next_ordinal_to_read += 1;
4780 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4781 next_offset += envelope_size;
4782 }
4783
4784 Ok(())
4785 }
4786 }
4787
4788 impl OweFeature {
4789 #[inline(always)]
4790 fn max_ordinal_present(&self) -> u64 {
4791 if let Some(_) = self.supported {
4792 return 1;
4793 }
4794 0
4795 }
4796 }
4797
4798 impl fidl::encoding::ValueTypeMarker for OweFeature {
4799 type Borrowed<'a> = &'a Self;
4800 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4801 value
4802 }
4803 }
4804
4805 unsafe impl fidl::encoding::TypeMarker for OweFeature {
4806 type Owned = Self;
4807
4808 #[inline(always)]
4809 fn inline_align(_context: fidl::encoding::Context) -> usize {
4810 8
4811 }
4812
4813 #[inline(always)]
4814 fn inline_size(_context: fidl::encoding::Context) -> usize {
4815 16
4816 }
4817 }
4818
4819 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OweFeature, D>
4820 for &OweFeature
4821 {
4822 unsafe fn encode(
4823 self,
4824 encoder: &mut fidl::encoding::Encoder<'_, D>,
4825 offset: usize,
4826 mut depth: fidl::encoding::Depth,
4827 ) -> fidl::Result<()> {
4828 encoder.debug_check_bounds::<OweFeature>(offset);
4829 let max_ordinal: u64 = self.max_ordinal_present();
4831 encoder.write_num(max_ordinal, offset);
4832 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4833 if max_ordinal == 0 {
4835 return Ok(());
4836 }
4837 depth.increment()?;
4838 let envelope_size = 8;
4839 let bytes_len = max_ordinal as usize * envelope_size;
4840 #[allow(unused_variables)]
4841 let offset = encoder.out_of_line_offset(bytes_len);
4842 let mut _prev_end_offset: usize = 0;
4843 if 1 > max_ordinal {
4844 return Ok(());
4845 }
4846
4847 let cur_offset: usize = (1 - 1) * envelope_size;
4850
4851 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4853
4854 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4859 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4860 encoder,
4861 offset + cur_offset,
4862 depth,
4863 )?;
4864
4865 _prev_end_offset = cur_offset + envelope_size;
4866
4867 Ok(())
4868 }
4869 }
4870
4871 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OweFeature {
4872 #[inline(always)]
4873 fn new_empty() -> Self {
4874 Self::default()
4875 }
4876
4877 unsafe fn decode(
4878 &mut self,
4879 decoder: &mut fidl::encoding::Decoder<'_, D>,
4880 offset: usize,
4881 mut depth: fidl::encoding::Depth,
4882 ) -> fidl::Result<()> {
4883 decoder.debug_check_bounds::<Self>(offset);
4884 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4885 None => return Err(fidl::Error::NotNullable),
4886 Some(len) => len,
4887 };
4888 if len == 0 {
4890 return Ok(());
4891 };
4892 depth.increment()?;
4893 let envelope_size = 8;
4894 let bytes_len = len * envelope_size;
4895 let offset = decoder.out_of_line_offset(bytes_len)?;
4896 let mut _next_ordinal_to_read = 0;
4898 let mut next_offset = offset;
4899 let end_offset = offset + bytes_len;
4900 _next_ordinal_to_read += 1;
4901 if next_offset >= end_offset {
4902 return Ok(());
4903 }
4904
4905 while _next_ordinal_to_read < 1 {
4907 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4908 _next_ordinal_to_read += 1;
4909 next_offset += envelope_size;
4910 }
4911
4912 let next_out_of_line = decoder.next_out_of_line();
4913 let handles_before = decoder.remaining_handles();
4914 if let Some((inlined, num_bytes, num_handles)) =
4915 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4916 {
4917 let member_inline_size =
4918 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4919 if inlined != (member_inline_size <= 4) {
4920 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4921 }
4922 let inner_offset;
4923 let mut inner_depth = depth.clone();
4924 if inlined {
4925 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4926 inner_offset = next_offset;
4927 } else {
4928 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4929 inner_depth.increment()?;
4930 }
4931 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4932 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4933 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4934 {
4935 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4936 }
4937 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4938 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4939 }
4940 }
4941
4942 next_offset += envelope_size;
4943
4944 while next_offset < end_offset {
4946 _next_ordinal_to_read += 1;
4947 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4948 next_offset += envelope_size;
4949 }
4950
4951 Ok(())
4952 }
4953 }
4954
4955 impl ProbeResponseOffloadExtension {
4956 #[inline(always)]
4957 fn max_ordinal_present(&self) -> u64 {
4958 if let Some(_) = self.supported {
4959 return 1;
4960 }
4961 0
4962 }
4963 }
4964
4965 impl fidl::encoding::ValueTypeMarker for ProbeResponseOffloadExtension {
4966 type Borrowed<'a> = &'a Self;
4967 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4968 value
4969 }
4970 }
4971
4972 unsafe impl fidl::encoding::TypeMarker for ProbeResponseOffloadExtension {
4973 type Owned = Self;
4974
4975 #[inline(always)]
4976 fn inline_align(_context: fidl::encoding::Context) -> usize {
4977 8
4978 }
4979
4980 #[inline(always)]
4981 fn inline_size(_context: fidl::encoding::Context) -> usize {
4982 16
4983 }
4984 }
4985
4986 unsafe impl<D: fidl::encoding::ResourceDialect>
4987 fidl::encoding::Encode<ProbeResponseOffloadExtension, D>
4988 for &ProbeResponseOffloadExtension
4989 {
4990 unsafe fn encode(
4991 self,
4992 encoder: &mut fidl::encoding::Encoder<'_, D>,
4993 offset: usize,
4994 mut depth: fidl::encoding::Depth,
4995 ) -> fidl::Result<()> {
4996 encoder.debug_check_bounds::<ProbeResponseOffloadExtension>(offset);
4997 let max_ordinal: u64 = self.max_ordinal_present();
4999 encoder.write_num(max_ordinal, offset);
5000 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5001 if max_ordinal == 0 {
5003 return Ok(());
5004 }
5005 depth.increment()?;
5006 let envelope_size = 8;
5007 let bytes_len = max_ordinal as usize * envelope_size;
5008 #[allow(unused_variables)]
5009 let offset = encoder.out_of_line_offset(bytes_len);
5010 let mut _prev_end_offset: usize = 0;
5011 if 1 > max_ordinal {
5012 return Ok(());
5013 }
5014
5015 let cur_offset: usize = (1 - 1) * envelope_size;
5018
5019 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5021
5022 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5027 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5028 encoder,
5029 offset + cur_offset,
5030 depth,
5031 )?;
5032
5033 _prev_end_offset = cur_offset + envelope_size;
5034
5035 Ok(())
5036 }
5037 }
5038
5039 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5040 for ProbeResponseOffloadExtension
5041 {
5042 #[inline(always)]
5043 fn new_empty() -> Self {
5044 Self::default()
5045 }
5046
5047 unsafe fn decode(
5048 &mut self,
5049 decoder: &mut fidl::encoding::Decoder<'_, D>,
5050 offset: usize,
5051 mut depth: fidl::encoding::Depth,
5052 ) -> fidl::Result<()> {
5053 decoder.debug_check_bounds::<Self>(offset);
5054 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5055 None => return Err(fidl::Error::NotNullable),
5056 Some(len) => len,
5057 };
5058 if len == 0 {
5060 return Ok(());
5061 };
5062 depth.increment()?;
5063 let envelope_size = 8;
5064 let bytes_len = len * envelope_size;
5065 let offset = decoder.out_of_line_offset(bytes_len)?;
5066 let mut _next_ordinal_to_read = 0;
5068 let mut next_offset = offset;
5069 let end_offset = offset + bytes_len;
5070 _next_ordinal_to_read += 1;
5071 if next_offset >= end_offset {
5072 return Ok(());
5073 }
5074
5075 while _next_ordinal_to_read < 1 {
5077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5078 _next_ordinal_to_read += 1;
5079 next_offset += envelope_size;
5080 }
5081
5082 let next_out_of_line = decoder.next_out_of_line();
5083 let handles_before = decoder.remaining_handles();
5084 if let Some((inlined, num_bytes, num_handles)) =
5085 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5086 {
5087 let member_inline_size =
5088 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5089 if inlined != (member_inline_size <= 4) {
5090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5091 }
5092 let inner_offset;
5093 let mut inner_depth = depth.clone();
5094 if inlined {
5095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5096 inner_offset = next_offset;
5097 } else {
5098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5099 inner_depth.increment()?;
5100 }
5101 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5102 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5103 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5104 {
5105 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5106 }
5107 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5108 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5109 }
5110 }
5111
5112 next_offset += envelope_size;
5113
5114 while next_offset < end_offset {
5116 _next_ordinal_to_read += 1;
5117 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5118 next_offset += envelope_size;
5119 }
5120
5121 Ok(())
5122 }
5123 }
5124
5125 impl RateSelectionOffloadExtension {
5126 #[inline(always)]
5127 fn max_ordinal_present(&self) -> u64 {
5128 if let Some(_) = self.supported {
5129 return 1;
5130 }
5131 0
5132 }
5133 }
5134
5135 impl fidl::encoding::ValueTypeMarker for RateSelectionOffloadExtension {
5136 type Borrowed<'a> = &'a Self;
5137 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5138 value
5139 }
5140 }
5141
5142 unsafe impl fidl::encoding::TypeMarker for RateSelectionOffloadExtension {
5143 type Owned = Self;
5144
5145 #[inline(always)]
5146 fn inline_align(_context: fidl::encoding::Context) -> usize {
5147 8
5148 }
5149
5150 #[inline(always)]
5151 fn inline_size(_context: fidl::encoding::Context) -> usize {
5152 16
5153 }
5154 }
5155
5156 unsafe impl<D: fidl::encoding::ResourceDialect>
5157 fidl::encoding::Encode<RateSelectionOffloadExtension, D>
5158 for &RateSelectionOffloadExtension
5159 {
5160 unsafe fn encode(
5161 self,
5162 encoder: &mut fidl::encoding::Encoder<'_, D>,
5163 offset: usize,
5164 mut depth: fidl::encoding::Depth,
5165 ) -> fidl::Result<()> {
5166 encoder.debug_check_bounds::<RateSelectionOffloadExtension>(offset);
5167 let max_ordinal: u64 = self.max_ordinal_present();
5169 encoder.write_num(max_ordinal, offset);
5170 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5171 if max_ordinal == 0 {
5173 return Ok(());
5174 }
5175 depth.increment()?;
5176 let envelope_size = 8;
5177 let bytes_len = max_ordinal as usize * envelope_size;
5178 #[allow(unused_variables)]
5179 let offset = encoder.out_of_line_offset(bytes_len);
5180 let mut _prev_end_offset: usize = 0;
5181 if 1 > max_ordinal {
5182 return Ok(());
5183 }
5184
5185 let cur_offset: usize = (1 - 1) * envelope_size;
5188
5189 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5191
5192 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5197 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5198 encoder,
5199 offset + cur_offset,
5200 depth,
5201 )?;
5202
5203 _prev_end_offset = cur_offset + envelope_size;
5204
5205 Ok(())
5206 }
5207 }
5208
5209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5210 for RateSelectionOffloadExtension
5211 {
5212 #[inline(always)]
5213 fn new_empty() -> Self {
5214 Self::default()
5215 }
5216
5217 unsafe fn decode(
5218 &mut self,
5219 decoder: &mut fidl::encoding::Decoder<'_, D>,
5220 offset: usize,
5221 mut depth: fidl::encoding::Depth,
5222 ) -> fidl::Result<()> {
5223 decoder.debug_check_bounds::<Self>(offset);
5224 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5225 None => return Err(fidl::Error::NotNullable),
5226 Some(len) => len,
5227 };
5228 if len == 0 {
5230 return Ok(());
5231 };
5232 depth.increment()?;
5233 let envelope_size = 8;
5234 let bytes_len = len * envelope_size;
5235 let offset = decoder.out_of_line_offset(bytes_len)?;
5236 let mut _next_ordinal_to_read = 0;
5238 let mut next_offset = offset;
5239 let end_offset = offset + bytes_len;
5240 _next_ordinal_to_read += 1;
5241 if next_offset >= end_offset {
5242 return Ok(());
5243 }
5244
5245 while _next_ordinal_to_read < 1 {
5247 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5248 _next_ordinal_to_read += 1;
5249 next_offset += envelope_size;
5250 }
5251
5252 let next_out_of_line = decoder.next_out_of_line();
5253 let handles_before = decoder.remaining_handles();
5254 if let Some((inlined, num_bytes, num_handles)) =
5255 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5256 {
5257 let member_inline_size =
5258 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5259 if inlined != (member_inline_size <= 4) {
5260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5261 }
5262 let inner_offset;
5263 let mut inner_depth = depth.clone();
5264 if inlined {
5265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5266 inner_offset = next_offset;
5267 } else {
5268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5269 inner_depth.increment()?;
5270 }
5271 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5272 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5273 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5274 {
5275 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5276 }
5277 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5278 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5279 }
5280 }
5281
5282 next_offset += envelope_size;
5283
5284 while next_offset < end_offset {
5286 _next_ordinal_to_read += 1;
5287 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5288 next_offset += envelope_size;
5289 }
5290
5291 Ok(())
5292 }
5293 }
5294
5295 impl SaeFeature {
5296 #[inline(always)]
5297 fn max_ordinal_present(&self) -> u64 {
5298 if let Some(_) = self.hash_to_element_supported {
5299 return 3;
5300 }
5301 if let Some(_) = self.sme_handler_supported {
5302 return 2;
5303 }
5304 if let Some(_) = self.driver_handler_supported {
5305 return 1;
5306 }
5307 0
5308 }
5309 }
5310
5311 impl fidl::encoding::ValueTypeMarker for SaeFeature {
5312 type Borrowed<'a> = &'a Self;
5313 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5314 value
5315 }
5316 }
5317
5318 unsafe impl fidl::encoding::TypeMarker for SaeFeature {
5319 type Owned = Self;
5320
5321 #[inline(always)]
5322 fn inline_align(_context: fidl::encoding::Context) -> usize {
5323 8
5324 }
5325
5326 #[inline(always)]
5327 fn inline_size(_context: fidl::encoding::Context) -> usize {
5328 16
5329 }
5330 }
5331
5332 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFeature, D>
5333 for &SaeFeature
5334 {
5335 unsafe fn encode(
5336 self,
5337 encoder: &mut fidl::encoding::Encoder<'_, D>,
5338 offset: usize,
5339 mut depth: fidl::encoding::Depth,
5340 ) -> fidl::Result<()> {
5341 encoder.debug_check_bounds::<SaeFeature>(offset);
5342 let max_ordinal: u64 = self.max_ordinal_present();
5344 encoder.write_num(max_ordinal, offset);
5345 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5346 if max_ordinal == 0 {
5348 return Ok(());
5349 }
5350 depth.increment()?;
5351 let envelope_size = 8;
5352 let bytes_len = max_ordinal as usize * envelope_size;
5353 #[allow(unused_variables)]
5354 let offset = encoder.out_of_line_offset(bytes_len);
5355 let mut _prev_end_offset: usize = 0;
5356 if 1 > max_ordinal {
5357 return Ok(());
5358 }
5359
5360 let cur_offset: usize = (1 - 1) * envelope_size;
5363
5364 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5366
5367 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5372 self.driver_handler_supported
5373 .as_ref()
5374 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5375 encoder,
5376 offset + cur_offset,
5377 depth,
5378 )?;
5379
5380 _prev_end_offset = cur_offset + envelope_size;
5381 if 2 > max_ordinal {
5382 return Ok(());
5383 }
5384
5385 let cur_offset: usize = (2 - 1) * envelope_size;
5388
5389 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5391
5392 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5397 self.sme_handler_supported
5398 .as_ref()
5399 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5400 encoder,
5401 offset + cur_offset,
5402 depth,
5403 )?;
5404
5405 _prev_end_offset = cur_offset + envelope_size;
5406 if 3 > max_ordinal {
5407 return Ok(());
5408 }
5409
5410 let cur_offset: usize = (3 - 1) * envelope_size;
5413
5414 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5416
5417 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5422 self.hash_to_element_supported
5423 .as_ref()
5424 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5425 encoder,
5426 offset + cur_offset,
5427 depth,
5428 )?;
5429
5430 _prev_end_offset = cur_offset + envelope_size;
5431
5432 Ok(())
5433 }
5434 }
5435
5436 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFeature {
5437 #[inline(always)]
5438 fn new_empty() -> Self {
5439 Self::default()
5440 }
5441
5442 unsafe fn decode(
5443 &mut self,
5444 decoder: &mut fidl::encoding::Decoder<'_, D>,
5445 offset: usize,
5446 mut depth: fidl::encoding::Depth,
5447 ) -> fidl::Result<()> {
5448 decoder.debug_check_bounds::<Self>(offset);
5449 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5450 None => return Err(fidl::Error::NotNullable),
5451 Some(len) => len,
5452 };
5453 if len == 0 {
5455 return Ok(());
5456 };
5457 depth.increment()?;
5458 let envelope_size = 8;
5459 let bytes_len = len * envelope_size;
5460 let offset = decoder.out_of_line_offset(bytes_len)?;
5461 let mut _next_ordinal_to_read = 0;
5463 let mut next_offset = offset;
5464 let end_offset = offset + bytes_len;
5465 _next_ordinal_to_read += 1;
5466 if next_offset >= end_offset {
5467 return Ok(());
5468 }
5469
5470 while _next_ordinal_to_read < 1 {
5472 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5473 _next_ordinal_to_read += 1;
5474 next_offset += envelope_size;
5475 }
5476
5477 let next_out_of_line = decoder.next_out_of_line();
5478 let handles_before = decoder.remaining_handles();
5479 if let Some((inlined, num_bytes, num_handles)) =
5480 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5481 {
5482 let member_inline_size =
5483 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5484 if inlined != (member_inline_size <= 4) {
5485 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5486 }
5487 let inner_offset;
5488 let mut inner_depth = depth.clone();
5489 if inlined {
5490 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5491 inner_offset = next_offset;
5492 } else {
5493 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5494 inner_depth.increment()?;
5495 }
5496 let val_ref =
5497 self.driver_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5498 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5499 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5500 {
5501 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5502 }
5503 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5504 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5505 }
5506 }
5507
5508 next_offset += envelope_size;
5509 _next_ordinal_to_read += 1;
5510 if next_offset >= end_offset {
5511 return Ok(());
5512 }
5513
5514 while _next_ordinal_to_read < 2 {
5516 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5517 _next_ordinal_to_read += 1;
5518 next_offset += envelope_size;
5519 }
5520
5521 let next_out_of_line = decoder.next_out_of_line();
5522 let handles_before = decoder.remaining_handles();
5523 if let Some((inlined, num_bytes, num_handles)) =
5524 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5525 {
5526 let member_inline_size =
5527 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5528 if inlined != (member_inline_size <= 4) {
5529 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5530 }
5531 let inner_offset;
5532 let mut inner_depth = depth.clone();
5533 if inlined {
5534 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5535 inner_offset = next_offset;
5536 } else {
5537 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5538 inner_depth.increment()?;
5539 }
5540 let val_ref =
5541 self.sme_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5542 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5543 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5544 {
5545 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5546 }
5547 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5548 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5549 }
5550 }
5551
5552 next_offset += envelope_size;
5553 _next_ordinal_to_read += 1;
5554 if next_offset >= end_offset {
5555 return Ok(());
5556 }
5557
5558 while _next_ordinal_to_read < 3 {
5560 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5561 _next_ordinal_to_read += 1;
5562 next_offset += envelope_size;
5563 }
5564
5565 let next_out_of_line = decoder.next_out_of_line();
5566 let handles_before = decoder.remaining_handles();
5567 if let Some((inlined, num_bytes, num_handles)) =
5568 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5569 {
5570 let member_inline_size =
5571 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5572 if inlined != (member_inline_size <= 4) {
5573 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5574 }
5575 let inner_offset;
5576 let mut inner_depth = depth.clone();
5577 if inlined {
5578 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5579 inner_offset = next_offset;
5580 } else {
5581 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5582 inner_depth.increment()?;
5583 }
5584 let val_ref =
5585 self.hash_to_element_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5586 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5587 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5588 {
5589 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5590 }
5591 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5592 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5593 }
5594 }
5595
5596 next_offset += envelope_size;
5597
5598 while next_offset < end_offset {
5600 _next_ordinal_to_read += 1;
5601 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5602 next_offset += envelope_size;
5603 }
5604
5605 Ok(())
5606 }
5607 }
5608
5609 impl ScanOffloadExtension {
5610 #[inline(always)]
5611 fn max_ordinal_present(&self) -> u64 {
5612 if let Some(_) = self.scan_cancel_supported {
5613 return 2;
5614 }
5615 if let Some(_) = self.supported {
5616 return 1;
5617 }
5618 0
5619 }
5620 }
5621
5622 impl fidl::encoding::ValueTypeMarker for ScanOffloadExtension {
5623 type Borrowed<'a> = &'a Self;
5624 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5625 value
5626 }
5627 }
5628
5629 unsafe impl fidl::encoding::TypeMarker for ScanOffloadExtension {
5630 type Owned = Self;
5631
5632 #[inline(always)]
5633 fn inline_align(_context: fidl::encoding::Context) -> usize {
5634 8
5635 }
5636
5637 #[inline(always)]
5638 fn inline_size(_context: fidl::encoding::Context) -> usize {
5639 16
5640 }
5641 }
5642
5643 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOffloadExtension, D>
5644 for &ScanOffloadExtension
5645 {
5646 unsafe fn encode(
5647 self,
5648 encoder: &mut fidl::encoding::Encoder<'_, D>,
5649 offset: usize,
5650 mut depth: fidl::encoding::Depth,
5651 ) -> fidl::Result<()> {
5652 encoder.debug_check_bounds::<ScanOffloadExtension>(offset);
5653 let max_ordinal: u64 = self.max_ordinal_present();
5655 encoder.write_num(max_ordinal, offset);
5656 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5657 if max_ordinal == 0 {
5659 return Ok(());
5660 }
5661 depth.increment()?;
5662 let envelope_size = 8;
5663 let bytes_len = max_ordinal as usize * envelope_size;
5664 #[allow(unused_variables)]
5665 let offset = encoder.out_of_line_offset(bytes_len);
5666 let mut _prev_end_offset: usize = 0;
5667 if 1 > max_ordinal {
5668 return Ok(());
5669 }
5670
5671 let cur_offset: usize = (1 - 1) * envelope_size;
5674
5675 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5677
5678 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5683 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5684 encoder,
5685 offset + cur_offset,
5686 depth,
5687 )?;
5688
5689 _prev_end_offset = cur_offset + envelope_size;
5690 if 2 > max_ordinal {
5691 return Ok(());
5692 }
5693
5694 let cur_offset: usize = (2 - 1) * envelope_size;
5697
5698 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5700
5701 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5706 self.scan_cancel_supported
5707 .as_ref()
5708 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5709 encoder,
5710 offset + cur_offset,
5711 depth,
5712 )?;
5713
5714 _prev_end_offset = cur_offset + envelope_size;
5715
5716 Ok(())
5717 }
5718 }
5719
5720 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOffloadExtension {
5721 #[inline(always)]
5722 fn new_empty() -> Self {
5723 Self::default()
5724 }
5725
5726 unsafe fn decode(
5727 &mut self,
5728 decoder: &mut fidl::encoding::Decoder<'_, D>,
5729 offset: usize,
5730 mut depth: fidl::encoding::Depth,
5731 ) -> fidl::Result<()> {
5732 decoder.debug_check_bounds::<Self>(offset);
5733 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5734 None => return Err(fidl::Error::NotNullable),
5735 Some(len) => len,
5736 };
5737 if len == 0 {
5739 return Ok(());
5740 };
5741 depth.increment()?;
5742 let envelope_size = 8;
5743 let bytes_len = len * envelope_size;
5744 let offset = decoder.out_of_line_offset(bytes_len)?;
5745 let mut _next_ordinal_to_read = 0;
5747 let mut next_offset = offset;
5748 let end_offset = offset + bytes_len;
5749 _next_ordinal_to_read += 1;
5750 if next_offset >= end_offset {
5751 return Ok(());
5752 }
5753
5754 while _next_ordinal_to_read < 1 {
5756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5757 _next_ordinal_to_read += 1;
5758 next_offset += envelope_size;
5759 }
5760
5761 let next_out_of_line = decoder.next_out_of_line();
5762 let handles_before = decoder.remaining_handles();
5763 if let Some((inlined, num_bytes, num_handles)) =
5764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5765 {
5766 let member_inline_size =
5767 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5768 if inlined != (member_inline_size <= 4) {
5769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5770 }
5771 let inner_offset;
5772 let mut inner_depth = depth.clone();
5773 if inlined {
5774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5775 inner_offset = next_offset;
5776 } else {
5777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5778 inner_depth.increment()?;
5779 }
5780 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5781 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5782 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5783 {
5784 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5785 }
5786 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5787 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5788 }
5789 }
5790
5791 next_offset += envelope_size;
5792 _next_ordinal_to_read += 1;
5793 if next_offset >= end_offset {
5794 return Ok(());
5795 }
5796
5797 while _next_ordinal_to_read < 2 {
5799 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5800 _next_ordinal_to_read += 1;
5801 next_offset += envelope_size;
5802 }
5803
5804 let next_out_of_line = decoder.next_out_of_line();
5805 let handles_before = decoder.remaining_handles();
5806 if let Some((inlined, num_bytes, num_handles)) =
5807 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5808 {
5809 let member_inline_size =
5810 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5811 if inlined != (member_inline_size <= 4) {
5812 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5813 }
5814 let inner_offset;
5815 let mut inner_depth = depth.clone();
5816 if inlined {
5817 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5818 inner_offset = next_offset;
5819 } else {
5820 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5821 inner_depth.increment()?;
5822 }
5823 let val_ref =
5824 self.scan_cancel_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5825 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5826 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5827 {
5828 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5829 }
5830 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5831 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5832 }
5833 }
5834
5835 next_offset += envelope_size;
5836
5837 while next_offset < end_offset {
5839 _next_ordinal_to_read += 1;
5840 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5841 next_offset += envelope_size;
5842 }
5843
5844 Ok(())
5845 }
5846 }
5847
5848 impl ScheduledScanMatchSet {
5849 #[inline(always)]
5850 fn max_ordinal_present(&self) -> u64 {
5851 if let Some(_) = self.band_rssi_adjustments {
5852 return 5;
5853 }
5854 if let Some(_) = self.relative_rssi_threshold {
5855 return 4;
5856 }
5857 if let Some(_) = self.min_rssi_threshold {
5858 return 3;
5859 }
5860 if let Some(_) = self.bssid {
5861 return 2;
5862 }
5863 if let Some(_) = self.ssid {
5864 return 1;
5865 }
5866 0
5867 }
5868 }
5869
5870 impl fidl::encoding::ValueTypeMarker for ScheduledScanMatchSet {
5871 type Borrowed<'a> = &'a Self;
5872 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5873 value
5874 }
5875 }
5876
5877 unsafe impl fidl::encoding::TypeMarker for ScheduledScanMatchSet {
5878 type Owned = Self;
5879
5880 #[inline(always)]
5881 fn inline_align(_context: fidl::encoding::Context) -> usize {
5882 8
5883 }
5884
5885 #[inline(always)]
5886 fn inline_size(_context: fidl::encoding::Context) -> usize {
5887 16
5888 }
5889 }
5890
5891 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScheduledScanMatchSet, D>
5892 for &ScheduledScanMatchSet
5893 {
5894 unsafe fn encode(
5895 self,
5896 encoder: &mut fidl::encoding::Encoder<'_, D>,
5897 offset: usize,
5898 mut depth: fidl::encoding::Depth,
5899 ) -> fidl::Result<()> {
5900 encoder.debug_check_bounds::<ScheduledScanMatchSet>(offset);
5901 let max_ordinal: u64 = self.max_ordinal_present();
5903 encoder.write_num(max_ordinal, offset);
5904 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5905 if max_ordinal == 0 {
5907 return Ok(());
5908 }
5909 depth.increment()?;
5910 let envelope_size = 8;
5911 let bytes_len = max_ordinal as usize * envelope_size;
5912 #[allow(unused_variables)]
5913 let offset = encoder.out_of_line_offset(bytes_len);
5914 let mut _prev_end_offset: usize = 0;
5915 if 1 > max_ordinal {
5916 return Ok(());
5917 }
5918
5919 let cur_offset: usize = (1 - 1) * envelope_size;
5922
5923 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5925
5926 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
5931 self.ssid.as_ref().map(
5932 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
5933 ),
5934 encoder,
5935 offset + cur_offset,
5936 depth,
5937 )?;
5938
5939 _prev_end_offset = cur_offset + envelope_size;
5940 if 2 > max_ordinal {
5941 return Ok(());
5942 }
5943
5944 let cur_offset: usize = (2 - 1) * envelope_size;
5947
5948 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5950
5951 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5956 self.bssid
5957 .as_ref()
5958 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5959 encoder,
5960 offset + cur_offset,
5961 depth,
5962 )?;
5963
5964 _prev_end_offset = cur_offset + envelope_size;
5965 if 3 > max_ordinal {
5966 return Ok(());
5967 }
5968
5969 let cur_offset: usize = (3 - 1) * envelope_size;
5972
5973 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5975
5976 fidl::encoding::encode_in_envelope_optional::<i8, D>(
5981 self.min_rssi_threshold
5982 .as_ref()
5983 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
5984 encoder,
5985 offset + cur_offset,
5986 depth,
5987 )?;
5988
5989 _prev_end_offset = cur_offset + envelope_size;
5990 if 4 > max_ordinal {
5991 return Ok(());
5992 }
5993
5994 let cur_offset: usize = (4 - 1) * envelope_size;
5997
5998 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6000
6001 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6006 self.relative_rssi_threshold
6007 .as_ref()
6008 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6009 encoder,
6010 offset + cur_offset,
6011 depth,
6012 )?;
6013
6014 _prev_end_offset = cur_offset + envelope_size;
6015 if 5 > max_ordinal {
6016 return Ok(());
6017 }
6018
6019 let cur_offset: usize = (5 - 1) * envelope_size;
6022
6023 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6025
6026 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<BandRssiAdjustment>, D>(
6031 self.band_rssi_adjustments.as_ref().map(<fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::ValueTypeMarker>::borrow),
6032 encoder, offset + cur_offset, depth
6033 )?;
6034
6035 _prev_end_offset = cur_offset + envelope_size;
6036
6037 Ok(())
6038 }
6039 }
6040
6041 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScheduledScanMatchSet {
6042 #[inline(always)]
6043 fn new_empty() -> Self {
6044 Self::default()
6045 }
6046
6047 unsafe fn decode(
6048 &mut self,
6049 decoder: &mut fidl::encoding::Decoder<'_, D>,
6050 offset: usize,
6051 mut depth: fidl::encoding::Depth,
6052 ) -> fidl::Result<()> {
6053 decoder.debug_check_bounds::<Self>(offset);
6054 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6055 None => return Err(fidl::Error::NotNullable),
6056 Some(len) => len,
6057 };
6058 if len == 0 {
6060 return Ok(());
6061 };
6062 depth.increment()?;
6063 let envelope_size = 8;
6064 let bytes_len = len * envelope_size;
6065 let offset = decoder.out_of_line_offset(bytes_len)?;
6066 let mut _next_ordinal_to_read = 0;
6068 let mut next_offset = offset;
6069 let end_offset = offset + bytes_len;
6070 _next_ordinal_to_read += 1;
6071 if next_offset >= end_offset {
6072 return Ok(());
6073 }
6074
6075 while _next_ordinal_to_read < 1 {
6077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6078 _next_ordinal_to_read += 1;
6079 next_offset += envelope_size;
6080 }
6081
6082 let next_out_of_line = decoder.next_out_of_line();
6083 let handles_before = decoder.remaining_handles();
6084 if let Some((inlined, num_bytes, num_handles)) =
6085 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6086 {
6087 let member_inline_size =
6088 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6089 decoder.context,
6090 );
6091 if inlined != (member_inline_size <= 4) {
6092 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6093 }
6094 let inner_offset;
6095 let mut inner_depth = depth.clone();
6096 if inlined {
6097 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6098 inner_offset = next_offset;
6099 } else {
6100 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6101 inner_depth.increment()?;
6102 }
6103 let val_ref = self
6104 .ssid
6105 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6106 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6107 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6108 {
6109 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6110 }
6111 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6112 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6113 }
6114 }
6115
6116 next_offset += envelope_size;
6117 _next_ordinal_to_read += 1;
6118 if next_offset >= end_offset {
6119 return Ok(());
6120 }
6121
6122 while _next_ordinal_to_read < 2 {
6124 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6125 _next_ordinal_to_read += 1;
6126 next_offset += envelope_size;
6127 }
6128
6129 let next_out_of_line = decoder.next_out_of_line();
6130 let handles_before = decoder.remaining_handles();
6131 if let Some((inlined, num_bytes, num_handles)) =
6132 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6133 {
6134 let member_inline_size =
6135 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6136 decoder.context,
6137 );
6138 if inlined != (member_inline_size <= 4) {
6139 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6140 }
6141 let inner_offset;
6142 let mut inner_depth = depth.clone();
6143 if inlined {
6144 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6145 inner_offset = next_offset;
6146 } else {
6147 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6148 inner_depth.increment()?;
6149 }
6150 let val_ref = self
6151 .bssid
6152 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6153 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6154 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6155 {
6156 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6157 }
6158 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6159 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6160 }
6161 }
6162
6163 next_offset += envelope_size;
6164 _next_ordinal_to_read += 1;
6165 if next_offset >= end_offset {
6166 return Ok(());
6167 }
6168
6169 while _next_ordinal_to_read < 3 {
6171 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6172 _next_ordinal_to_read += 1;
6173 next_offset += envelope_size;
6174 }
6175
6176 let next_out_of_line = decoder.next_out_of_line();
6177 let handles_before = decoder.remaining_handles();
6178 if let Some((inlined, num_bytes, num_handles)) =
6179 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6180 {
6181 let member_inline_size =
6182 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6183 if inlined != (member_inline_size <= 4) {
6184 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6185 }
6186 let inner_offset;
6187 let mut inner_depth = depth.clone();
6188 if inlined {
6189 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6190 inner_offset = next_offset;
6191 } else {
6192 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6193 inner_depth.increment()?;
6194 }
6195 let val_ref =
6196 self.min_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
6197 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6198 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6199 {
6200 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6201 }
6202 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6203 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6204 }
6205 }
6206
6207 next_offset += envelope_size;
6208 _next_ordinal_to_read += 1;
6209 if next_offset >= end_offset {
6210 return Ok(());
6211 }
6212
6213 while _next_ordinal_to_read < 4 {
6215 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6216 _next_ordinal_to_read += 1;
6217 next_offset += envelope_size;
6218 }
6219
6220 let next_out_of_line = decoder.next_out_of_line();
6221 let handles_before = decoder.remaining_handles();
6222 if let Some((inlined, num_bytes, num_handles)) =
6223 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6224 {
6225 let member_inline_size =
6226 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6227 if inlined != (member_inline_size <= 4) {
6228 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6229 }
6230 let inner_offset;
6231 let mut inner_depth = depth.clone();
6232 if inlined {
6233 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6234 inner_offset = next_offset;
6235 } else {
6236 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6237 inner_depth.increment()?;
6238 }
6239 let val_ref =
6240 self.relative_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
6241 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6242 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6243 {
6244 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6245 }
6246 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6247 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6248 }
6249 }
6250
6251 next_offset += envelope_size;
6252 _next_ordinal_to_read += 1;
6253 if next_offset >= end_offset {
6254 return Ok(());
6255 }
6256
6257 while _next_ordinal_to_read < 5 {
6259 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6260 _next_ordinal_to_read += 1;
6261 next_offset += envelope_size;
6262 }
6263
6264 let next_out_of_line = decoder.next_out_of_line();
6265 let handles_before = decoder.remaining_handles();
6266 if let Some((inlined, num_bytes, num_handles)) =
6267 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6268 {
6269 let member_inline_size = <fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6270 if inlined != (member_inline_size <= 4) {
6271 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6272 }
6273 let inner_offset;
6274 let mut inner_depth = depth.clone();
6275 if inlined {
6276 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6277 inner_offset = next_offset;
6278 } else {
6279 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6280 inner_depth.increment()?;
6281 }
6282 let val_ref = self.band_rssi_adjustments.get_or_insert_with(|| {
6283 fidl::new_empty!(fidl::encoding::UnboundedVector<BandRssiAdjustment>, D)
6284 });
6285 fidl::decode!(
6286 fidl::encoding::UnboundedVector<BandRssiAdjustment>,
6287 D,
6288 val_ref,
6289 decoder,
6290 inner_offset,
6291 inner_depth
6292 )?;
6293 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6294 {
6295 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6296 }
6297 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6298 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6299 }
6300 }
6301
6302 next_offset += envelope_size;
6303
6304 while next_offset < end_offset {
6306 _next_ordinal_to_read += 1;
6307 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6308 next_offset += envelope_size;
6309 }
6310
6311 Ok(())
6312 }
6313 }
6314
6315 impl ScheduledScanRequest {
6316 #[inline(always)]
6317 fn max_ordinal_present(&self) -> u64 {
6318 if let Some(_) = self.match_sets {
6319 return 7;
6320 }
6321 if let Some(_) = self.band_rssi_adjustments {
6322 return 6;
6323 }
6324 if let Some(_) = self.relative_rssi_threshold {
6325 return 5;
6326 }
6327 if let Some(_) = self.min_rssi_threshold {
6328 return 4;
6329 }
6330 if let Some(_) = self.frequencies {
6331 return 3;
6332 }
6333 if let Some(_) = self.ssids {
6334 return 2;
6335 }
6336 if let Some(_) = self.scan_plans {
6337 return 1;
6338 }
6339 0
6340 }
6341 }
6342
6343 impl fidl::encoding::ValueTypeMarker for ScheduledScanRequest {
6344 type Borrowed<'a> = &'a Self;
6345 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6346 value
6347 }
6348 }
6349
6350 unsafe impl fidl::encoding::TypeMarker for ScheduledScanRequest {
6351 type Owned = Self;
6352
6353 #[inline(always)]
6354 fn inline_align(_context: fidl::encoding::Context) -> usize {
6355 8
6356 }
6357
6358 #[inline(always)]
6359 fn inline_size(_context: fidl::encoding::Context) -> usize {
6360 16
6361 }
6362 }
6363
6364 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScheduledScanRequest, D>
6365 for &ScheduledScanRequest
6366 {
6367 unsafe fn encode(
6368 self,
6369 encoder: &mut fidl::encoding::Encoder<'_, D>,
6370 offset: usize,
6371 mut depth: fidl::encoding::Depth,
6372 ) -> fidl::Result<()> {
6373 encoder.debug_check_bounds::<ScheduledScanRequest>(offset);
6374 let max_ordinal: u64 = self.max_ordinal_present();
6376 encoder.write_num(max_ordinal, offset);
6377 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6378 if max_ordinal == 0 {
6380 return Ok(());
6381 }
6382 depth.increment()?;
6383 let envelope_size = 8;
6384 let bytes_len = max_ordinal as usize * envelope_size;
6385 #[allow(unused_variables)]
6386 let offset = encoder.out_of_line_offset(bytes_len);
6387 let mut _prev_end_offset: usize = 0;
6388 if 1 > max_ordinal {
6389 return Ok(());
6390 }
6391
6392 let cur_offset: usize = (1 - 1) * envelope_size;
6395
6396 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6398
6399 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScheduledScanPlan>, D>(
6404 self.scan_plans.as_ref().map(<fidl::encoding::UnboundedVector<ScheduledScanPlan> as fidl::encoding::ValueTypeMarker>::borrow),
6405 encoder, offset + cur_offset, depth
6406 )?;
6407
6408 _prev_end_offset = cur_offset + envelope_size;
6409 if 2 > max_ordinal {
6410 return Ok(());
6411 }
6412
6413 let cur_offset: usize = (2 - 1) * envelope_size;
6416
6417 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6419
6420 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
6425 self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
6426 encoder, offset + cur_offset, depth
6427 )?;
6428
6429 _prev_end_offset = cur_offset + envelope_size;
6430 if 3 > max_ordinal {
6431 return Ok(());
6432 }
6433
6434 let cur_offset: usize = (3 - 1) * envelope_size;
6437
6438 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6440
6441 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u32>, D>(
6446 self.frequencies.as_ref().map(<fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow),
6447 encoder, offset + cur_offset, depth
6448 )?;
6449
6450 _prev_end_offset = cur_offset + envelope_size;
6451 if 4 > max_ordinal {
6452 return Ok(());
6453 }
6454
6455 let cur_offset: usize = (4 - 1) * envelope_size;
6458
6459 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6461
6462 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6467 self.min_rssi_threshold
6468 .as_ref()
6469 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6470 encoder,
6471 offset + cur_offset,
6472 depth,
6473 )?;
6474
6475 _prev_end_offset = cur_offset + envelope_size;
6476 if 5 > max_ordinal {
6477 return Ok(());
6478 }
6479
6480 let cur_offset: usize = (5 - 1) * envelope_size;
6483
6484 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6486
6487 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6492 self.relative_rssi_threshold
6493 .as_ref()
6494 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6495 encoder,
6496 offset + cur_offset,
6497 depth,
6498 )?;
6499
6500 _prev_end_offset = cur_offset + envelope_size;
6501 if 6 > max_ordinal {
6502 return Ok(());
6503 }
6504
6505 let cur_offset: usize = (6 - 1) * envelope_size;
6508
6509 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6511
6512 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<BandRssiAdjustment>, D>(
6517 self.band_rssi_adjustments.as_ref().map(<fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::ValueTypeMarker>::borrow),
6518 encoder, offset + cur_offset, depth
6519 )?;
6520
6521 _prev_end_offset = cur_offset + envelope_size;
6522 if 7 > max_ordinal {
6523 return Ok(());
6524 }
6525
6526 let cur_offset: usize = (7 - 1) * envelope_size;
6529
6530 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6532
6533 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScheduledScanMatchSet>, D>(
6538 self.match_sets.as_ref().map(<fidl::encoding::UnboundedVector<ScheduledScanMatchSet> as fidl::encoding::ValueTypeMarker>::borrow),
6539 encoder, offset + cur_offset, depth
6540 )?;
6541
6542 _prev_end_offset = cur_offset + envelope_size;
6543
6544 Ok(())
6545 }
6546 }
6547
6548 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScheduledScanRequest {
6549 #[inline(always)]
6550 fn new_empty() -> Self {
6551 Self::default()
6552 }
6553
6554 unsafe fn decode(
6555 &mut self,
6556 decoder: &mut fidl::encoding::Decoder<'_, D>,
6557 offset: usize,
6558 mut depth: fidl::encoding::Depth,
6559 ) -> fidl::Result<()> {
6560 decoder.debug_check_bounds::<Self>(offset);
6561 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6562 None => return Err(fidl::Error::NotNullable),
6563 Some(len) => len,
6564 };
6565 if len == 0 {
6567 return Ok(());
6568 };
6569 depth.increment()?;
6570 let envelope_size = 8;
6571 let bytes_len = len * envelope_size;
6572 let offset = decoder.out_of_line_offset(bytes_len)?;
6573 let mut _next_ordinal_to_read = 0;
6575 let mut next_offset = offset;
6576 let end_offset = offset + bytes_len;
6577 _next_ordinal_to_read += 1;
6578 if next_offset >= end_offset {
6579 return Ok(());
6580 }
6581
6582 while _next_ordinal_to_read < 1 {
6584 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6585 _next_ordinal_to_read += 1;
6586 next_offset += envelope_size;
6587 }
6588
6589 let next_out_of_line = decoder.next_out_of_line();
6590 let handles_before = decoder.remaining_handles();
6591 if let Some((inlined, num_bytes, num_handles)) =
6592 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6593 {
6594 let member_inline_size = <fidl::encoding::UnboundedVector<ScheduledScanPlan> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6595 if inlined != (member_inline_size <= 4) {
6596 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6597 }
6598 let inner_offset;
6599 let mut inner_depth = depth.clone();
6600 if inlined {
6601 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6602 inner_offset = next_offset;
6603 } else {
6604 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6605 inner_depth.increment()?;
6606 }
6607 let val_ref = self.scan_plans.get_or_insert_with(|| {
6608 fidl::new_empty!(fidl::encoding::UnboundedVector<ScheduledScanPlan>, D)
6609 });
6610 fidl::decode!(
6611 fidl::encoding::UnboundedVector<ScheduledScanPlan>,
6612 D,
6613 val_ref,
6614 decoder,
6615 inner_offset,
6616 inner_depth
6617 )?;
6618 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6619 {
6620 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6621 }
6622 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6623 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6624 }
6625 }
6626
6627 next_offset += envelope_size;
6628 _next_ordinal_to_read += 1;
6629 if next_offset >= end_offset {
6630 return Ok(());
6631 }
6632
6633 while _next_ordinal_to_read < 2 {
6635 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6636 _next_ordinal_to_read += 1;
6637 next_offset += envelope_size;
6638 }
6639
6640 let next_out_of_line = decoder.next_out_of_line();
6641 let handles_before = decoder.remaining_handles();
6642 if let Some((inlined, num_bytes, num_handles)) =
6643 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6644 {
6645 let member_inline_size = <fidl::encoding::UnboundedVector<
6646 fidl::encoding::Vector<u8, 32>,
6647 > as fidl::encoding::TypeMarker>::inline_size(
6648 decoder.context
6649 );
6650 if inlined != (member_inline_size <= 4) {
6651 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6652 }
6653 let inner_offset;
6654 let mut inner_depth = depth.clone();
6655 if inlined {
6656 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6657 inner_offset = next_offset;
6658 } else {
6659 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6660 inner_depth.increment()?;
6661 }
6662 let val_ref = self.ssids.get_or_insert_with(|| {
6663 fidl::new_empty!(
6664 fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
6665 D
6666 )
6667 });
6668 fidl::decode!(
6669 fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
6670 D,
6671 val_ref,
6672 decoder,
6673 inner_offset,
6674 inner_depth
6675 )?;
6676 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6677 {
6678 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6679 }
6680 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6681 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6682 }
6683 }
6684
6685 next_offset += envelope_size;
6686 _next_ordinal_to_read += 1;
6687 if next_offset >= end_offset {
6688 return Ok(());
6689 }
6690
6691 while _next_ordinal_to_read < 3 {
6693 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6694 _next_ordinal_to_read += 1;
6695 next_offset += envelope_size;
6696 }
6697
6698 let next_out_of_line = decoder.next_out_of_line();
6699 let handles_before = decoder.remaining_handles();
6700 if let Some((inlined, num_bytes, num_handles)) =
6701 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6702 {
6703 let member_inline_size = <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6704 if inlined != (member_inline_size <= 4) {
6705 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6706 }
6707 let inner_offset;
6708 let mut inner_depth = depth.clone();
6709 if inlined {
6710 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6711 inner_offset = next_offset;
6712 } else {
6713 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6714 inner_depth.increment()?;
6715 }
6716 let val_ref = self.frequencies.get_or_insert_with(|| {
6717 fidl::new_empty!(fidl::encoding::UnboundedVector<u32>, D)
6718 });
6719 fidl::decode!(
6720 fidl::encoding::UnboundedVector<u32>,
6721 D,
6722 val_ref,
6723 decoder,
6724 inner_offset,
6725 inner_depth
6726 )?;
6727 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6728 {
6729 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6730 }
6731 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6732 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6733 }
6734 }
6735
6736 next_offset += envelope_size;
6737 _next_ordinal_to_read += 1;
6738 if next_offset >= end_offset {
6739 return Ok(());
6740 }
6741
6742 while _next_ordinal_to_read < 4 {
6744 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6745 _next_ordinal_to_read += 1;
6746 next_offset += envelope_size;
6747 }
6748
6749 let next_out_of_line = decoder.next_out_of_line();
6750 let handles_before = decoder.remaining_handles();
6751 if let Some((inlined, num_bytes, num_handles)) =
6752 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6753 {
6754 let member_inline_size =
6755 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6756 if inlined != (member_inline_size <= 4) {
6757 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6758 }
6759 let inner_offset;
6760 let mut inner_depth = depth.clone();
6761 if inlined {
6762 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6763 inner_offset = next_offset;
6764 } else {
6765 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6766 inner_depth.increment()?;
6767 }
6768 let val_ref =
6769 self.min_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
6770 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6771 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6772 {
6773 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6774 }
6775 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6776 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6777 }
6778 }
6779
6780 next_offset += envelope_size;
6781 _next_ordinal_to_read += 1;
6782 if next_offset >= end_offset {
6783 return Ok(());
6784 }
6785
6786 while _next_ordinal_to_read < 5 {
6788 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6789 _next_ordinal_to_read += 1;
6790 next_offset += envelope_size;
6791 }
6792
6793 let next_out_of_line = decoder.next_out_of_line();
6794 let handles_before = decoder.remaining_handles();
6795 if let Some((inlined, num_bytes, num_handles)) =
6796 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6797 {
6798 let member_inline_size =
6799 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6800 if inlined != (member_inline_size <= 4) {
6801 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6802 }
6803 let inner_offset;
6804 let mut inner_depth = depth.clone();
6805 if inlined {
6806 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6807 inner_offset = next_offset;
6808 } else {
6809 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6810 inner_depth.increment()?;
6811 }
6812 let val_ref =
6813 self.relative_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
6814 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6815 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6816 {
6817 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6818 }
6819 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6820 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6821 }
6822 }
6823
6824 next_offset += envelope_size;
6825 _next_ordinal_to_read += 1;
6826 if next_offset >= end_offset {
6827 return Ok(());
6828 }
6829
6830 while _next_ordinal_to_read < 6 {
6832 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6833 _next_ordinal_to_read += 1;
6834 next_offset += envelope_size;
6835 }
6836
6837 let next_out_of_line = decoder.next_out_of_line();
6838 let handles_before = decoder.remaining_handles();
6839 if let Some((inlined, num_bytes, num_handles)) =
6840 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6841 {
6842 let member_inline_size = <fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6843 if inlined != (member_inline_size <= 4) {
6844 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6845 }
6846 let inner_offset;
6847 let mut inner_depth = depth.clone();
6848 if inlined {
6849 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6850 inner_offset = next_offset;
6851 } else {
6852 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6853 inner_depth.increment()?;
6854 }
6855 let val_ref = self.band_rssi_adjustments.get_or_insert_with(|| {
6856 fidl::new_empty!(fidl::encoding::UnboundedVector<BandRssiAdjustment>, D)
6857 });
6858 fidl::decode!(
6859 fidl::encoding::UnboundedVector<BandRssiAdjustment>,
6860 D,
6861 val_ref,
6862 decoder,
6863 inner_offset,
6864 inner_depth
6865 )?;
6866 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6867 {
6868 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6869 }
6870 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6871 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6872 }
6873 }
6874
6875 next_offset += envelope_size;
6876 _next_ordinal_to_read += 1;
6877 if next_offset >= end_offset {
6878 return Ok(());
6879 }
6880
6881 while _next_ordinal_to_read < 7 {
6883 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6884 _next_ordinal_to_read += 1;
6885 next_offset += envelope_size;
6886 }
6887
6888 let next_out_of_line = decoder.next_out_of_line();
6889 let handles_before = decoder.remaining_handles();
6890 if let Some((inlined, num_bytes, num_handles)) =
6891 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6892 {
6893 let member_inline_size = <fidl::encoding::UnboundedVector<ScheduledScanMatchSet> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6894 if inlined != (member_inline_size <= 4) {
6895 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6896 }
6897 let inner_offset;
6898 let mut inner_depth = depth.clone();
6899 if inlined {
6900 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6901 inner_offset = next_offset;
6902 } else {
6903 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6904 inner_depth.increment()?;
6905 }
6906 let val_ref = self.match_sets.get_or_insert_with(|| {
6907 fidl::new_empty!(fidl::encoding::UnboundedVector<ScheduledScanMatchSet>, D)
6908 });
6909 fidl::decode!(
6910 fidl::encoding::UnboundedVector<ScheduledScanMatchSet>,
6911 D,
6912 val_ref,
6913 decoder,
6914 inner_offset,
6915 inner_depth
6916 )?;
6917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6918 {
6919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6920 }
6921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6923 }
6924 }
6925
6926 next_offset += envelope_size;
6927
6928 while next_offset < end_offset {
6930 _next_ordinal_to_read += 1;
6931 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6932 next_offset += envelope_size;
6933 }
6934
6935 Ok(())
6936 }
6937 }
6938
6939 impl SecuritySupport {
6940 #[inline(always)]
6941 fn max_ordinal_present(&self) -> u64 {
6942 if let Some(_) = self.owe {
6943 return 3;
6944 }
6945 if let Some(_) = self.mfp {
6946 return 2;
6947 }
6948 if let Some(_) = self.sae {
6949 return 1;
6950 }
6951 0
6952 }
6953 }
6954
6955 impl fidl::encoding::ValueTypeMarker for SecuritySupport {
6956 type Borrowed<'a> = &'a Self;
6957 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6958 value
6959 }
6960 }
6961
6962 unsafe impl fidl::encoding::TypeMarker for SecuritySupport {
6963 type Owned = Self;
6964
6965 #[inline(always)]
6966 fn inline_align(_context: fidl::encoding::Context) -> usize {
6967 8
6968 }
6969
6970 #[inline(always)]
6971 fn inline_size(_context: fidl::encoding::Context) -> usize {
6972 16
6973 }
6974 }
6975
6976 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecuritySupport, D>
6977 for &SecuritySupport
6978 {
6979 unsafe fn encode(
6980 self,
6981 encoder: &mut fidl::encoding::Encoder<'_, D>,
6982 offset: usize,
6983 mut depth: fidl::encoding::Depth,
6984 ) -> fidl::Result<()> {
6985 encoder.debug_check_bounds::<SecuritySupport>(offset);
6986 let max_ordinal: u64 = self.max_ordinal_present();
6988 encoder.write_num(max_ordinal, offset);
6989 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6990 if max_ordinal == 0 {
6992 return Ok(());
6993 }
6994 depth.increment()?;
6995 let envelope_size = 8;
6996 let bytes_len = max_ordinal as usize * envelope_size;
6997 #[allow(unused_variables)]
6998 let offset = encoder.out_of_line_offset(bytes_len);
6999 let mut _prev_end_offset: usize = 0;
7000 if 1 > max_ordinal {
7001 return Ok(());
7002 }
7003
7004 let cur_offset: usize = (1 - 1) * envelope_size;
7007
7008 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7010
7011 fidl::encoding::encode_in_envelope_optional::<SaeFeature, D>(
7016 self.sae.as_ref().map(<SaeFeature as fidl::encoding::ValueTypeMarker>::borrow),
7017 encoder,
7018 offset + cur_offset,
7019 depth,
7020 )?;
7021
7022 _prev_end_offset = cur_offset + envelope_size;
7023 if 2 > max_ordinal {
7024 return Ok(());
7025 }
7026
7027 let cur_offset: usize = (2 - 1) * envelope_size;
7030
7031 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7033
7034 fidl::encoding::encode_in_envelope_optional::<MfpFeature, D>(
7039 self.mfp.as_ref().map(<MfpFeature as fidl::encoding::ValueTypeMarker>::borrow),
7040 encoder,
7041 offset + cur_offset,
7042 depth,
7043 )?;
7044
7045 _prev_end_offset = cur_offset + envelope_size;
7046 if 3 > max_ordinal {
7047 return Ok(());
7048 }
7049
7050 let cur_offset: usize = (3 - 1) * envelope_size;
7053
7054 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7056
7057 fidl::encoding::encode_in_envelope_optional::<OweFeature, D>(
7062 self.owe.as_ref().map(<OweFeature as fidl::encoding::ValueTypeMarker>::borrow),
7063 encoder,
7064 offset + cur_offset,
7065 depth,
7066 )?;
7067
7068 _prev_end_offset = cur_offset + envelope_size;
7069
7070 Ok(())
7071 }
7072 }
7073
7074 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecuritySupport {
7075 #[inline(always)]
7076 fn new_empty() -> Self {
7077 Self::default()
7078 }
7079
7080 unsafe fn decode(
7081 &mut self,
7082 decoder: &mut fidl::encoding::Decoder<'_, D>,
7083 offset: usize,
7084 mut depth: fidl::encoding::Depth,
7085 ) -> fidl::Result<()> {
7086 decoder.debug_check_bounds::<Self>(offset);
7087 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7088 None => return Err(fidl::Error::NotNullable),
7089 Some(len) => len,
7090 };
7091 if len == 0 {
7093 return Ok(());
7094 };
7095 depth.increment()?;
7096 let envelope_size = 8;
7097 let bytes_len = len * envelope_size;
7098 let offset = decoder.out_of_line_offset(bytes_len)?;
7099 let mut _next_ordinal_to_read = 0;
7101 let mut next_offset = offset;
7102 let end_offset = offset + bytes_len;
7103 _next_ordinal_to_read += 1;
7104 if next_offset >= end_offset {
7105 return Ok(());
7106 }
7107
7108 while _next_ordinal_to_read < 1 {
7110 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7111 _next_ordinal_to_read += 1;
7112 next_offset += envelope_size;
7113 }
7114
7115 let next_out_of_line = decoder.next_out_of_line();
7116 let handles_before = decoder.remaining_handles();
7117 if let Some((inlined, num_bytes, num_handles)) =
7118 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7119 {
7120 let member_inline_size =
7121 <SaeFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7122 if inlined != (member_inline_size <= 4) {
7123 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7124 }
7125 let inner_offset;
7126 let mut inner_depth = depth.clone();
7127 if inlined {
7128 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7129 inner_offset = next_offset;
7130 } else {
7131 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7132 inner_depth.increment()?;
7133 }
7134 let val_ref = self.sae.get_or_insert_with(|| fidl::new_empty!(SaeFeature, D));
7135 fidl::decode!(SaeFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7136 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7137 {
7138 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7139 }
7140 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7141 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7142 }
7143 }
7144
7145 next_offset += envelope_size;
7146 _next_ordinal_to_read += 1;
7147 if next_offset >= end_offset {
7148 return Ok(());
7149 }
7150
7151 while _next_ordinal_to_read < 2 {
7153 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7154 _next_ordinal_to_read += 1;
7155 next_offset += envelope_size;
7156 }
7157
7158 let next_out_of_line = decoder.next_out_of_line();
7159 let handles_before = decoder.remaining_handles();
7160 if let Some((inlined, num_bytes, num_handles)) =
7161 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7162 {
7163 let member_inline_size =
7164 <MfpFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7165 if inlined != (member_inline_size <= 4) {
7166 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7167 }
7168 let inner_offset;
7169 let mut inner_depth = depth.clone();
7170 if inlined {
7171 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7172 inner_offset = next_offset;
7173 } else {
7174 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7175 inner_depth.increment()?;
7176 }
7177 let val_ref = self.mfp.get_or_insert_with(|| fidl::new_empty!(MfpFeature, D));
7178 fidl::decode!(MfpFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7179 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7180 {
7181 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7182 }
7183 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7184 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7185 }
7186 }
7187
7188 next_offset += envelope_size;
7189 _next_ordinal_to_read += 1;
7190 if next_offset >= end_offset {
7191 return Ok(());
7192 }
7193
7194 while _next_ordinal_to_read < 3 {
7196 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7197 _next_ordinal_to_read += 1;
7198 next_offset += envelope_size;
7199 }
7200
7201 let next_out_of_line = decoder.next_out_of_line();
7202 let handles_before = decoder.remaining_handles();
7203 if let Some((inlined, num_bytes, num_handles)) =
7204 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7205 {
7206 let member_inline_size =
7207 <OweFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7208 if inlined != (member_inline_size <= 4) {
7209 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7210 }
7211 let inner_offset;
7212 let mut inner_depth = depth.clone();
7213 if inlined {
7214 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7215 inner_offset = next_offset;
7216 } else {
7217 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7218 inner_depth.increment()?;
7219 }
7220 let val_ref = self.owe.get_or_insert_with(|| fidl::new_empty!(OweFeature, D));
7221 fidl::decode!(OweFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7222 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7223 {
7224 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7225 }
7226 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7227 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7228 }
7229 }
7230
7231 next_offset += envelope_size;
7232
7233 while next_offset < end_offset {
7235 _next_ordinal_to_read += 1;
7236 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7237 next_offset += envelope_size;
7238 }
7239
7240 Ok(())
7241 }
7242 }
7243
7244 impl SpectrumManagementSupport {
7245 #[inline(always)]
7246 fn max_ordinal_present(&self) -> u64 {
7247 if let Some(_) = self.dfs {
7248 return 1;
7249 }
7250 0
7251 }
7252 }
7253
7254 impl fidl::encoding::ValueTypeMarker for SpectrumManagementSupport {
7255 type Borrowed<'a> = &'a Self;
7256 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7257 value
7258 }
7259 }
7260
7261 unsafe impl fidl::encoding::TypeMarker for SpectrumManagementSupport {
7262 type Owned = Self;
7263
7264 #[inline(always)]
7265 fn inline_align(_context: fidl::encoding::Context) -> usize {
7266 8
7267 }
7268
7269 #[inline(always)]
7270 fn inline_size(_context: fidl::encoding::Context) -> usize {
7271 16
7272 }
7273 }
7274
7275 unsafe impl<D: fidl::encoding::ResourceDialect>
7276 fidl::encoding::Encode<SpectrumManagementSupport, D> for &SpectrumManagementSupport
7277 {
7278 unsafe fn encode(
7279 self,
7280 encoder: &mut fidl::encoding::Encoder<'_, D>,
7281 offset: usize,
7282 mut depth: fidl::encoding::Depth,
7283 ) -> fidl::Result<()> {
7284 encoder.debug_check_bounds::<SpectrumManagementSupport>(offset);
7285 let max_ordinal: u64 = self.max_ordinal_present();
7287 encoder.write_num(max_ordinal, offset);
7288 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7289 if max_ordinal == 0 {
7291 return Ok(());
7292 }
7293 depth.increment()?;
7294 let envelope_size = 8;
7295 let bytes_len = max_ordinal as usize * envelope_size;
7296 #[allow(unused_variables)]
7297 let offset = encoder.out_of_line_offset(bytes_len);
7298 let mut _prev_end_offset: usize = 0;
7299 if 1 > max_ordinal {
7300 return Ok(());
7301 }
7302
7303 let cur_offset: usize = (1 - 1) * envelope_size;
7306
7307 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7309
7310 fidl::encoding::encode_in_envelope_optional::<DfsFeature, D>(
7315 self.dfs.as_ref().map(<DfsFeature as fidl::encoding::ValueTypeMarker>::borrow),
7316 encoder,
7317 offset + cur_offset,
7318 depth,
7319 )?;
7320
7321 _prev_end_offset = cur_offset + envelope_size;
7322
7323 Ok(())
7324 }
7325 }
7326
7327 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7328 for SpectrumManagementSupport
7329 {
7330 #[inline(always)]
7331 fn new_empty() -> Self {
7332 Self::default()
7333 }
7334
7335 unsafe fn decode(
7336 &mut self,
7337 decoder: &mut fidl::encoding::Decoder<'_, D>,
7338 offset: usize,
7339 mut depth: fidl::encoding::Depth,
7340 ) -> fidl::Result<()> {
7341 decoder.debug_check_bounds::<Self>(offset);
7342 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7343 None => return Err(fidl::Error::NotNullable),
7344 Some(len) => len,
7345 };
7346 if len == 0 {
7348 return Ok(());
7349 };
7350 depth.increment()?;
7351 let envelope_size = 8;
7352 let bytes_len = len * envelope_size;
7353 let offset = decoder.out_of_line_offset(bytes_len)?;
7354 let mut _next_ordinal_to_read = 0;
7356 let mut next_offset = offset;
7357 let end_offset = offset + bytes_len;
7358 _next_ordinal_to_read += 1;
7359 if next_offset >= end_offset {
7360 return Ok(());
7361 }
7362
7363 while _next_ordinal_to_read < 1 {
7365 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7366 _next_ordinal_to_read += 1;
7367 next_offset += envelope_size;
7368 }
7369
7370 let next_out_of_line = decoder.next_out_of_line();
7371 let handles_before = decoder.remaining_handles();
7372 if let Some((inlined, num_bytes, num_handles)) =
7373 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7374 {
7375 let member_inline_size =
7376 <DfsFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7377 if inlined != (member_inline_size <= 4) {
7378 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7379 }
7380 let inner_offset;
7381 let mut inner_depth = depth.clone();
7382 if inlined {
7383 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7384 inner_offset = next_offset;
7385 } else {
7386 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7387 inner_depth.increment()?;
7388 }
7389 let val_ref = self.dfs.get_or_insert_with(|| fidl::new_empty!(DfsFeature, D));
7390 fidl::decode!(DfsFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7391 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7392 {
7393 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7394 }
7395 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7396 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7397 }
7398 }
7399
7400 next_offset += envelope_size;
7401
7402 while next_offset < end_offset {
7404 _next_ordinal_to_read += 1;
7405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7406 next_offset += envelope_size;
7407 }
7408
7409 Ok(())
7410 }
7411 }
7412}