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)]
935pub struct RssiMonitorSupport {
936 pub supported: Option<bool>,
937 #[doc(hidden)]
938 pub __source_breaking: fidl::marker::SourceBreaking,
939}
940
941impl fidl::Persistable for RssiMonitorSupport {}
942
943#[derive(Clone, Debug, Default, PartialEq)]
947pub struct SaeFeature {
948 pub driver_handler_supported: Option<bool>,
950 pub sme_handler_supported: Option<bool>,
952 pub hash_to_element_supported: Option<bool>,
956 pub pmksa_caching_supported: Option<bool>,
959 #[doc(hidden)]
960 pub __source_breaking: fidl::marker::SourceBreaking,
961}
962
963impl fidl::Persistable for SaeFeature {}
964
965#[derive(Clone, Debug, Default, PartialEq)]
969pub struct ScanOffloadExtension {
970 pub supported: Option<bool>,
972 pub scan_cancel_supported: Option<bool>,
973 #[doc(hidden)]
974 pub __source_breaking: fidl::marker::SourceBreaking,
975}
976
977impl fidl::Persistable for ScanOffloadExtension {}
978
979#[derive(Clone, Debug, Default, PartialEq)]
986pub struct ScheduledScanMatchSet {
987 pub ssid: Option<Vec<u8>>,
989 pub bssid: Option<[u8; 6]>,
991 pub min_rssi_threshold: Option<i8>,
993 pub relative_rssi_threshold: Option<i8>,
997 pub band_rssi_adjustments: Option<Vec<BandRssiAdjustment>>,
1000 #[doc(hidden)]
1001 pub __source_breaking: fidl::marker::SourceBreaking,
1002}
1003
1004impl fidl::Persistable for ScheduledScanMatchSet {}
1005
1006#[derive(Clone, Debug, Default, PartialEq)]
1008pub struct ScheduledScanRequest {
1009 pub scan_plans: Option<Vec<ScheduledScanPlan>>,
1012 pub ssids: Option<Vec<Vec<u8>>>,
1018 pub frequencies: Option<Vec<u32>>,
1021 pub min_rssi_threshold: Option<i8>,
1023 pub relative_rssi_threshold: Option<i8>,
1027 pub band_rssi_adjustments: Option<Vec<BandRssiAdjustment>>,
1030 pub match_sets: Option<Vec<ScheduledScanMatchSet>>,
1035 #[doc(hidden)]
1036 pub __source_breaking: fidl::marker::SourceBreaking,
1037}
1038
1039impl fidl::Persistable for ScheduledScanRequest {}
1040
1041#[derive(Clone, Debug, Default, PartialEq)]
1044pub struct SecuritySupport {
1045 pub sae: Option<SaeFeature>,
1046 pub mfp: Option<MfpFeature>,
1047 pub owe: Option<OweFeature>,
1048 #[doc(hidden)]
1049 pub __source_breaking: fidl::marker::SourceBreaking,
1050}
1051
1052impl fidl::Persistable for SecuritySupport {}
1053
1054#[derive(Clone, Debug, Default, PartialEq)]
1057pub struct SpectrumManagementSupport {
1058 pub dfs: Option<DfsFeature>,
1059 #[doc(hidden)]
1060 pub __source_breaking: fidl::marker::SourceBreaking,
1061}
1062
1063impl fidl::Persistable for SpectrumManagementSupport {}
1064
1065mod internal {
1066 use super::*;
1067 unsafe impl fidl::encoding::TypeMarker for BssType {
1068 type Owned = Self;
1069
1070 #[inline(always)]
1071 fn inline_align(_context: fidl::encoding::Context) -> usize {
1072 std::mem::align_of::<u32>()
1073 }
1074
1075 #[inline(always)]
1076 fn inline_size(_context: fidl::encoding::Context) -> usize {
1077 std::mem::size_of::<u32>()
1078 }
1079
1080 #[inline(always)]
1081 fn encode_is_copy() -> bool {
1082 false
1083 }
1084
1085 #[inline(always)]
1086 fn decode_is_copy() -> bool {
1087 false
1088 }
1089 }
1090
1091 impl fidl::encoding::ValueTypeMarker for BssType {
1092 type Borrowed<'a> = Self;
1093 #[inline(always)]
1094 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1095 *value
1096 }
1097 }
1098
1099 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BssType {
1100 #[inline]
1101 unsafe fn encode(
1102 self,
1103 encoder: &mut fidl::encoding::Encoder<'_, D>,
1104 offset: usize,
1105 _depth: fidl::encoding::Depth,
1106 ) -> fidl::Result<()> {
1107 encoder.debug_check_bounds::<Self>(offset);
1108 encoder.write_num(self.into_primitive(), offset);
1109 Ok(())
1110 }
1111 }
1112
1113 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssType {
1114 #[inline(always)]
1115 fn new_empty() -> Self {
1116 Self::unknown()
1117 }
1118
1119 #[inline]
1120 unsafe fn decode(
1121 &mut self,
1122 decoder: &mut fidl::encoding::Decoder<'_, D>,
1123 offset: usize,
1124 _depth: fidl::encoding::Depth,
1125 ) -> fidl::Result<()> {
1126 decoder.debug_check_bounds::<Self>(offset);
1127 let prim = decoder.read_num::<u32>(offset);
1128
1129 *self = Self::from_primitive_allow_unknown(prim);
1130 Ok(())
1131 }
1132 }
1133 unsafe impl fidl::encoding::TypeMarker for ChannelBandwidth {
1134 type Owned = Self;
1135
1136 #[inline(always)]
1137 fn inline_align(_context: fidl::encoding::Context) -> usize {
1138 std::mem::align_of::<u32>()
1139 }
1140
1141 #[inline(always)]
1142 fn inline_size(_context: fidl::encoding::Context) -> usize {
1143 std::mem::size_of::<u32>()
1144 }
1145
1146 #[inline(always)]
1147 fn encode_is_copy() -> bool {
1148 false
1149 }
1150
1151 #[inline(always)]
1152 fn decode_is_copy() -> bool {
1153 false
1154 }
1155 }
1156
1157 impl fidl::encoding::ValueTypeMarker for ChannelBandwidth {
1158 type Borrowed<'a> = Self;
1159 #[inline(always)]
1160 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1161 *value
1162 }
1163 }
1164
1165 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1166 for ChannelBandwidth
1167 {
1168 #[inline]
1169 unsafe fn encode(
1170 self,
1171 encoder: &mut fidl::encoding::Encoder<'_, D>,
1172 offset: usize,
1173 _depth: fidl::encoding::Depth,
1174 ) -> fidl::Result<()> {
1175 encoder.debug_check_bounds::<Self>(offset);
1176 encoder.write_num(self.into_primitive(), offset);
1177 Ok(())
1178 }
1179 }
1180
1181 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelBandwidth {
1182 #[inline(always)]
1183 fn new_empty() -> Self {
1184 Self::unknown()
1185 }
1186
1187 #[inline]
1188 unsafe fn decode(
1189 &mut self,
1190 decoder: &mut fidl::encoding::Decoder<'_, D>,
1191 offset: usize,
1192 _depth: fidl::encoding::Depth,
1193 ) -> fidl::Result<()> {
1194 decoder.debug_check_bounds::<Self>(offset);
1195 let prim = decoder.read_num::<u32>(offset);
1196
1197 *self = Self::from_primitive_allow_unknown(prim);
1198 Ok(())
1199 }
1200 }
1201 unsafe impl fidl::encoding::TypeMarker for DataPlaneType {
1202 type Owned = Self;
1203
1204 #[inline(always)]
1205 fn inline_align(_context: fidl::encoding::Context) -> usize {
1206 std::mem::align_of::<u8>()
1207 }
1208
1209 #[inline(always)]
1210 fn inline_size(_context: fidl::encoding::Context) -> usize {
1211 std::mem::size_of::<u8>()
1212 }
1213
1214 #[inline(always)]
1215 fn encode_is_copy() -> bool {
1216 false
1217 }
1218
1219 #[inline(always)]
1220 fn decode_is_copy() -> bool {
1221 false
1222 }
1223 }
1224
1225 impl fidl::encoding::ValueTypeMarker for DataPlaneType {
1226 type Borrowed<'a> = Self;
1227 #[inline(always)]
1228 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1229 *value
1230 }
1231 }
1232
1233 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPlaneType {
1234 #[inline]
1235 unsafe fn encode(
1236 self,
1237 encoder: &mut fidl::encoding::Encoder<'_, D>,
1238 offset: usize,
1239 _depth: fidl::encoding::Depth,
1240 ) -> fidl::Result<()> {
1241 encoder.debug_check_bounds::<Self>(offset);
1242 encoder.write_num(self.into_primitive(), offset);
1243 Ok(())
1244 }
1245 }
1246
1247 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneType {
1248 #[inline(always)]
1249 fn new_empty() -> Self {
1250 Self::unknown()
1251 }
1252
1253 #[inline]
1254 unsafe fn decode(
1255 &mut self,
1256 decoder: &mut fidl::encoding::Decoder<'_, D>,
1257 offset: usize,
1258 _depth: fidl::encoding::Depth,
1259 ) -> fidl::Result<()> {
1260 decoder.debug_check_bounds::<Self>(offset);
1261 let prim = decoder.read_num::<u8>(offset);
1262
1263 *self = Self::from_primitive_allow_unknown(prim);
1264 Ok(())
1265 }
1266 }
1267 unsafe impl fidl::encoding::TypeMarker for GuardInterval {
1268 type Owned = Self;
1269
1270 #[inline(always)]
1271 fn inline_align(_context: fidl::encoding::Context) -> usize {
1272 std::mem::align_of::<u8>()
1273 }
1274
1275 #[inline(always)]
1276 fn inline_size(_context: fidl::encoding::Context) -> usize {
1277 std::mem::size_of::<u8>()
1278 }
1279
1280 #[inline(always)]
1281 fn encode_is_copy() -> bool {
1282 true
1283 }
1284
1285 #[inline(always)]
1286 fn decode_is_copy() -> bool {
1287 false
1288 }
1289 }
1290
1291 impl fidl::encoding::ValueTypeMarker for GuardInterval {
1292 type Borrowed<'a> = Self;
1293 #[inline(always)]
1294 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1295 *value
1296 }
1297 }
1298
1299 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuardInterval {
1300 #[inline]
1301 unsafe fn encode(
1302 self,
1303 encoder: &mut fidl::encoding::Encoder<'_, D>,
1304 offset: usize,
1305 _depth: fidl::encoding::Depth,
1306 ) -> fidl::Result<()> {
1307 encoder.debug_check_bounds::<Self>(offset);
1308 encoder.write_num(self.into_primitive(), offset);
1309 Ok(())
1310 }
1311 }
1312
1313 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuardInterval {
1314 #[inline(always)]
1315 fn new_empty() -> Self {
1316 Self::LongGi
1317 }
1318
1319 #[inline]
1320 unsafe fn decode(
1321 &mut self,
1322 decoder: &mut fidl::encoding::Decoder<'_, D>,
1323 offset: usize,
1324 _depth: fidl::encoding::Depth,
1325 ) -> fidl::Result<()> {
1326 decoder.debug_check_bounds::<Self>(offset);
1327 let prim = decoder.read_num::<u8>(offset);
1328
1329 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1330 Ok(())
1331 }
1332 }
1333 unsafe impl fidl::encoding::TypeMarker for MacImplementationType {
1334 type Owned = Self;
1335
1336 #[inline(always)]
1337 fn inline_align(_context: fidl::encoding::Context) -> usize {
1338 std::mem::align_of::<u8>()
1339 }
1340
1341 #[inline(always)]
1342 fn inline_size(_context: fidl::encoding::Context) -> usize {
1343 std::mem::size_of::<u8>()
1344 }
1345
1346 #[inline(always)]
1347 fn encode_is_copy() -> bool {
1348 false
1349 }
1350
1351 #[inline(always)]
1352 fn decode_is_copy() -> bool {
1353 false
1354 }
1355 }
1356
1357 impl fidl::encoding::ValueTypeMarker for MacImplementationType {
1358 type Borrowed<'a> = Self;
1359 #[inline(always)]
1360 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1361 *value
1362 }
1363 }
1364
1365 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1366 for MacImplementationType
1367 {
1368 #[inline]
1369 unsafe fn encode(
1370 self,
1371 encoder: &mut fidl::encoding::Encoder<'_, D>,
1372 offset: usize,
1373 _depth: fidl::encoding::Depth,
1374 ) -> fidl::Result<()> {
1375 encoder.debug_check_bounds::<Self>(offset);
1376 encoder.write_num(self.into_primitive(), offset);
1377 Ok(())
1378 }
1379 }
1380
1381 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacImplementationType {
1382 #[inline(always)]
1383 fn new_empty() -> Self {
1384 Self::unknown()
1385 }
1386
1387 #[inline]
1388 unsafe fn decode(
1389 &mut self,
1390 decoder: &mut fidl::encoding::Decoder<'_, D>,
1391 offset: usize,
1392 _depth: fidl::encoding::Depth,
1393 ) -> fidl::Result<()> {
1394 decoder.debug_check_bounds::<Self>(offset);
1395 let prim = decoder.read_num::<u8>(offset);
1396
1397 *self = Self::from_primitive_allow_unknown(prim);
1398 Ok(())
1399 }
1400 }
1401 unsafe impl fidl::encoding::TypeMarker for PowerSaveType {
1402 type Owned = Self;
1403
1404 #[inline(always)]
1405 fn inline_align(_context: fidl::encoding::Context) -> usize {
1406 std::mem::align_of::<u32>()
1407 }
1408
1409 #[inline(always)]
1410 fn inline_size(_context: fidl::encoding::Context) -> usize {
1411 std::mem::size_of::<u32>()
1412 }
1413
1414 #[inline(always)]
1415 fn encode_is_copy() -> bool {
1416 true
1417 }
1418
1419 #[inline(always)]
1420 fn decode_is_copy() -> bool {
1421 false
1422 }
1423 }
1424
1425 impl fidl::encoding::ValueTypeMarker for PowerSaveType {
1426 type Borrowed<'a> = Self;
1427 #[inline(always)]
1428 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1429 *value
1430 }
1431 }
1432
1433 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerSaveType {
1434 #[inline]
1435 unsafe fn encode(
1436 self,
1437 encoder: &mut fidl::encoding::Encoder<'_, D>,
1438 offset: usize,
1439 _depth: fidl::encoding::Depth,
1440 ) -> fidl::Result<()> {
1441 encoder.debug_check_bounds::<Self>(offset);
1442 encoder.write_num(self.into_primitive(), offset);
1443 Ok(())
1444 }
1445 }
1446
1447 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerSaveType {
1448 #[inline(always)]
1449 fn new_empty() -> Self {
1450 Self::PsModeUltraLowPower
1451 }
1452
1453 #[inline]
1454 unsafe fn decode(
1455 &mut self,
1456 decoder: &mut fidl::encoding::Decoder<'_, D>,
1457 offset: usize,
1458 _depth: fidl::encoding::Depth,
1459 ) -> fidl::Result<()> {
1460 decoder.debug_check_bounds::<Self>(offset);
1461 let prim = decoder.read_num::<u32>(offset);
1462
1463 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1464 Ok(())
1465 }
1466 }
1467 unsafe impl fidl::encoding::TypeMarker for ScanType {
1468 type Owned = Self;
1469
1470 #[inline(always)]
1471 fn inline_align(_context: fidl::encoding::Context) -> usize {
1472 std::mem::align_of::<u32>()
1473 }
1474
1475 #[inline(always)]
1476 fn inline_size(_context: fidl::encoding::Context) -> usize {
1477 std::mem::size_of::<u32>()
1478 }
1479
1480 #[inline(always)]
1481 fn encode_is_copy() -> bool {
1482 true
1483 }
1484
1485 #[inline(always)]
1486 fn decode_is_copy() -> bool {
1487 false
1488 }
1489 }
1490
1491 impl fidl::encoding::ValueTypeMarker for ScanType {
1492 type Borrowed<'a> = Self;
1493 #[inline(always)]
1494 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1495 *value
1496 }
1497 }
1498
1499 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanType {
1500 #[inline]
1501 unsafe fn encode(
1502 self,
1503 encoder: &mut fidl::encoding::Encoder<'_, D>,
1504 offset: usize,
1505 _depth: fidl::encoding::Depth,
1506 ) -> fidl::Result<()> {
1507 encoder.debug_check_bounds::<Self>(offset);
1508 encoder.write_num(self.into_primitive(), offset);
1509 Ok(())
1510 }
1511 }
1512
1513 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanType {
1514 #[inline(always)]
1515 fn new_empty() -> Self {
1516 Self::Active
1517 }
1518
1519 #[inline]
1520 unsafe fn decode(
1521 &mut self,
1522 decoder: &mut fidl::encoding::Decoder<'_, D>,
1523 offset: usize,
1524 _depth: fidl::encoding::Depth,
1525 ) -> fidl::Result<()> {
1526 decoder.debug_check_bounds::<Self>(offset);
1527 let prim = decoder.read_num::<u32>(offset);
1528
1529 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1530 Ok(())
1531 }
1532 }
1533 unsafe impl fidl::encoding::TypeMarker for WlanKeyType {
1534 type Owned = Self;
1535
1536 #[inline(always)]
1537 fn inline_align(_context: fidl::encoding::Context) -> usize {
1538 std::mem::align_of::<u8>()
1539 }
1540
1541 #[inline(always)]
1542 fn inline_size(_context: fidl::encoding::Context) -> usize {
1543 std::mem::size_of::<u8>()
1544 }
1545
1546 #[inline(always)]
1547 fn encode_is_copy() -> bool {
1548 false
1549 }
1550
1551 #[inline(always)]
1552 fn decode_is_copy() -> bool {
1553 false
1554 }
1555 }
1556
1557 impl fidl::encoding::ValueTypeMarker for WlanKeyType {
1558 type Borrowed<'a> = Self;
1559 #[inline(always)]
1560 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1561 *value
1562 }
1563 }
1564
1565 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanKeyType {
1566 #[inline]
1567 unsafe fn encode(
1568 self,
1569 encoder: &mut fidl::encoding::Encoder<'_, D>,
1570 offset: usize,
1571 _depth: fidl::encoding::Depth,
1572 ) -> fidl::Result<()> {
1573 encoder.debug_check_bounds::<Self>(offset);
1574 encoder.write_num(self.into_primitive(), offset);
1575 Ok(())
1576 }
1577 }
1578
1579 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyType {
1580 #[inline(always)]
1581 fn new_empty() -> Self {
1582 Self::unknown()
1583 }
1584
1585 #[inline]
1586 unsafe fn decode(
1587 &mut self,
1588 decoder: &mut fidl::encoding::Decoder<'_, D>,
1589 offset: usize,
1590 _depth: fidl::encoding::Depth,
1591 ) -> fidl::Result<()> {
1592 decoder.debug_check_bounds::<Self>(offset);
1593 let prim = decoder.read_num::<u8>(offset);
1594
1595 *self = Self::from_primitive_allow_unknown(prim);
1596 Ok(())
1597 }
1598 }
1599 unsafe impl fidl::encoding::TypeMarker for WlanMacRole {
1600 type Owned = Self;
1601
1602 #[inline(always)]
1603 fn inline_align(_context: fidl::encoding::Context) -> usize {
1604 std::mem::align_of::<u32>()
1605 }
1606
1607 #[inline(always)]
1608 fn inline_size(_context: fidl::encoding::Context) -> usize {
1609 std::mem::size_of::<u32>()
1610 }
1611
1612 #[inline(always)]
1613 fn encode_is_copy() -> bool {
1614 false
1615 }
1616
1617 #[inline(always)]
1618 fn decode_is_copy() -> bool {
1619 false
1620 }
1621 }
1622
1623 impl fidl::encoding::ValueTypeMarker for WlanMacRole {
1624 type Borrowed<'a> = Self;
1625 #[inline(always)]
1626 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1627 *value
1628 }
1629 }
1630
1631 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanMacRole {
1632 #[inline]
1633 unsafe fn encode(
1634 self,
1635 encoder: &mut fidl::encoding::Encoder<'_, D>,
1636 offset: usize,
1637 _depth: fidl::encoding::Depth,
1638 ) -> fidl::Result<()> {
1639 encoder.debug_check_bounds::<Self>(offset);
1640 encoder.write_num(self.into_primitive(), offset);
1641 Ok(())
1642 }
1643 }
1644
1645 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanMacRole {
1646 #[inline(always)]
1647 fn new_empty() -> Self {
1648 Self::unknown()
1649 }
1650
1651 #[inline]
1652 unsafe fn decode(
1653 &mut self,
1654 decoder: &mut fidl::encoding::Decoder<'_, D>,
1655 offset: usize,
1656 _depth: fidl::encoding::Depth,
1657 ) -> fidl::Result<()> {
1658 decoder.debug_check_bounds::<Self>(offset);
1659 let prim = decoder.read_num::<u32>(offset);
1660
1661 *self = Self::from_primitive_allow_unknown(prim);
1662 Ok(())
1663 }
1664 }
1665 unsafe impl fidl::encoding::TypeMarker for WlanPhyType {
1666 type Owned = Self;
1667
1668 #[inline(always)]
1669 fn inline_align(_context: fidl::encoding::Context) -> usize {
1670 std::mem::align_of::<u32>()
1671 }
1672
1673 #[inline(always)]
1674 fn inline_size(_context: fidl::encoding::Context) -> usize {
1675 std::mem::size_of::<u32>()
1676 }
1677
1678 #[inline(always)]
1679 fn encode_is_copy() -> bool {
1680 false
1681 }
1682
1683 #[inline(always)]
1684 fn decode_is_copy() -> bool {
1685 false
1686 }
1687 }
1688
1689 impl fidl::encoding::ValueTypeMarker for WlanPhyType {
1690 type Borrowed<'a> = Self;
1691 #[inline(always)]
1692 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1693 *value
1694 }
1695 }
1696
1697 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanPhyType {
1698 #[inline]
1699 unsafe fn encode(
1700 self,
1701 encoder: &mut fidl::encoding::Encoder<'_, D>,
1702 offset: usize,
1703 _depth: fidl::encoding::Depth,
1704 ) -> fidl::Result<()> {
1705 encoder.debug_check_bounds::<Self>(offset);
1706 encoder.write_num(self.into_primitive(), offset);
1707 Ok(())
1708 }
1709 }
1710
1711 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyType {
1712 #[inline(always)]
1713 fn new_empty() -> Self {
1714 Self::unknown()
1715 }
1716
1717 #[inline]
1718 unsafe fn decode(
1719 &mut self,
1720 decoder: &mut fidl::encoding::Decoder<'_, D>,
1721 offset: usize,
1722 _depth: fidl::encoding::Depth,
1723 ) -> fidl::Result<()> {
1724 decoder.debug_check_bounds::<Self>(offset);
1725 let prim = decoder.read_num::<u32>(offset);
1726
1727 *self = Self::from_primitive_allow_unknown(prim);
1728 Ok(())
1729 }
1730 }
1731 unsafe impl fidl::encoding::TypeMarker for WlanSoftmacHardwareCapabilityBit {
1732 type Owned = Self;
1733
1734 #[inline(always)]
1735 fn inline_align(_context: fidl::encoding::Context) -> usize {
1736 std::mem::align_of::<u32>()
1737 }
1738
1739 #[inline(always)]
1740 fn inline_size(_context: fidl::encoding::Context) -> usize {
1741 std::mem::size_of::<u32>()
1742 }
1743
1744 #[inline(always)]
1745 fn encode_is_copy() -> bool {
1746 true
1747 }
1748
1749 #[inline(always)]
1750 fn decode_is_copy() -> bool {
1751 false
1752 }
1753 }
1754
1755 impl fidl::encoding::ValueTypeMarker for WlanSoftmacHardwareCapabilityBit {
1756 type Borrowed<'a> = Self;
1757 #[inline(always)]
1758 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1759 *value
1760 }
1761 }
1762
1763 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1764 for WlanSoftmacHardwareCapabilityBit
1765 {
1766 #[inline]
1767 unsafe fn encode(
1768 self,
1769 encoder: &mut fidl::encoding::Encoder<'_, D>,
1770 offset: usize,
1771 _depth: fidl::encoding::Depth,
1772 ) -> fidl::Result<()> {
1773 encoder.debug_check_bounds::<Self>(offset);
1774 encoder.write_num(self.into_primitive(), offset);
1775 Ok(())
1776 }
1777 }
1778
1779 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1780 for WlanSoftmacHardwareCapabilityBit
1781 {
1782 #[inline(always)]
1783 fn new_empty() -> Self {
1784 Self::ShortPreamble
1785 }
1786
1787 #[inline]
1788 unsafe fn decode(
1789 &mut self,
1790 decoder: &mut fidl::encoding::Decoder<'_, D>,
1791 offset: usize,
1792 _depth: fidl::encoding::Depth,
1793 ) -> fidl::Result<()> {
1794 decoder.debug_check_bounds::<Self>(offset);
1795 let prim = decoder.read_num::<u32>(offset);
1796
1797 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1798 Ok(())
1799 }
1800 }
1801 unsafe impl fidl::encoding::TypeMarker for WlanTxResultCode {
1802 type Owned = Self;
1803
1804 #[inline(always)]
1805 fn inline_align(_context: fidl::encoding::Context) -> usize {
1806 std::mem::align_of::<u8>()
1807 }
1808
1809 #[inline(always)]
1810 fn inline_size(_context: fidl::encoding::Context) -> usize {
1811 std::mem::size_of::<u8>()
1812 }
1813
1814 #[inline(always)]
1815 fn encode_is_copy() -> bool {
1816 false
1817 }
1818
1819 #[inline(always)]
1820 fn decode_is_copy() -> bool {
1821 false
1822 }
1823 }
1824
1825 impl fidl::encoding::ValueTypeMarker for WlanTxResultCode {
1826 type Borrowed<'a> = Self;
1827 #[inline(always)]
1828 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1829 *value
1830 }
1831 }
1832
1833 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1834 for WlanTxResultCode
1835 {
1836 #[inline]
1837 unsafe fn encode(
1838 self,
1839 encoder: &mut fidl::encoding::Encoder<'_, D>,
1840 offset: usize,
1841 _depth: fidl::encoding::Depth,
1842 ) -> fidl::Result<()> {
1843 encoder.debug_check_bounds::<Self>(offset);
1844 encoder.write_num(self.into_primitive(), offset);
1845 Ok(())
1846 }
1847 }
1848
1849 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultCode {
1850 #[inline(always)]
1851 fn new_empty() -> Self {
1852 Self::unknown()
1853 }
1854
1855 #[inline]
1856 unsafe fn decode(
1857 &mut self,
1858 decoder: &mut fidl::encoding::Decoder<'_, D>,
1859 offset: usize,
1860 _depth: fidl::encoding::Depth,
1861 ) -> fidl::Result<()> {
1862 decoder.debug_check_bounds::<Self>(offset);
1863 let prim = decoder.read_num::<u8>(offset);
1864
1865 *self = Self::from_primitive_allow_unknown(prim);
1866 Ok(())
1867 }
1868 }
1869
1870 impl fidl::encoding::ValueTypeMarker for BandRssiAdjustment {
1871 type Borrowed<'a> = &'a Self;
1872 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1873 value
1874 }
1875 }
1876
1877 unsafe impl fidl::encoding::TypeMarker for BandRssiAdjustment {
1878 type Owned = Self;
1879
1880 #[inline(always)]
1881 fn inline_align(_context: fidl::encoding::Context) -> usize {
1882 1
1883 }
1884
1885 #[inline(always)]
1886 fn inline_size(_context: fidl::encoding::Context) -> usize {
1887 2
1888 }
1889 }
1890
1891 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BandRssiAdjustment, D>
1892 for &BandRssiAdjustment
1893 {
1894 #[inline]
1895 unsafe fn encode(
1896 self,
1897 encoder: &mut fidl::encoding::Encoder<'_, D>,
1898 offset: usize,
1899 _depth: fidl::encoding::Depth,
1900 ) -> fidl::Result<()> {
1901 encoder.debug_check_bounds::<BandRssiAdjustment>(offset);
1902 fidl::encoding::Encode::<BandRssiAdjustment, D>::encode(
1904 (
1905 <fidl_fuchsia_wlan_ieee80211_common::WlanBand as fidl::encoding::ValueTypeMarker>::borrow(&self.band),
1906 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_adjustment),
1907 ),
1908 encoder, offset, _depth
1909 )
1910 }
1911 }
1912 unsafe impl<
1913 D: fidl::encoding::ResourceDialect,
1914 T0: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211_common::WlanBand, D>,
1915 T1: fidl::encoding::Encode<i8, D>,
1916 > fidl::encoding::Encode<BandRssiAdjustment, D> for (T0, T1)
1917 {
1918 #[inline]
1919 unsafe fn encode(
1920 self,
1921 encoder: &mut fidl::encoding::Encoder<'_, D>,
1922 offset: usize,
1923 depth: fidl::encoding::Depth,
1924 ) -> fidl::Result<()> {
1925 encoder.debug_check_bounds::<BandRssiAdjustment>(offset);
1926 self.0.encode(encoder, offset + 0, depth)?;
1930 self.1.encode(encoder, offset + 1, depth)?;
1931 Ok(())
1932 }
1933 }
1934
1935 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BandRssiAdjustment {
1936 #[inline(always)]
1937 fn new_empty() -> Self {
1938 Self {
1939 band: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211_common::WlanBand, D),
1940 rssi_adjustment: fidl::new_empty!(i8, D),
1941 }
1942 }
1943
1944 #[inline]
1945 unsafe fn decode(
1946 &mut self,
1947 decoder: &mut fidl::encoding::Decoder<'_, D>,
1948 offset: usize,
1949 _depth: fidl::encoding::Depth,
1950 ) -> fidl::Result<()> {
1951 decoder.debug_check_bounds::<Self>(offset);
1952 fidl::decode!(
1954 fidl_fuchsia_wlan_ieee80211_common::WlanBand,
1955 D,
1956 &mut self.band,
1957 decoder,
1958 offset + 0,
1959 _depth
1960 )?;
1961 fidl::decode!(i8, D, &mut self.rssi_adjustment, decoder, offset + 1, _depth)?;
1962 Ok(())
1963 }
1964 }
1965
1966 impl fidl::encoding::ValueTypeMarker for ScheduledScanPlan {
1967 type Borrowed<'a> = &'a Self;
1968 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1969 value
1970 }
1971 }
1972
1973 unsafe impl fidl::encoding::TypeMarker for ScheduledScanPlan {
1974 type Owned = Self;
1975
1976 #[inline(always)]
1977 fn inline_align(_context: fidl::encoding::Context) -> usize {
1978 4
1979 }
1980
1981 #[inline(always)]
1982 fn inline_size(_context: fidl::encoding::Context) -> usize {
1983 8
1984 }
1985 #[inline(always)]
1986 fn encode_is_copy() -> bool {
1987 true
1988 }
1989
1990 #[inline(always)]
1991 fn decode_is_copy() -> bool {
1992 true
1993 }
1994 }
1995
1996 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScheduledScanPlan, D>
1997 for &ScheduledScanPlan
1998 {
1999 #[inline]
2000 unsafe fn encode(
2001 self,
2002 encoder: &mut fidl::encoding::Encoder<'_, D>,
2003 offset: usize,
2004 _depth: fidl::encoding::Depth,
2005 ) -> fidl::Result<()> {
2006 encoder.debug_check_bounds::<ScheduledScanPlan>(offset);
2007 unsafe {
2008 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2010 (buf_ptr as *mut ScheduledScanPlan)
2011 .write_unaligned((self as *const ScheduledScanPlan).read());
2012 }
2015 Ok(())
2016 }
2017 }
2018 unsafe impl<
2019 D: fidl::encoding::ResourceDialect,
2020 T0: fidl::encoding::Encode<u32, D>,
2021 T1: fidl::encoding::Encode<u32, D>,
2022 > fidl::encoding::Encode<ScheduledScanPlan, D> for (T0, T1)
2023 {
2024 #[inline]
2025 unsafe fn encode(
2026 self,
2027 encoder: &mut fidl::encoding::Encoder<'_, D>,
2028 offset: usize,
2029 depth: fidl::encoding::Depth,
2030 ) -> fidl::Result<()> {
2031 encoder.debug_check_bounds::<ScheduledScanPlan>(offset);
2032 self.0.encode(encoder, offset + 0, depth)?;
2036 self.1.encode(encoder, offset + 4, depth)?;
2037 Ok(())
2038 }
2039 }
2040
2041 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScheduledScanPlan {
2042 #[inline(always)]
2043 fn new_empty() -> Self {
2044 Self { interval: fidl::new_empty!(u32, D), iterations: fidl::new_empty!(u32, D) }
2045 }
2046
2047 #[inline]
2048 unsafe fn decode(
2049 &mut self,
2050 decoder: &mut fidl::encoding::Decoder<'_, D>,
2051 offset: usize,
2052 _depth: fidl::encoding::Depth,
2053 ) -> fidl::Result<()> {
2054 decoder.debug_check_bounds::<Self>(offset);
2055 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2056 unsafe {
2059 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 8);
2060 }
2061 Ok(())
2062 }
2063 }
2064
2065 impl fidl::encoding::ValueTypeMarker for WlanChannel {
2066 type Borrowed<'a> = &'a Self;
2067 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2068 value
2069 }
2070 }
2071
2072 unsafe impl fidl::encoding::TypeMarker for WlanChannel {
2073 type Owned = Self;
2074
2075 #[inline(always)]
2076 fn inline_align(_context: fidl::encoding::Context) -> usize {
2077 4
2078 }
2079
2080 #[inline(always)]
2081 fn inline_size(_context: fidl::encoding::Context) -> usize {
2082 12
2083 }
2084 }
2085
2086 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanChannel, D>
2087 for &WlanChannel
2088 {
2089 #[inline]
2090 unsafe fn encode(
2091 self,
2092 encoder: &mut fidl::encoding::Encoder<'_, D>,
2093 offset: usize,
2094 _depth: fidl::encoding::Depth,
2095 ) -> fidl::Result<()> {
2096 encoder.debug_check_bounds::<WlanChannel>(offset);
2097 fidl::encoding::Encode::<WlanChannel, D>::encode(
2099 (
2100 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
2101 <ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.cbw),
2102 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.secondary80),
2103 ),
2104 encoder,
2105 offset,
2106 _depth,
2107 )
2108 }
2109 }
2110 unsafe impl<
2111 D: fidl::encoding::ResourceDialect,
2112 T0: fidl::encoding::Encode<u8, D>,
2113 T1: fidl::encoding::Encode<ChannelBandwidth, D>,
2114 T2: fidl::encoding::Encode<u8, D>,
2115 > fidl::encoding::Encode<WlanChannel, D> for (T0, T1, T2)
2116 {
2117 #[inline]
2118 unsafe fn encode(
2119 self,
2120 encoder: &mut fidl::encoding::Encoder<'_, D>,
2121 offset: usize,
2122 depth: fidl::encoding::Depth,
2123 ) -> fidl::Result<()> {
2124 encoder.debug_check_bounds::<WlanChannel>(offset);
2125 unsafe {
2128 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2129 (ptr as *mut u32).write_unaligned(0);
2130 }
2131 unsafe {
2132 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2133 (ptr as *mut u32).write_unaligned(0);
2134 }
2135 self.0.encode(encoder, offset + 0, depth)?;
2137 self.1.encode(encoder, offset + 4, depth)?;
2138 self.2.encode(encoder, offset + 8, depth)?;
2139 Ok(())
2140 }
2141 }
2142
2143 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanChannel {
2144 #[inline(always)]
2145 fn new_empty() -> Self {
2146 Self {
2147 primary: fidl::new_empty!(u8, D),
2148 cbw: fidl::new_empty!(ChannelBandwidth, D),
2149 secondary80: fidl::new_empty!(u8, D),
2150 }
2151 }
2152
2153 #[inline]
2154 unsafe fn decode(
2155 &mut self,
2156 decoder: &mut fidl::encoding::Decoder<'_, D>,
2157 offset: usize,
2158 _depth: fidl::encoding::Depth,
2159 ) -> fidl::Result<()> {
2160 decoder.debug_check_bounds::<Self>(offset);
2161 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2163 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2164 let mask = 0xffffff00u32;
2165 let maskedval = padval & mask;
2166 if maskedval != 0 {
2167 return Err(fidl::Error::NonZeroPadding {
2168 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2169 });
2170 }
2171 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2172 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2173 let mask = 0xffffff00u32;
2174 let maskedval = padval & mask;
2175 if maskedval != 0 {
2176 return Err(fidl::Error::NonZeroPadding {
2177 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2178 });
2179 }
2180 fidl::decode!(u8, D, &mut self.primary, decoder, offset + 0, _depth)?;
2181 fidl::decode!(ChannelBandwidth, D, &mut self.cbw, decoder, offset + 4, _depth)?;
2182 fidl::decode!(u8, D, &mut self.secondary80, decoder, offset + 8, _depth)?;
2183 Ok(())
2184 }
2185 }
2186
2187 impl fidl::encoding::ValueTypeMarker for WlanTxResult {
2188 type Borrowed<'a> = &'a Self;
2189 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2190 value
2191 }
2192 }
2193
2194 unsafe impl fidl::encoding::TypeMarker for WlanTxResult {
2195 type Owned = Self;
2196
2197 #[inline(always)]
2198 fn inline_align(_context: fidl::encoding::Context) -> usize {
2199 2
2200 }
2201
2202 #[inline(always)]
2203 fn inline_size(_context: fidl::encoding::Context) -> usize {
2204 40
2205 }
2206 }
2207
2208 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResult, D>
2209 for &WlanTxResult
2210 {
2211 #[inline]
2212 unsafe fn encode(
2213 self,
2214 encoder: &mut fidl::encoding::Encoder<'_, D>,
2215 offset: usize,
2216 _depth: fidl::encoding::Depth,
2217 ) -> fidl::Result<()> {
2218 encoder.debug_check_bounds::<WlanTxResult>(offset);
2219 fidl::encoding::Encode::<WlanTxResult, D>::encode(
2221 (
2222 <fidl::encoding::Array<WlanTxResultEntry, 8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_result_entry),
2223 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_addr),
2224 <WlanTxResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2225 ),
2226 encoder, offset, _depth
2227 )
2228 }
2229 }
2230 unsafe impl<
2231 D: fidl::encoding::ResourceDialect,
2232 T0: fidl::encoding::Encode<fidl::encoding::Array<WlanTxResultEntry, 8>, D>,
2233 T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2234 T2: fidl::encoding::Encode<WlanTxResultCode, D>,
2235 > fidl::encoding::Encode<WlanTxResult, D> for (T0, T1, T2)
2236 {
2237 #[inline]
2238 unsafe fn encode(
2239 self,
2240 encoder: &mut fidl::encoding::Encoder<'_, D>,
2241 offset: usize,
2242 depth: fidl::encoding::Depth,
2243 ) -> fidl::Result<()> {
2244 encoder.debug_check_bounds::<WlanTxResult>(offset);
2245 unsafe {
2248 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(38);
2249 (ptr as *mut u16).write_unaligned(0);
2250 }
2251 self.0.encode(encoder, offset + 0, depth)?;
2253 self.1.encode(encoder, offset + 32, depth)?;
2254 self.2.encode(encoder, offset + 38, depth)?;
2255 Ok(())
2256 }
2257 }
2258
2259 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResult {
2260 #[inline(always)]
2261 fn new_empty() -> Self {
2262 Self {
2263 tx_result_entry: fidl::new_empty!(fidl::encoding::Array<WlanTxResultEntry, 8>, D),
2264 peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2265 result_code: fidl::new_empty!(WlanTxResultCode, D),
2266 }
2267 }
2268
2269 #[inline]
2270 unsafe fn decode(
2271 &mut self,
2272 decoder: &mut fidl::encoding::Decoder<'_, D>,
2273 offset: usize,
2274 _depth: fidl::encoding::Depth,
2275 ) -> fidl::Result<()> {
2276 decoder.debug_check_bounds::<Self>(offset);
2277 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(38) };
2279 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2280 let mask = 0xff00u16;
2281 let maskedval = padval & mask;
2282 if maskedval != 0 {
2283 return Err(fidl::Error::NonZeroPadding {
2284 padding_start: offset + 38 + ((mask as u64).trailing_zeros() / 8) as usize,
2285 });
2286 }
2287 fidl::decode!(fidl::encoding::Array<WlanTxResultEntry, 8>, D, &mut self.tx_result_entry, decoder, offset + 0, _depth)?;
2288 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_addr, decoder, offset + 32, _depth)?;
2289 fidl::decode!(
2290 WlanTxResultCode,
2291 D,
2292 &mut self.result_code,
2293 decoder,
2294 offset + 38,
2295 _depth
2296 )?;
2297 Ok(())
2298 }
2299 }
2300
2301 impl fidl::encoding::ValueTypeMarker for WlanTxResultEntry {
2302 type Borrowed<'a> = &'a Self;
2303 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2304 value
2305 }
2306 }
2307
2308 unsafe impl fidl::encoding::TypeMarker for WlanTxResultEntry {
2309 type Owned = Self;
2310
2311 #[inline(always)]
2312 fn inline_align(_context: fidl::encoding::Context) -> usize {
2313 2
2314 }
2315
2316 #[inline(always)]
2317 fn inline_size(_context: fidl::encoding::Context) -> usize {
2318 4
2319 }
2320 }
2321
2322 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResultEntry, D>
2323 for &WlanTxResultEntry
2324 {
2325 #[inline]
2326 unsafe fn encode(
2327 self,
2328 encoder: &mut fidl::encoding::Encoder<'_, D>,
2329 offset: usize,
2330 _depth: fidl::encoding::Depth,
2331 ) -> fidl::Result<()> {
2332 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2333 unsafe {
2334 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2336 (buf_ptr as *mut WlanTxResultEntry)
2337 .write_unaligned((self as *const WlanTxResultEntry).read());
2338 let padding_ptr = buf_ptr.offset(2) as *mut u16;
2341 let padding_mask = 0xff00u16;
2342 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2343 }
2344 Ok(())
2345 }
2346 }
2347 unsafe impl<
2348 D: fidl::encoding::ResourceDialect,
2349 T0: fidl::encoding::Encode<u16, D>,
2350 T1: fidl::encoding::Encode<u8, D>,
2351 > fidl::encoding::Encode<WlanTxResultEntry, D> for (T0, T1)
2352 {
2353 #[inline]
2354 unsafe fn encode(
2355 self,
2356 encoder: &mut fidl::encoding::Encoder<'_, D>,
2357 offset: usize,
2358 depth: fidl::encoding::Depth,
2359 ) -> fidl::Result<()> {
2360 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2361 unsafe {
2364 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2365 (ptr as *mut u16).write_unaligned(0);
2366 }
2367 self.0.encode(encoder, offset + 0, depth)?;
2369 self.1.encode(encoder, offset + 2, depth)?;
2370 Ok(())
2371 }
2372 }
2373
2374 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultEntry {
2375 #[inline(always)]
2376 fn new_empty() -> Self {
2377 Self { tx_vector_idx: fidl::new_empty!(u16, D), attempts: fidl::new_empty!(u8, D) }
2378 }
2379
2380 #[inline]
2381 unsafe fn decode(
2382 &mut self,
2383 decoder: &mut fidl::encoding::Decoder<'_, D>,
2384 offset: usize,
2385 _depth: fidl::encoding::Depth,
2386 ) -> fidl::Result<()> {
2387 decoder.debug_check_bounds::<Self>(offset);
2388 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2389 let ptr = unsafe { buf_ptr.offset(2) };
2391 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2392 let mask = 0xff00u16;
2393 let maskedval = padval & mask;
2394 if maskedval != 0 {
2395 return Err(fidl::Error::NonZeroPadding {
2396 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2397 });
2398 }
2399 unsafe {
2401 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2402 }
2403 Ok(())
2404 }
2405 }
2406
2407 impl fidl::encoding::ValueTypeMarker for WlanWmmAccessCategoryParameters {
2408 type Borrowed<'a> = &'a Self;
2409 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2410 value
2411 }
2412 }
2413
2414 unsafe impl fidl::encoding::TypeMarker for WlanWmmAccessCategoryParameters {
2415 type Owned = Self;
2416
2417 #[inline(always)]
2418 fn inline_align(_context: fidl::encoding::Context) -> usize {
2419 2
2420 }
2421
2422 #[inline(always)]
2423 fn inline_size(_context: fidl::encoding::Context) -> usize {
2424 8
2425 }
2426 }
2427
2428 unsafe impl<D: fidl::encoding::ResourceDialect>
2429 fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>
2430 for &WlanWmmAccessCategoryParameters
2431 {
2432 #[inline]
2433 unsafe fn encode(
2434 self,
2435 encoder: &mut fidl::encoding::Encoder<'_, D>,
2436 offset: usize,
2437 _depth: fidl::encoding::Depth,
2438 ) -> fidl::Result<()> {
2439 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2440 fidl::encoding::Encode::<WlanWmmAccessCategoryParameters, D>::encode(
2442 (
2443 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_min),
2444 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_max),
2445 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.aifsn),
2446 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.txop_limit),
2447 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.acm),
2448 ),
2449 encoder,
2450 offset,
2451 _depth,
2452 )
2453 }
2454 }
2455 unsafe impl<
2456 D: fidl::encoding::ResourceDialect,
2457 T0: fidl::encoding::Encode<u8, D>,
2458 T1: fidl::encoding::Encode<u8, D>,
2459 T2: fidl::encoding::Encode<u8, D>,
2460 T3: fidl::encoding::Encode<u16, D>,
2461 T4: fidl::encoding::Encode<bool, D>,
2462 > fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D> for (T0, T1, T2, T3, T4)
2463 {
2464 #[inline]
2465 unsafe fn encode(
2466 self,
2467 encoder: &mut fidl::encoding::Encoder<'_, D>,
2468 offset: usize,
2469 depth: fidl::encoding::Depth,
2470 ) -> fidl::Result<()> {
2471 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2472 unsafe {
2475 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2476 (ptr as *mut u16).write_unaligned(0);
2477 }
2478 unsafe {
2479 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(6);
2480 (ptr as *mut u16).write_unaligned(0);
2481 }
2482 self.0.encode(encoder, offset + 0, depth)?;
2484 self.1.encode(encoder, offset + 1, depth)?;
2485 self.2.encode(encoder, offset + 2, depth)?;
2486 self.3.encode(encoder, offset + 4, depth)?;
2487 self.4.encode(encoder, offset + 6, depth)?;
2488 Ok(())
2489 }
2490 }
2491
2492 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2493 for WlanWmmAccessCategoryParameters
2494 {
2495 #[inline(always)]
2496 fn new_empty() -> Self {
2497 Self {
2498 ecw_min: fidl::new_empty!(u8, D),
2499 ecw_max: fidl::new_empty!(u8, D),
2500 aifsn: fidl::new_empty!(u8, D),
2501 txop_limit: fidl::new_empty!(u16, D),
2502 acm: fidl::new_empty!(bool, D),
2503 }
2504 }
2505
2506 #[inline]
2507 unsafe fn decode(
2508 &mut self,
2509 decoder: &mut fidl::encoding::Decoder<'_, D>,
2510 offset: usize,
2511 _depth: fidl::encoding::Depth,
2512 ) -> fidl::Result<()> {
2513 decoder.debug_check_bounds::<Self>(offset);
2514 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(2) };
2516 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2517 let mask = 0xff00u16;
2518 let maskedval = padval & mask;
2519 if maskedval != 0 {
2520 return Err(fidl::Error::NonZeroPadding {
2521 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2522 });
2523 }
2524 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(6) };
2525 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2526 let mask = 0xff00u16;
2527 let maskedval = padval & mask;
2528 if maskedval != 0 {
2529 return Err(fidl::Error::NonZeroPadding {
2530 padding_start: offset + 6 + ((mask as u64).trailing_zeros() / 8) as usize,
2531 });
2532 }
2533 fidl::decode!(u8, D, &mut self.ecw_min, decoder, offset + 0, _depth)?;
2534 fidl::decode!(u8, D, &mut self.ecw_max, decoder, offset + 1, _depth)?;
2535 fidl::decode!(u8, D, &mut self.aifsn, decoder, offset + 2, _depth)?;
2536 fidl::decode!(u16, D, &mut self.txop_limit, decoder, offset + 4, _depth)?;
2537 fidl::decode!(bool, D, &mut self.acm, decoder, offset + 6, _depth)?;
2538 Ok(())
2539 }
2540 }
2541
2542 impl fidl::encoding::ValueTypeMarker for WlanWmmParameters {
2543 type Borrowed<'a> = &'a Self;
2544 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2545 value
2546 }
2547 }
2548
2549 unsafe impl fidl::encoding::TypeMarker for WlanWmmParameters {
2550 type Owned = Self;
2551
2552 #[inline(always)]
2553 fn inline_align(_context: fidl::encoding::Context) -> usize {
2554 2
2555 }
2556
2557 #[inline(always)]
2558 fn inline_size(_context: fidl::encoding::Context) -> usize {
2559 34
2560 }
2561 }
2562
2563 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanWmmParameters, D>
2564 for &WlanWmmParameters
2565 {
2566 #[inline]
2567 unsafe fn encode(
2568 self,
2569 encoder: &mut fidl::encoding::Encoder<'_, D>,
2570 offset: usize,
2571 _depth: fidl::encoding::Depth,
2572 ) -> fidl::Result<()> {
2573 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2574 fidl::encoding::Encode::<WlanWmmParameters, D>::encode(
2576 (
2577 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.apsd),
2578 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2579 &self.ac_be_params,
2580 ),
2581 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2582 &self.ac_bk_params,
2583 ),
2584 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2585 &self.ac_vi_params,
2586 ),
2587 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2588 &self.ac_vo_params,
2589 ),
2590 ),
2591 encoder,
2592 offset,
2593 _depth,
2594 )
2595 }
2596 }
2597 unsafe impl<
2598 D: fidl::encoding::ResourceDialect,
2599 T0: fidl::encoding::Encode<bool, D>,
2600 T1: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2601 T2: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2602 T3: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2603 T4: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2604 > fidl::encoding::Encode<WlanWmmParameters, D> for (T0, T1, T2, T3, T4)
2605 {
2606 #[inline]
2607 unsafe fn encode(
2608 self,
2609 encoder: &mut fidl::encoding::Encoder<'_, D>,
2610 offset: usize,
2611 depth: fidl::encoding::Depth,
2612 ) -> fidl::Result<()> {
2613 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2614 unsafe {
2617 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2618 (ptr as *mut u16).write_unaligned(0);
2619 }
2620 self.0.encode(encoder, offset + 0, depth)?;
2622 self.1.encode(encoder, offset + 2, depth)?;
2623 self.2.encode(encoder, offset + 10, depth)?;
2624 self.3.encode(encoder, offset + 18, depth)?;
2625 self.4.encode(encoder, offset + 26, depth)?;
2626 Ok(())
2627 }
2628 }
2629
2630 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanWmmParameters {
2631 #[inline(always)]
2632 fn new_empty() -> Self {
2633 Self {
2634 apsd: fidl::new_empty!(bool, D),
2635 ac_be_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2636 ac_bk_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2637 ac_vi_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2638 ac_vo_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2639 }
2640 }
2641
2642 #[inline]
2643 unsafe fn decode(
2644 &mut self,
2645 decoder: &mut fidl::encoding::Decoder<'_, D>,
2646 offset: usize,
2647 _depth: fidl::encoding::Depth,
2648 ) -> fidl::Result<()> {
2649 decoder.debug_check_bounds::<Self>(offset);
2650 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2652 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2653 let mask = 0xff00u16;
2654 let maskedval = padval & mask;
2655 if maskedval != 0 {
2656 return Err(fidl::Error::NonZeroPadding {
2657 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2658 });
2659 }
2660 fidl::decode!(bool, D, &mut self.apsd, decoder, offset + 0, _depth)?;
2661 fidl::decode!(
2662 WlanWmmAccessCategoryParameters,
2663 D,
2664 &mut self.ac_be_params,
2665 decoder,
2666 offset + 2,
2667 _depth
2668 )?;
2669 fidl::decode!(
2670 WlanWmmAccessCategoryParameters,
2671 D,
2672 &mut self.ac_bk_params,
2673 decoder,
2674 offset + 10,
2675 _depth
2676 )?;
2677 fidl::decode!(
2678 WlanWmmAccessCategoryParameters,
2679 D,
2680 &mut self.ac_vi_params,
2681 decoder,
2682 offset + 18,
2683 _depth
2684 )?;
2685 fidl::decode!(
2686 WlanWmmAccessCategoryParameters,
2687 D,
2688 &mut self.ac_vo_params,
2689 decoder,
2690 offset + 26,
2691 _depth
2692 )?;
2693 Ok(())
2694 }
2695 }
2696
2697 impl ApfPacketFilterSupport {
2698 #[inline(always)]
2699 fn max_ordinal_present(&self) -> u64 {
2700 if let Some(_) = self.max_filter_length {
2701 return 3;
2702 }
2703 if let Some(_) = self.version {
2704 return 2;
2705 }
2706 if let Some(_) = self.supported {
2707 return 1;
2708 }
2709 0
2710 }
2711 }
2712
2713 impl fidl::encoding::ValueTypeMarker for ApfPacketFilterSupport {
2714 type Borrowed<'a> = &'a Self;
2715 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2716 value
2717 }
2718 }
2719
2720 unsafe impl fidl::encoding::TypeMarker for ApfPacketFilterSupport {
2721 type Owned = Self;
2722
2723 #[inline(always)]
2724 fn inline_align(_context: fidl::encoding::Context) -> usize {
2725 8
2726 }
2727
2728 #[inline(always)]
2729 fn inline_size(_context: fidl::encoding::Context) -> usize {
2730 16
2731 }
2732 }
2733
2734 unsafe impl<D: fidl::encoding::ResourceDialect>
2735 fidl::encoding::Encode<ApfPacketFilterSupport, D> for &ApfPacketFilterSupport
2736 {
2737 unsafe fn encode(
2738 self,
2739 encoder: &mut fidl::encoding::Encoder<'_, D>,
2740 offset: usize,
2741 mut depth: fidl::encoding::Depth,
2742 ) -> fidl::Result<()> {
2743 encoder.debug_check_bounds::<ApfPacketFilterSupport>(offset);
2744 let max_ordinal: u64 = self.max_ordinal_present();
2746 encoder.write_num(max_ordinal, offset);
2747 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2748 if max_ordinal == 0 {
2750 return Ok(());
2751 }
2752 depth.increment()?;
2753 let envelope_size = 8;
2754 let bytes_len = max_ordinal as usize * envelope_size;
2755 #[allow(unused_variables)]
2756 let offset = encoder.out_of_line_offset(bytes_len);
2757 let mut _prev_end_offset: usize = 0;
2758 if 1 > max_ordinal {
2759 return Ok(());
2760 }
2761
2762 let cur_offset: usize = (1 - 1) * envelope_size;
2765
2766 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2768
2769 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2774 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2775 encoder,
2776 offset + cur_offset,
2777 depth,
2778 )?;
2779
2780 _prev_end_offset = cur_offset + envelope_size;
2781 if 2 > max_ordinal {
2782 return Ok(());
2783 }
2784
2785 let cur_offset: usize = (2 - 1) * envelope_size;
2788
2789 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2791
2792 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2797 self.version.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2798 encoder,
2799 offset + cur_offset,
2800 depth,
2801 )?;
2802
2803 _prev_end_offset = cur_offset + envelope_size;
2804 if 3 > max_ordinal {
2805 return Ok(());
2806 }
2807
2808 let cur_offset: usize = (3 - 1) * envelope_size;
2811
2812 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2814
2815 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2820 self.max_filter_length
2821 .as_ref()
2822 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2823 encoder,
2824 offset + cur_offset,
2825 depth,
2826 )?;
2827
2828 _prev_end_offset = cur_offset + envelope_size;
2829
2830 Ok(())
2831 }
2832 }
2833
2834 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2835 for ApfPacketFilterSupport
2836 {
2837 #[inline(always)]
2838 fn new_empty() -> Self {
2839 Self::default()
2840 }
2841
2842 unsafe fn decode(
2843 &mut self,
2844 decoder: &mut fidl::encoding::Decoder<'_, D>,
2845 offset: usize,
2846 mut depth: fidl::encoding::Depth,
2847 ) -> fidl::Result<()> {
2848 decoder.debug_check_bounds::<Self>(offset);
2849 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2850 None => return Err(fidl::Error::NotNullable),
2851 Some(len) => len,
2852 };
2853 if len == 0 {
2855 return Ok(());
2856 };
2857 depth.increment()?;
2858 let envelope_size = 8;
2859 let bytes_len = len * envelope_size;
2860 let offset = decoder.out_of_line_offset(bytes_len)?;
2861 let mut _next_ordinal_to_read = 0;
2863 let mut next_offset = offset;
2864 let end_offset = offset + bytes_len;
2865 _next_ordinal_to_read += 1;
2866 if next_offset >= end_offset {
2867 return Ok(());
2868 }
2869
2870 while _next_ordinal_to_read < 1 {
2872 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2873 _next_ordinal_to_read += 1;
2874 next_offset += envelope_size;
2875 }
2876
2877 let next_out_of_line = decoder.next_out_of_line();
2878 let handles_before = decoder.remaining_handles();
2879 if let Some((inlined, num_bytes, num_handles)) =
2880 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2881 {
2882 let member_inline_size =
2883 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2884 if inlined != (member_inline_size <= 4) {
2885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2886 }
2887 let inner_offset;
2888 let mut inner_depth = depth.clone();
2889 if inlined {
2890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2891 inner_offset = next_offset;
2892 } else {
2893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2894 inner_depth.increment()?;
2895 }
2896 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
2897 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2898 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2899 {
2900 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2901 }
2902 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2903 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2904 }
2905 }
2906
2907 next_offset += envelope_size;
2908 _next_ordinal_to_read += 1;
2909 if next_offset >= end_offset {
2910 return Ok(());
2911 }
2912
2913 while _next_ordinal_to_read < 2 {
2915 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2916 _next_ordinal_to_read += 1;
2917 next_offset += envelope_size;
2918 }
2919
2920 let next_out_of_line = decoder.next_out_of_line();
2921 let handles_before = decoder.remaining_handles();
2922 if let Some((inlined, num_bytes, num_handles)) =
2923 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2924 {
2925 let member_inline_size =
2926 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2927 if inlined != (member_inline_size <= 4) {
2928 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2929 }
2930 let inner_offset;
2931 let mut inner_depth = depth.clone();
2932 if inlined {
2933 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2934 inner_offset = next_offset;
2935 } else {
2936 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2937 inner_depth.increment()?;
2938 }
2939 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(i32, D));
2940 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2941 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2942 {
2943 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2944 }
2945 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2946 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2947 }
2948 }
2949
2950 next_offset += envelope_size;
2951 _next_ordinal_to_read += 1;
2952 if next_offset >= end_offset {
2953 return Ok(());
2954 }
2955
2956 while _next_ordinal_to_read < 3 {
2958 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2959 _next_ordinal_to_read += 1;
2960 next_offset += envelope_size;
2961 }
2962
2963 let next_out_of_line = decoder.next_out_of_line();
2964 let handles_before = decoder.remaining_handles();
2965 if let Some((inlined, num_bytes, num_handles)) =
2966 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2967 {
2968 let member_inline_size =
2969 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2970 if inlined != (member_inline_size <= 4) {
2971 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2972 }
2973 let inner_offset;
2974 let mut inner_depth = depth.clone();
2975 if inlined {
2976 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2977 inner_offset = next_offset;
2978 } else {
2979 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2980 inner_depth.increment()?;
2981 }
2982 let val_ref =
2983 self.max_filter_length.get_or_insert_with(|| fidl::new_empty!(i32, D));
2984 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
2985 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2986 {
2987 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2988 }
2989 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2990 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2991 }
2992 }
2993
2994 next_offset += envelope_size;
2995
2996 while next_offset < end_offset {
2998 _next_ordinal_to_read += 1;
2999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3000 next_offset += envelope_size;
3001 }
3002
3003 Ok(())
3004 }
3005 }
3006
3007 impl DataPlaneExtension {
3008 #[inline(always)]
3009 fn max_ordinal_present(&self) -> u64 {
3010 if let Some(_) = self.data_plane_type {
3011 return 1;
3012 }
3013 0
3014 }
3015 }
3016
3017 impl fidl::encoding::ValueTypeMarker for DataPlaneExtension {
3018 type Borrowed<'a> = &'a Self;
3019 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3020 value
3021 }
3022 }
3023
3024 unsafe impl fidl::encoding::TypeMarker for DataPlaneExtension {
3025 type Owned = Self;
3026
3027 #[inline(always)]
3028 fn inline_align(_context: fidl::encoding::Context) -> usize {
3029 8
3030 }
3031
3032 #[inline(always)]
3033 fn inline_size(_context: fidl::encoding::Context) -> usize {
3034 16
3035 }
3036 }
3037
3038 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataPlaneExtension, D>
3039 for &DataPlaneExtension
3040 {
3041 unsafe fn encode(
3042 self,
3043 encoder: &mut fidl::encoding::Encoder<'_, D>,
3044 offset: usize,
3045 mut depth: fidl::encoding::Depth,
3046 ) -> fidl::Result<()> {
3047 encoder.debug_check_bounds::<DataPlaneExtension>(offset);
3048 let max_ordinal: u64 = self.max_ordinal_present();
3050 encoder.write_num(max_ordinal, offset);
3051 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3052 if max_ordinal == 0 {
3054 return Ok(());
3055 }
3056 depth.increment()?;
3057 let envelope_size = 8;
3058 let bytes_len = max_ordinal as usize * envelope_size;
3059 #[allow(unused_variables)]
3060 let offset = encoder.out_of_line_offset(bytes_len);
3061 let mut _prev_end_offset: usize = 0;
3062 if 1 > max_ordinal {
3063 return Ok(());
3064 }
3065
3066 let cur_offset: usize = (1 - 1) * envelope_size;
3069
3070 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3072
3073 fidl::encoding::encode_in_envelope_optional::<DataPlaneType, D>(
3078 self.data_plane_type
3079 .as_ref()
3080 .map(<DataPlaneType as fidl::encoding::ValueTypeMarker>::borrow),
3081 encoder,
3082 offset + cur_offset,
3083 depth,
3084 )?;
3085
3086 _prev_end_offset = cur_offset + envelope_size;
3087
3088 Ok(())
3089 }
3090 }
3091
3092 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneExtension {
3093 #[inline(always)]
3094 fn new_empty() -> Self {
3095 Self::default()
3096 }
3097
3098 unsafe fn decode(
3099 &mut self,
3100 decoder: &mut fidl::encoding::Decoder<'_, D>,
3101 offset: usize,
3102 mut depth: fidl::encoding::Depth,
3103 ) -> fidl::Result<()> {
3104 decoder.debug_check_bounds::<Self>(offset);
3105 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3106 None => return Err(fidl::Error::NotNullable),
3107 Some(len) => len,
3108 };
3109 if len == 0 {
3111 return Ok(());
3112 };
3113 depth.increment()?;
3114 let envelope_size = 8;
3115 let bytes_len = len * envelope_size;
3116 let offset = decoder.out_of_line_offset(bytes_len)?;
3117 let mut _next_ordinal_to_read = 0;
3119 let mut next_offset = offset;
3120 let end_offset = offset + bytes_len;
3121 _next_ordinal_to_read += 1;
3122 if next_offset >= end_offset {
3123 return Ok(());
3124 }
3125
3126 while _next_ordinal_to_read < 1 {
3128 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3129 _next_ordinal_to_read += 1;
3130 next_offset += envelope_size;
3131 }
3132
3133 let next_out_of_line = decoder.next_out_of_line();
3134 let handles_before = decoder.remaining_handles();
3135 if let Some((inlined, num_bytes, num_handles)) =
3136 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3137 {
3138 let member_inline_size =
3139 <DataPlaneType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3140 if inlined != (member_inline_size <= 4) {
3141 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3142 }
3143 let inner_offset;
3144 let mut inner_depth = depth.clone();
3145 if inlined {
3146 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3147 inner_offset = next_offset;
3148 } else {
3149 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3150 inner_depth.increment()?;
3151 }
3152 let val_ref =
3153 self.data_plane_type.get_or_insert_with(|| fidl::new_empty!(DataPlaneType, D));
3154 fidl::decode!(DataPlaneType, D, val_ref, decoder, inner_offset, inner_depth)?;
3155 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3156 {
3157 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3158 }
3159 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3160 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3161 }
3162 }
3163
3164 next_offset += envelope_size;
3165
3166 while next_offset < end_offset {
3168 _next_ordinal_to_read += 1;
3169 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3170 next_offset += envelope_size;
3171 }
3172
3173 Ok(())
3174 }
3175 }
3176
3177 impl DeviceExtension {
3178 #[inline(always)]
3179 fn max_ordinal_present(&self) -> u64 {
3180 if let Some(_) = self.tx_status_report_supported {
3181 return 3;
3182 }
3183 if let Some(_) = self.mac_implementation_type {
3184 return 2;
3185 }
3186 if let Some(_) = self.is_synthetic {
3187 return 1;
3188 }
3189 0
3190 }
3191 }
3192
3193 impl fidl::encoding::ValueTypeMarker for DeviceExtension {
3194 type Borrowed<'a> = &'a Self;
3195 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3196 value
3197 }
3198 }
3199
3200 unsafe impl fidl::encoding::TypeMarker for DeviceExtension {
3201 type Owned = Self;
3202
3203 #[inline(always)]
3204 fn inline_align(_context: fidl::encoding::Context) -> usize {
3205 8
3206 }
3207
3208 #[inline(always)]
3209 fn inline_size(_context: fidl::encoding::Context) -> usize {
3210 16
3211 }
3212 }
3213
3214 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceExtension, D>
3215 for &DeviceExtension
3216 {
3217 unsafe fn encode(
3218 self,
3219 encoder: &mut fidl::encoding::Encoder<'_, D>,
3220 offset: usize,
3221 mut depth: fidl::encoding::Depth,
3222 ) -> fidl::Result<()> {
3223 encoder.debug_check_bounds::<DeviceExtension>(offset);
3224 let max_ordinal: u64 = self.max_ordinal_present();
3226 encoder.write_num(max_ordinal, offset);
3227 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3228 if max_ordinal == 0 {
3230 return Ok(());
3231 }
3232 depth.increment()?;
3233 let envelope_size = 8;
3234 let bytes_len = max_ordinal as usize * envelope_size;
3235 #[allow(unused_variables)]
3236 let offset = encoder.out_of_line_offset(bytes_len);
3237 let mut _prev_end_offset: usize = 0;
3238 if 1 > max_ordinal {
3239 return Ok(());
3240 }
3241
3242 let cur_offset: usize = (1 - 1) * envelope_size;
3245
3246 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3248
3249 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3254 self.is_synthetic.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3255 encoder,
3256 offset + cur_offset,
3257 depth,
3258 )?;
3259
3260 _prev_end_offset = cur_offset + envelope_size;
3261 if 2 > max_ordinal {
3262 return Ok(());
3263 }
3264
3265 let cur_offset: usize = (2 - 1) * envelope_size;
3268
3269 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3271
3272 fidl::encoding::encode_in_envelope_optional::<MacImplementationType, D>(
3277 self.mac_implementation_type
3278 .as_ref()
3279 .map(<MacImplementationType as fidl::encoding::ValueTypeMarker>::borrow),
3280 encoder,
3281 offset + cur_offset,
3282 depth,
3283 )?;
3284
3285 _prev_end_offset = cur_offset + envelope_size;
3286 if 3 > max_ordinal {
3287 return Ok(());
3288 }
3289
3290 let cur_offset: usize = (3 - 1) * envelope_size;
3293
3294 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3296
3297 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3302 self.tx_status_report_supported
3303 .as_ref()
3304 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3305 encoder,
3306 offset + cur_offset,
3307 depth,
3308 )?;
3309
3310 _prev_end_offset = cur_offset + envelope_size;
3311
3312 Ok(())
3313 }
3314 }
3315
3316 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceExtension {
3317 #[inline(always)]
3318 fn new_empty() -> Self {
3319 Self::default()
3320 }
3321
3322 unsafe fn decode(
3323 &mut self,
3324 decoder: &mut fidl::encoding::Decoder<'_, D>,
3325 offset: usize,
3326 mut depth: fidl::encoding::Depth,
3327 ) -> fidl::Result<()> {
3328 decoder.debug_check_bounds::<Self>(offset);
3329 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3330 None => return Err(fidl::Error::NotNullable),
3331 Some(len) => len,
3332 };
3333 if len == 0 {
3335 return Ok(());
3336 };
3337 depth.increment()?;
3338 let envelope_size = 8;
3339 let bytes_len = len * envelope_size;
3340 let offset = decoder.out_of_line_offset(bytes_len)?;
3341 let mut _next_ordinal_to_read = 0;
3343 let mut next_offset = offset;
3344 let end_offset = offset + bytes_len;
3345 _next_ordinal_to_read += 1;
3346 if next_offset >= end_offset {
3347 return Ok(());
3348 }
3349
3350 while _next_ordinal_to_read < 1 {
3352 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3353 _next_ordinal_to_read += 1;
3354 next_offset += envelope_size;
3355 }
3356
3357 let next_out_of_line = decoder.next_out_of_line();
3358 let handles_before = decoder.remaining_handles();
3359 if let Some((inlined, num_bytes, num_handles)) =
3360 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3361 {
3362 let member_inline_size =
3363 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3364 if inlined != (member_inline_size <= 4) {
3365 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3366 }
3367 let inner_offset;
3368 let mut inner_depth = depth.clone();
3369 if inlined {
3370 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3371 inner_offset = next_offset;
3372 } else {
3373 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3374 inner_depth.increment()?;
3375 }
3376 let val_ref = self.is_synthetic.get_or_insert_with(|| fidl::new_empty!(bool, D));
3377 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3378 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3379 {
3380 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3381 }
3382 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3383 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3384 }
3385 }
3386
3387 next_offset += envelope_size;
3388 _next_ordinal_to_read += 1;
3389 if next_offset >= end_offset {
3390 return Ok(());
3391 }
3392
3393 while _next_ordinal_to_read < 2 {
3395 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3396 _next_ordinal_to_read += 1;
3397 next_offset += envelope_size;
3398 }
3399
3400 let next_out_of_line = decoder.next_out_of_line();
3401 let handles_before = decoder.remaining_handles();
3402 if let Some((inlined, num_bytes, num_handles)) =
3403 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3404 {
3405 let member_inline_size =
3406 <MacImplementationType as fidl::encoding::TypeMarker>::inline_size(
3407 decoder.context,
3408 );
3409 if inlined != (member_inline_size <= 4) {
3410 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3411 }
3412 let inner_offset;
3413 let mut inner_depth = depth.clone();
3414 if inlined {
3415 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3416 inner_offset = next_offset;
3417 } else {
3418 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3419 inner_depth.increment()?;
3420 }
3421 let val_ref = self
3422 .mac_implementation_type
3423 .get_or_insert_with(|| fidl::new_empty!(MacImplementationType, D));
3424 fidl::decode!(
3425 MacImplementationType,
3426 D,
3427 val_ref,
3428 decoder,
3429 inner_offset,
3430 inner_depth
3431 )?;
3432 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3433 {
3434 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3435 }
3436 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3437 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3438 }
3439 }
3440
3441 next_offset += envelope_size;
3442 _next_ordinal_to_read += 1;
3443 if next_offset >= end_offset {
3444 return Ok(());
3445 }
3446
3447 while _next_ordinal_to_read < 3 {
3449 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3450 _next_ordinal_to_read += 1;
3451 next_offset += envelope_size;
3452 }
3453
3454 let next_out_of_line = decoder.next_out_of_line();
3455 let handles_before = decoder.remaining_handles();
3456 if let Some((inlined, num_bytes, num_handles)) =
3457 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3458 {
3459 let member_inline_size =
3460 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3461 if inlined != (member_inline_size <= 4) {
3462 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3463 }
3464 let inner_offset;
3465 let mut inner_depth = depth.clone();
3466 if inlined {
3467 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3468 inner_offset = next_offset;
3469 } else {
3470 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3471 inner_depth.increment()?;
3472 }
3473 let val_ref = self
3474 .tx_status_report_supported
3475 .get_or_insert_with(|| fidl::new_empty!(bool, D));
3476 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3477 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3478 {
3479 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3480 }
3481 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3482 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3483 }
3484 }
3485
3486 next_offset += envelope_size;
3487
3488 while next_offset < end_offset {
3490 _next_ordinal_to_read += 1;
3491 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3492 next_offset += envelope_size;
3493 }
3494
3495 Ok(())
3496 }
3497 }
3498
3499 impl DfsFeature {
3500 #[inline(always)]
3501 fn max_ordinal_present(&self) -> u64 {
3502 if let Some(_) = self.supported {
3503 return 1;
3504 }
3505 0
3506 }
3507 }
3508
3509 impl fidl::encoding::ValueTypeMarker for DfsFeature {
3510 type Borrowed<'a> = &'a Self;
3511 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3512 value
3513 }
3514 }
3515
3516 unsafe impl fidl::encoding::TypeMarker for DfsFeature {
3517 type Owned = Self;
3518
3519 #[inline(always)]
3520 fn inline_align(_context: fidl::encoding::Context) -> usize {
3521 8
3522 }
3523
3524 #[inline(always)]
3525 fn inline_size(_context: fidl::encoding::Context) -> usize {
3526 16
3527 }
3528 }
3529
3530 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DfsFeature, D>
3531 for &DfsFeature
3532 {
3533 unsafe fn encode(
3534 self,
3535 encoder: &mut fidl::encoding::Encoder<'_, D>,
3536 offset: usize,
3537 mut depth: fidl::encoding::Depth,
3538 ) -> fidl::Result<()> {
3539 encoder.debug_check_bounds::<DfsFeature>(offset);
3540 let max_ordinal: u64 = self.max_ordinal_present();
3542 encoder.write_num(max_ordinal, offset);
3543 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3544 if max_ordinal == 0 {
3546 return Ok(());
3547 }
3548 depth.increment()?;
3549 let envelope_size = 8;
3550 let bytes_len = max_ordinal as usize * envelope_size;
3551 #[allow(unused_variables)]
3552 let offset = encoder.out_of_line_offset(bytes_len);
3553 let mut _prev_end_offset: usize = 0;
3554 if 1 > max_ordinal {
3555 return Ok(());
3556 }
3557
3558 let cur_offset: usize = (1 - 1) * envelope_size;
3561
3562 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3564
3565 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3570 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3571 encoder,
3572 offset + cur_offset,
3573 depth,
3574 )?;
3575
3576 _prev_end_offset = cur_offset + envelope_size;
3577
3578 Ok(())
3579 }
3580 }
3581
3582 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DfsFeature {
3583 #[inline(always)]
3584 fn new_empty() -> Self {
3585 Self::default()
3586 }
3587
3588 unsafe fn decode(
3589 &mut self,
3590 decoder: &mut fidl::encoding::Decoder<'_, D>,
3591 offset: usize,
3592 mut depth: fidl::encoding::Depth,
3593 ) -> fidl::Result<()> {
3594 decoder.debug_check_bounds::<Self>(offset);
3595 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3596 None => return Err(fidl::Error::NotNullable),
3597 Some(len) => len,
3598 };
3599 if len == 0 {
3601 return Ok(());
3602 };
3603 depth.increment()?;
3604 let envelope_size = 8;
3605 let bytes_len = len * envelope_size;
3606 let offset = decoder.out_of_line_offset(bytes_len)?;
3607 let mut _next_ordinal_to_read = 0;
3609 let mut next_offset = offset;
3610 let end_offset = offset + bytes_len;
3611 _next_ordinal_to_read += 1;
3612 if next_offset >= end_offset {
3613 return Ok(());
3614 }
3615
3616 while _next_ordinal_to_read < 1 {
3618 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3619 _next_ordinal_to_read += 1;
3620 next_offset += envelope_size;
3621 }
3622
3623 let next_out_of_line = decoder.next_out_of_line();
3624 let handles_before = decoder.remaining_handles();
3625 if let Some((inlined, num_bytes, num_handles)) =
3626 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3627 {
3628 let member_inline_size =
3629 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3630 if inlined != (member_inline_size <= 4) {
3631 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3632 }
3633 let inner_offset;
3634 let mut inner_depth = depth.clone();
3635 if inlined {
3636 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3637 inner_offset = next_offset;
3638 } else {
3639 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3640 inner_depth.increment()?;
3641 }
3642 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
3643 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3644 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3645 {
3646 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3647 }
3648 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3649 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3650 }
3651 }
3652
3653 next_offset += envelope_size;
3654
3655 while next_offset < end_offset {
3657 _next_ordinal_to_read += 1;
3658 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3659 next_offset += envelope_size;
3660 }
3661
3662 Ok(())
3663 }
3664 }
3665
3666 impl DiscoverySupport {
3667 #[inline(always)]
3668 fn max_ordinal_present(&self) -> u64 {
3669 if let Some(_) = self.probe_response_offload {
3670 return 2;
3671 }
3672 if let Some(_) = self.scan_offload {
3673 return 1;
3674 }
3675 0
3676 }
3677 }
3678
3679 impl fidl::encoding::ValueTypeMarker for DiscoverySupport {
3680 type Borrowed<'a> = &'a Self;
3681 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3682 value
3683 }
3684 }
3685
3686 unsafe impl fidl::encoding::TypeMarker for DiscoverySupport {
3687 type Owned = Self;
3688
3689 #[inline(always)]
3690 fn inline_align(_context: fidl::encoding::Context) -> usize {
3691 8
3692 }
3693
3694 #[inline(always)]
3695 fn inline_size(_context: fidl::encoding::Context) -> usize {
3696 16
3697 }
3698 }
3699
3700 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DiscoverySupport, D>
3701 for &DiscoverySupport
3702 {
3703 unsafe fn encode(
3704 self,
3705 encoder: &mut fidl::encoding::Encoder<'_, D>,
3706 offset: usize,
3707 mut depth: fidl::encoding::Depth,
3708 ) -> fidl::Result<()> {
3709 encoder.debug_check_bounds::<DiscoverySupport>(offset);
3710 let max_ordinal: u64 = self.max_ordinal_present();
3712 encoder.write_num(max_ordinal, offset);
3713 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3714 if max_ordinal == 0 {
3716 return Ok(());
3717 }
3718 depth.increment()?;
3719 let envelope_size = 8;
3720 let bytes_len = max_ordinal as usize * envelope_size;
3721 #[allow(unused_variables)]
3722 let offset = encoder.out_of_line_offset(bytes_len);
3723 let mut _prev_end_offset: usize = 0;
3724 if 1 > max_ordinal {
3725 return Ok(());
3726 }
3727
3728 let cur_offset: usize = (1 - 1) * envelope_size;
3731
3732 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3734
3735 fidl::encoding::encode_in_envelope_optional::<ScanOffloadExtension, D>(
3740 self.scan_offload
3741 .as_ref()
3742 .map(<ScanOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow),
3743 encoder,
3744 offset + cur_offset,
3745 depth,
3746 )?;
3747
3748 _prev_end_offset = cur_offset + envelope_size;
3749 if 2 > max_ordinal {
3750 return Ok(());
3751 }
3752
3753 let cur_offset: usize = (2 - 1) * envelope_size;
3756
3757 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3759
3760 fidl::encoding::encode_in_envelope_optional::<ProbeResponseOffloadExtension, D>(
3765 self.probe_response_offload.as_ref().map(
3766 <ProbeResponseOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
3767 ),
3768 encoder,
3769 offset + cur_offset,
3770 depth,
3771 )?;
3772
3773 _prev_end_offset = cur_offset + envelope_size;
3774
3775 Ok(())
3776 }
3777 }
3778
3779 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DiscoverySupport {
3780 #[inline(always)]
3781 fn new_empty() -> Self {
3782 Self::default()
3783 }
3784
3785 unsafe fn decode(
3786 &mut self,
3787 decoder: &mut fidl::encoding::Decoder<'_, D>,
3788 offset: usize,
3789 mut depth: fidl::encoding::Depth,
3790 ) -> fidl::Result<()> {
3791 decoder.debug_check_bounds::<Self>(offset);
3792 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3793 None => return Err(fidl::Error::NotNullable),
3794 Some(len) => len,
3795 };
3796 if len == 0 {
3798 return Ok(());
3799 };
3800 depth.increment()?;
3801 let envelope_size = 8;
3802 let bytes_len = len * envelope_size;
3803 let offset = decoder.out_of_line_offset(bytes_len)?;
3804 let mut _next_ordinal_to_read = 0;
3806 let mut next_offset = offset;
3807 let end_offset = offset + bytes_len;
3808 _next_ordinal_to_read += 1;
3809 if next_offset >= end_offset {
3810 return Ok(());
3811 }
3812
3813 while _next_ordinal_to_read < 1 {
3815 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3816 _next_ordinal_to_read += 1;
3817 next_offset += envelope_size;
3818 }
3819
3820 let next_out_of_line = decoder.next_out_of_line();
3821 let handles_before = decoder.remaining_handles();
3822 if let Some((inlined, num_bytes, num_handles)) =
3823 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3824 {
3825 let member_inline_size =
3826 <ScanOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3827 decoder.context,
3828 );
3829 if inlined != (member_inline_size <= 4) {
3830 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3831 }
3832 let inner_offset;
3833 let mut inner_depth = depth.clone();
3834 if inlined {
3835 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3836 inner_offset = next_offset;
3837 } else {
3838 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3839 inner_depth.increment()?;
3840 }
3841 let val_ref = self
3842 .scan_offload
3843 .get_or_insert_with(|| fidl::new_empty!(ScanOffloadExtension, D));
3844 fidl::decode!(
3845 ScanOffloadExtension,
3846 D,
3847 val_ref,
3848 decoder,
3849 inner_offset,
3850 inner_depth
3851 )?;
3852 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3853 {
3854 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3855 }
3856 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3857 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3858 }
3859 }
3860
3861 next_offset += envelope_size;
3862 _next_ordinal_to_read += 1;
3863 if next_offset >= end_offset {
3864 return Ok(());
3865 }
3866
3867 while _next_ordinal_to_read < 2 {
3869 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3870 _next_ordinal_to_read += 1;
3871 next_offset += envelope_size;
3872 }
3873
3874 let next_out_of_line = decoder.next_out_of_line();
3875 let handles_before = decoder.remaining_handles();
3876 if let Some((inlined, num_bytes, num_handles)) =
3877 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3878 {
3879 let member_inline_size =
3880 <ProbeResponseOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3881 decoder.context,
3882 );
3883 if inlined != (member_inline_size <= 4) {
3884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3885 }
3886 let inner_offset;
3887 let mut inner_depth = depth.clone();
3888 if inlined {
3889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3890 inner_offset = next_offset;
3891 } else {
3892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3893 inner_depth.increment()?;
3894 }
3895 let val_ref = self
3896 .probe_response_offload
3897 .get_or_insert_with(|| fidl::new_empty!(ProbeResponseOffloadExtension, D));
3898 fidl::decode!(
3899 ProbeResponseOffloadExtension,
3900 D,
3901 val_ref,
3902 decoder,
3903 inner_offset,
3904 inner_depth
3905 )?;
3906 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3907 {
3908 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3909 }
3910 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3911 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3912 }
3913 }
3914
3915 next_offset += envelope_size;
3916
3917 while next_offset < end_offset {
3919 _next_ordinal_to_read += 1;
3920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3921 next_offset += envelope_size;
3922 }
3923
3924 Ok(())
3925 }
3926 }
3927
3928 impl JoinBssRequest {
3929 #[inline(always)]
3930 fn max_ordinal_present(&self) -> u64 {
3931 if let Some(_) = self.beacon_period {
3932 return 4;
3933 }
3934 if let Some(_) = self.remote {
3935 return 3;
3936 }
3937 if let Some(_) = self.bss_type {
3938 return 2;
3939 }
3940 if let Some(_) = self.bssid {
3941 return 1;
3942 }
3943 0
3944 }
3945 }
3946
3947 impl fidl::encoding::ValueTypeMarker for JoinBssRequest {
3948 type Borrowed<'a> = &'a Self;
3949 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3950 value
3951 }
3952 }
3953
3954 unsafe impl fidl::encoding::TypeMarker for JoinBssRequest {
3955 type Owned = Self;
3956
3957 #[inline(always)]
3958 fn inline_align(_context: fidl::encoding::Context) -> usize {
3959 8
3960 }
3961
3962 #[inline(always)]
3963 fn inline_size(_context: fidl::encoding::Context) -> usize {
3964 16
3965 }
3966 }
3967
3968 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinBssRequest, D>
3969 for &JoinBssRequest
3970 {
3971 unsafe fn encode(
3972 self,
3973 encoder: &mut fidl::encoding::Encoder<'_, D>,
3974 offset: usize,
3975 mut depth: fidl::encoding::Depth,
3976 ) -> fidl::Result<()> {
3977 encoder.debug_check_bounds::<JoinBssRequest>(offset);
3978 let max_ordinal: u64 = self.max_ordinal_present();
3980 encoder.write_num(max_ordinal, offset);
3981 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3982 if max_ordinal == 0 {
3984 return Ok(());
3985 }
3986 depth.increment()?;
3987 let envelope_size = 8;
3988 let bytes_len = max_ordinal as usize * envelope_size;
3989 #[allow(unused_variables)]
3990 let offset = encoder.out_of_line_offset(bytes_len);
3991 let mut _prev_end_offset: usize = 0;
3992 if 1 > max_ordinal {
3993 return Ok(());
3994 }
3995
3996 let cur_offset: usize = (1 - 1) * envelope_size;
3999
4000 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4002
4003 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4008 self.bssid
4009 .as_ref()
4010 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4011 encoder,
4012 offset + cur_offset,
4013 depth,
4014 )?;
4015
4016 _prev_end_offset = cur_offset + envelope_size;
4017 if 2 > max_ordinal {
4018 return Ok(());
4019 }
4020
4021 let cur_offset: usize = (2 - 1) * envelope_size;
4024
4025 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4027
4028 fidl::encoding::encode_in_envelope_optional::<BssType, D>(
4033 self.bss_type.as_ref().map(<BssType as fidl::encoding::ValueTypeMarker>::borrow),
4034 encoder,
4035 offset + cur_offset,
4036 depth,
4037 )?;
4038
4039 _prev_end_offset = cur_offset + envelope_size;
4040 if 3 > max_ordinal {
4041 return Ok(());
4042 }
4043
4044 let cur_offset: usize = (3 - 1) * envelope_size;
4047
4048 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4050
4051 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4056 self.remote.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4057 encoder,
4058 offset + cur_offset,
4059 depth,
4060 )?;
4061
4062 _prev_end_offset = cur_offset + envelope_size;
4063 if 4 > max_ordinal {
4064 return Ok(());
4065 }
4066
4067 let cur_offset: usize = (4 - 1) * envelope_size;
4070
4071 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4073
4074 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4079 self.beacon_period.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4080 encoder,
4081 offset + cur_offset,
4082 depth,
4083 )?;
4084
4085 _prev_end_offset = cur_offset + envelope_size;
4086
4087 Ok(())
4088 }
4089 }
4090
4091 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinBssRequest {
4092 #[inline(always)]
4093 fn new_empty() -> Self {
4094 Self::default()
4095 }
4096
4097 unsafe fn decode(
4098 &mut self,
4099 decoder: &mut fidl::encoding::Decoder<'_, D>,
4100 offset: usize,
4101 mut depth: fidl::encoding::Depth,
4102 ) -> fidl::Result<()> {
4103 decoder.debug_check_bounds::<Self>(offset);
4104 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4105 None => return Err(fidl::Error::NotNullable),
4106 Some(len) => len,
4107 };
4108 if len == 0 {
4110 return Ok(());
4111 };
4112 depth.increment()?;
4113 let envelope_size = 8;
4114 let bytes_len = len * envelope_size;
4115 let offset = decoder.out_of_line_offset(bytes_len)?;
4116 let mut _next_ordinal_to_read = 0;
4118 let mut next_offset = offset;
4119 let end_offset = offset + bytes_len;
4120 _next_ordinal_to_read += 1;
4121 if next_offset >= end_offset {
4122 return Ok(());
4123 }
4124
4125 while _next_ordinal_to_read < 1 {
4127 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4128 _next_ordinal_to_read += 1;
4129 next_offset += envelope_size;
4130 }
4131
4132 let next_out_of_line = decoder.next_out_of_line();
4133 let handles_before = decoder.remaining_handles();
4134 if let Some((inlined, num_bytes, num_handles)) =
4135 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4136 {
4137 let member_inline_size =
4138 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4139 decoder.context,
4140 );
4141 if inlined != (member_inline_size <= 4) {
4142 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4143 }
4144 let inner_offset;
4145 let mut inner_depth = depth.clone();
4146 if inlined {
4147 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4148 inner_offset = next_offset;
4149 } else {
4150 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4151 inner_depth.increment()?;
4152 }
4153 let val_ref = self
4154 .bssid
4155 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4156 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4157 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4158 {
4159 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4160 }
4161 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4162 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4163 }
4164 }
4165
4166 next_offset += envelope_size;
4167 _next_ordinal_to_read += 1;
4168 if next_offset >= end_offset {
4169 return Ok(());
4170 }
4171
4172 while _next_ordinal_to_read < 2 {
4174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4175 _next_ordinal_to_read += 1;
4176 next_offset += envelope_size;
4177 }
4178
4179 let next_out_of_line = decoder.next_out_of_line();
4180 let handles_before = decoder.remaining_handles();
4181 if let Some((inlined, num_bytes, num_handles)) =
4182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4183 {
4184 let member_inline_size =
4185 <BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4186 if inlined != (member_inline_size <= 4) {
4187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4188 }
4189 let inner_offset;
4190 let mut inner_depth = depth.clone();
4191 if inlined {
4192 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4193 inner_offset = next_offset;
4194 } else {
4195 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4196 inner_depth.increment()?;
4197 }
4198 let val_ref = self.bss_type.get_or_insert_with(|| fidl::new_empty!(BssType, D));
4199 fidl::decode!(BssType, D, val_ref, decoder, inner_offset, inner_depth)?;
4200 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4201 {
4202 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4203 }
4204 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4205 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4206 }
4207 }
4208
4209 next_offset += envelope_size;
4210 _next_ordinal_to_read += 1;
4211 if next_offset >= end_offset {
4212 return Ok(());
4213 }
4214
4215 while _next_ordinal_to_read < 3 {
4217 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4218 _next_ordinal_to_read += 1;
4219 next_offset += envelope_size;
4220 }
4221
4222 let next_out_of_line = decoder.next_out_of_line();
4223 let handles_before = decoder.remaining_handles();
4224 if let Some((inlined, num_bytes, num_handles)) =
4225 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4226 {
4227 let member_inline_size =
4228 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4229 if inlined != (member_inline_size <= 4) {
4230 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4231 }
4232 let inner_offset;
4233 let mut inner_depth = depth.clone();
4234 if inlined {
4235 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4236 inner_offset = next_offset;
4237 } else {
4238 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4239 inner_depth.increment()?;
4240 }
4241 let val_ref = self.remote.get_or_insert_with(|| fidl::new_empty!(bool, D));
4242 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4243 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4244 {
4245 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4246 }
4247 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4248 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4249 }
4250 }
4251
4252 next_offset += envelope_size;
4253 _next_ordinal_to_read += 1;
4254 if next_offset >= end_offset {
4255 return Ok(());
4256 }
4257
4258 while _next_ordinal_to_read < 4 {
4260 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4261 _next_ordinal_to_read += 1;
4262 next_offset += envelope_size;
4263 }
4264
4265 let next_out_of_line = decoder.next_out_of_line();
4266 let handles_before = decoder.remaining_handles();
4267 if let Some((inlined, num_bytes, num_handles)) =
4268 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4269 {
4270 let member_inline_size =
4271 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4272 if inlined != (member_inline_size <= 4) {
4273 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4274 }
4275 let inner_offset;
4276 let mut inner_depth = depth.clone();
4277 if inlined {
4278 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4279 inner_offset = next_offset;
4280 } else {
4281 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4282 inner_depth.increment()?;
4283 }
4284 let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u16, D));
4285 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4286 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4287 {
4288 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4289 }
4290 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4291 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4292 }
4293 }
4294
4295 next_offset += envelope_size;
4296
4297 while next_offset < end_offset {
4299 _next_ordinal_to_read += 1;
4300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4301 next_offset += envelope_size;
4302 }
4303
4304 Ok(())
4305 }
4306 }
4307
4308 impl MacSublayerSupport {
4309 #[inline(always)]
4310 fn max_ordinal_present(&self) -> u64 {
4311 if let Some(_) = self.device {
4312 return 3;
4313 }
4314 if let Some(_) = self.data_plane {
4315 return 2;
4316 }
4317 if let Some(_) = self.rate_selection_offload {
4318 return 1;
4319 }
4320 0
4321 }
4322 }
4323
4324 impl fidl::encoding::ValueTypeMarker for MacSublayerSupport {
4325 type Borrowed<'a> = &'a Self;
4326 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4327 value
4328 }
4329 }
4330
4331 unsafe impl fidl::encoding::TypeMarker for MacSublayerSupport {
4332 type Owned = Self;
4333
4334 #[inline(always)]
4335 fn inline_align(_context: fidl::encoding::Context) -> usize {
4336 8
4337 }
4338
4339 #[inline(always)]
4340 fn inline_size(_context: fidl::encoding::Context) -> usize {
4341 16
4342 }
4343 }
4344
4345 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacSublayerSupport, D>
4346 for &MacSublayerSupport
4347 {
4348 unsafe fn encode(
4349 self,
4350 encoder: &mut fidl::encoding::Encoder<'_, D>,
4351 offset: usize,
4352 mut depth: fidl::encoding::Depth,
4353 ) -> fidl::Result<()> {
4354 encoder.debug_check_bounds::<MacSublayerSupport>(offset);
4355 let max_ordinal: u64 = self.max_ordinal_present();
4357 encoder.write_num(max_ordinal, offset);
4358 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4359 if max_ordinal == 0 {
4361 return Ok(());
4362 }
4363 depth.increment()?;
4364 let envelope_size = 8;
4365 let bytes_len = max_ordinal as usize * envelope_size;
4366 #[allow(unused_variables)]
4367 let offset = encoder.out_of_line_offset(bytes_len);
4368 let mut _prev_end_offset: usize = 0;
4369 if 1 > max_ordinal {
4370 return Ok(());
4371 }
4372
4373 let cur_offset: usize = (1 - 1) * envelope_size;
4376
4377 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4379
4380 fidl::encoding::encode_in_envelope_optional::<RateSelectionOffloadExtension, D>(
4385 self.rate_selection_offload.as_ref().map(
4386 <RateSelectionOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
4387 ),
4388 encoder,
4389 offset + cur_offset,
4390 depth,
4391 )?;
4392
4393 _prev_end_offset = cur_offset + envelope_size;
4394 if 2 > max_ordinal {
4395 return Ok(());
4396 }
4397
4398 let cur_offset: usize = (2 - 1) * envelope_size;
4401
4402 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4404
4405 fidl::encoding::encode_in_envelope_optional::<DataPlaneExtension, D>(
4410 self.data_plane
4411 .as_ref()
4412 .map(<DataPlaneExtension as fidl::encoding::ValueTypeMarker>::borrow),
4413 encoder,
4414 offset + cur_offset,
4415 depth,
4416 )?;
4417
4418 _prev_end_offset = cur_offset + envelope_size;
4419 if 3 > max_ordinal {
4420 return Ok(());
4421 }
4422
4423 let cur_offset: usize = (3 - 1) * envelope_size;
4426
4427 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4429
4430 fidl::encoding::encode_in_envelope_optional::<DeviceExtension, D>(
4435 self.device
4436 .as_ref()
4437 .map(<DeviceExtension as fidl::encoding::ValueTypeMarker>::borrow),
4438 encoder,
4439 offset + cur_offset,
4440 depth,
4441 )?;
4442
4443 _prev_end_offset = cur_offset + envelope_size;
4444
4445 Ok(())
4446 }
4447 }
4448
4449 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacSublayerSupport {
4450 #[inline(always)]
4451 fn new_empty() -> Self {
4452 Self::default()
4453 }
4454
4455 unsafe fn decode(
4456 &mut self,
4457 decoder: &mut fidl::encoding::Decoder<'_, D>,
4458 offset: usize,
4459 mut depth: fidl::encoding::Depth,
4460 ) -> fidl::Result<()> {
4461 decoder.debug_check_bounds::<Self>(offset);
4462 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4463 None => return Err(fidl::Error::NotNullable),
4464 Some(len) => len,
4465 };
4466 if len == 0 {
4468 return Ok(());
4469 };
4470 depth.increment()?;
4471 let envelope_size = 8;
4472 let bytes_len = len * envelope_size;
4473 let offset = decoder.out_of_line_offset(bytes_len)?;
4474 let mut _next_ordinal_to_read = 0;
4476 let mut next_offset = offset;
4477 let end_offset = offset + bytes_len;
4478 _next_ordinal_to_read += 1;
4479 if next_offset >= end_offset {
4480 return Ok(());
4481 }
4482
4483 while _next_ordinal_to_read < 1 {
4485 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4486 _next_ordinal_to_read += 1;
4487 next_offset += envelope_size;
4488 }
4489
4490 let next_out_of_line = decoder.next_out_of_line();
4491 let handles_before = decoder.remaining_handles();
4492 if let Some((inlined, num_bytes, num_handles)) =
4493 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4494 {
4495 let member_inline_size =
4496 <RateSelectionOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
4497 decoder.context,
4498 );
4499 if inlined != (member_inline_size <= 4) {
4500 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4501 }
4502 let inner_offset;
4503 let mut inner_depth = depth.clone();
4504 if inlined {
4505 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4506 inner_offset = next_offset;
4507 } else {
4508 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4509 inner_depth.increment()?;
4510 }
4511 let val_ref = self
4512 .rate_selection_offload
4513 .get_or_insert_with(|| fidl::new_empty!(RateSelectionOffloadExtension, D));
4514 fidl::decode!(
4515 RateSelectionOffloadExtension,
4516 D,
4517 val_ref,
4518 decoder,
4519 inner_offset,
4520 inner_depth
4521 )?;
4522 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4523 {
4524 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4525 }
4526 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4527 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4528 }
4529 }
4530
4531 next_offset += envelope_size;
4532 _next_ordinal_to_read += 1;
4533 if next_offset >= end_offset {
4534 return Ok(());
4535 }
4536
4537 while _next_ordinal_to_read < 2 {
4539 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4540 _next_ordinal_to_read += 1;
4541 next_offset += envelope_size;
4542 }
4543
4544 let next_out_of_line = decoder.next_out_of_line();
4545 let handles_before = decoder.remaining_handles();
4546 if let Some((inlined, num_bytes, num_handles)) =
4547 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4548 {
4549 let member_inline_size =
4550 <DataPlaneExtension as fidl::encoding::TypeMarker>::inline_size(
4551 decoder.context,
4552 );
4553 if inlined != (member_inline_size <= 4) {
4554 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4555 }
4556 let inner_offset;
4557 let mut inner_depth = depth.clone();
4558 if inlined {
4559 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4560 inner_offset = next_offset;
4561 } else {
4562 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4563 inner_depth.increment()?;
4564 }
4565 let val_ref =
4566 self.data_plane.get_or_insert_with(|| fidl::new_empty!(DataPlaneExtension, D));
4567 fidl::decode!(DataPlaneExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4568 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4569 {
4570 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4571 }
4572 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4573 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4574 }
4575 }
4576
4577 next_offset += envelope_size;
4578 _next_ordinal_to_read += 1;
4579 if next_offset >= end_offset {
4580 return Ok(());
4581 }
4582
4583 while _next_ordinal_to_read < 3 {
4585 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4586 _next_ordinal_to_read += 1;
4587 next_offset += envelope_size;
4588 }
4589
4590 let next_out_of_line = decoder.next_out_of_line();
4591 let handles_before = decoder.remaining_handles();
4592 if let Some((inlined, num_bytes, num_handles)) =
4593 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4594 {
4595 let member_inline_size =
4596 <DeviceExtension as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4597 if inlined != (member_inline_size <= 4) {
4598 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4599 }
4600 let inner_offset;
4601 let mut inner_depth = depth.clone();
4602 if inlined {
4603 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4604 inner_offset = next_offset;
4605 } else {
4606 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4607 inner_depth.increment()?;
4608 }
4609 let val_ref =
4610 self.device.get_or_insert_with(|| fidl::new_empty!(DeviceExtension, D));
4611 fidl::decode!(DeviceExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4612 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4613 {
4614 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4615 }
4616 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4617 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4618 }
4619 }
4620
4621 next_offset += envelope_size;
4622
4623 while next_offset < end_offset {
4625 _next_ordinal_to_read += 1;
4626 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4627 next_offset += envelope_size;
4628 }
4629
4630 Ok(())
4631 }
4632 }
4633
4634 impl MfpFeature {
4635 #[inline(always)]
4636 fn max_ordinal_present(&self) -> u64 {
4637 if let Some(_) = self.supported {
4638 return 1;
4639 }
4640 0
4641 }
4642 }
4643
4644 impl fidl::encoding::ValueTypeMarker for MfpFeature {
4645 type Borrowed<'a> = &'a Self;
4646 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4647 value
4648 }
4649 }
4650
4651 unsafe impl fidl::encoding::TypeMarker for MfpFeature {
4652 type Owned = Self;
4653
4654 #[inline(always)]
4655 fn inline_align(_context: fidl::encoding::Context) -> usize {
4656 8
4657 }
4658
4659 #[inline(always)]
4660 fn inline_size(_context: fidl::encoding::Context) -> usize {
4661 16
4662 }
4663 }
4664
4665 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MfpFeature, D>
4666 for &MfpFeature
4667 {
4668 unsafe fn encode(
4669 self,
4670 encoder: &mut fidl::encoding::Encoder<'_, D>,
4671 offset: usize,
4672 mut depth: fidl::encoding::Depth,
4673 ) -> fidl::Result<()> {
4674 encoder.debug_check_bounds::<MfpFeature>(offset);
4675 let max_ordinal: u64 = self.max_ordinal_present();
4677 encoder.write_num(max_ordinal, offset);
4678 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4679 if max_ordinal == 0 {
4681 return Ok(());
4682 }
4683 depth.increment()?;
4684 let envelope_size = 8;
4685 let bytes_len = max_ordinal as usize * envelope_size;
4686 #[allow(unused_variables)]
4687 let offset = encoder.out_of_line_offset(bytes_len);
4688 let mut _prev_end_offset: usize = 0;
4689 if 1 > max_ordinal {
4690 return Ok(());
4691 }
4692
4693 let cur_offset: usize = (1 - 1) * envelope_size;
4696
4697 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4699
4700 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4705 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4706 encoder,
4707 offset + cur_offset,
4708 depth,
4709 )?;
4710
4711 _prev_end_offset = cur_offset + envelope_size;
4712
4713 Ok(())
4714 }
4715 }
4716
4717 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MfpFeature {
4718 #[inline(always)]
4719 fn new_empty() -> Self {
4720 Self::default()
4721 }
4722
4723 unsafe fn decode(
4724 &mut self,
4725 decoder: &mut fidl::encoding::Decoder<'_, D>,
4726 offset: usize,
4727 mut depth: fidl::encoding::Depth,
4728 ) -> fidl::Result<()> {
4729 decoder.debug_check_bounds::<Self>(offset);
4730 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4731 None => return Err(fidl::Error::NotNullable),
4732 Some(len) => len,
4733 };
4734 if len == 0 {
4736 return Ok(());
4737 };
4738 depth.increment()?;
4739 let envelope_size = 8;
4740 let bytes_len = len * envelope_size;
4741 let offset = decoder.out_of_line_offset(bytes_len)?;
4742 let mut _next_ordinal_to_read = 0;
4744 let mut next_offset = offset;
4745 let end_offset = offset + bytes_len;
4746 _next_ordinal_to_read += 1;
4747 if next_offset >= end_offset {
4748 return Ok(());
4749 }
4750
4751 while _next_ordinal_to_read < 1 {
4753 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4754 _next_ordinal_to_read += 1;
4755 next_offset += envelope_size;
4756 }
4757
4758 let next_out_of_line = decoder.next_out_of_line();
4759 let handles_before = decoder.remaining_handles();
4760 if let Some((inlined, num_bytes, num_handles)) =
4761 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4762 {
4763 let member_inline_size =
4764 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4765 if inlined != (member_inline_size <= 4) {
4766 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4767 }
4768 let inner_offset;
4769 let mut inner_depth = depth.clone();
4770 if inlined {
4771 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4772 inner_offset = next_offset;
4773 } else {
4774 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4775 inner_depth.increment()?;
4776 }
4777 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4778 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4779 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4780 {
4781 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4782 }
4783 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4784 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4785 }
4786 }
4787
4788 next_offset += envelope_size;
4789
4790 while next_offset < end_offset {
4792 _next_ordinal_to_read += 1;
4793 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4794 next_offset += envelope_size;
4795 }
4796
4797 Ok(())
4798 }
4799 }
4800
4801 impl OweFeature {
4802 #[inline(always)]
4803 fn max_ordinal_present(&self) -> u64 {
4804 if let Some(_) = self.supported {
4805 return 1;
4806 }
4807 0
4808 }
4809 }
4810
4811 impl fidl::encoding::ValueTypeMarker for OweFeature {
4812 type Borrowed<'a> = &'a Self;
4813 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4814 value
4815 }
4816 }
4817
4818 unsafe impl fidl::encoding::TypeMarker for OweFeature {
4819 type Owned = Self;
4820
4821 #[inline(always)]
4822 fn inline_align(_context: fidl::encoding::Context) -> usize {
4823 8
4824 }
4825
4826 #[inline(always)]
4827 fn inline_size(_context: fidl::encoding::Context) -> usize {
4828 16
4829 }
4830 }
4831
4832 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OweFeature, D>
4833 for &OweFeature
4834 {
4835 unsafe fn encode(
4836 self,
4837 encoder: &mut fidl::encoding::Encoder<'_, D>,
4838 offset: usize,
4839 mut depth: fidl::encoding::Depth,
4840 ) -> fidl::Result<()> {
4841 encoder.debug_check_bounds::<OweFeature>(offset);
4842 let max_ordinal: u64 = self.max_ordinal_present();
4844 encoder.write_num(max_ordinal, offset);
4845 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4846 if max_ordinal == 0 {
4848 return Ok(());
4849 }
4850 depth.increment()?;
4851 let envelope_size = 8;
4852 let bytes_len = max_ordinal as usize * envelope_size;
4853 #[allow(unused_variables)]
4854 let offset = encoder.out_of_line_offset(bytes_len);
4855 let mut _prev_end_offset: usize = 0;
4856 if 1 > max_ordinal {
4857 return Ok(());
4858 }
4859
4860 let cur_offset: usize = (1 - 1) * envelope_size;
4863
4864 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4866
4867 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4872 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4873 encoder,
4874 offset + cur_offset,
4875 depth,
4876 )?;
4877
4878 _prev_end_offset = cur_offset + envelope_size;
4879
4880 Ok(())
4881 }
4882 }
4883
4884 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OweFeature {
4885 #[inline(always)]
4886 fn new_empty() -> Self {
4887 Self::default()
4888 }
4889
4890 unsafe fn decode(
4891 &mut self,
4892 decoder: &mut fidl::encoding::Decoder<'_, D>,
4893 offset: usize,
4894 mut depth: fidl::encoding::Depth,
4895 ) -> fidl::Result<()> {
4896 decoder.debug_check_bounds::<Self>(offset);
4897 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4898 None => return Err(fidl::Error::NotNullable),
4899 Some(len) => len,
4900 };
4901 if len == 0 {
4903 return Ok(());
4904 };
4905 depth.increment()?;
4906 let envelope_size = 8;
4907 let bytes_len = len * envelope_size;
4908 let offset = decoder.out_of_line_offset(bytes_len)?;
4909 let mut _next_ordinal_to_read = 0;
4911 let mut next_offset = offset;
4912 let end_offset = offset + bytes_len;
4913 _next_ordinal_to_read += 1;
4914 if next_offset >= end_offset {
4915 return Ok(());
4916 }
4917
4918 while _next_ordinal_to_read < 1 {
4920 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4921 _next_ordinal_to_read += 1;
4922 next_offset += envelope_size;
4923 }
4924
4925 let next_out_of_line = decoder.next_out_of_line();
4926 let handles_before = decoder.remaining_handles();
4927 if let Some((inlined, num_bytes, num_handles)) =
4928 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4929 {
4930 let member_inline_size =
4931 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4932 if inlined != (member_inline_size <= 4) {
4933 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4934 }
4935 let inner_offset;
4936 let mut inner_depth = depth.clone();
4937 if inlined {
4938 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4939 inner_offset = next_offset;
4940 } else {
4941 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4942 inner_depth.increment()?;
4943 }
4944 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4945 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4946 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4947 {
4948 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4949 }
4950 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4951 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4952 }
4953 }
4954
4955 next_offset += envelope_size;
4956
4957 while next_offset < end_offset {
4959 _next_ordinal_to_read += 1;
4960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4961 next_offset += envelope_size;
4962 }
4963
4964 Ok(())
4965 }
4966 }
4967
4968 impl ProbeResponseOffloadExtension {
4969 #[inline(always)]
4970 fn max_ordinal_present(&self) -> u64 {
4971 if let Some(_) = self.supported {
4972 return 1;
4973 }
4974 0
4975 }
4976 }
4977
4978 impl fidl::encoding::ValueTypeMarker for ProbeResponseOffloadExtension {
4979 type Borrowed<'a> = &'a Self;
4980 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4981 value
4982 }
4983 }
4984
4985 unsafe impl fidl::encoding::TypeMarker for ProbeResponseOffloadExtension {
4986 type Owned = Self;
4987
4988 #[inline(always)]
4989 fn inline_align(_context: fidl::encoding::Context) -> usize {
4990 8
4991 }
4992
4993 #[inline(always)]
4994 fn inline_size(_context: fidl::encoding::Context) -> usize {
4995 16
4996 }
4997 }
4998
4999 unsafe impl<D: fidl::encoding::ResourceDialect>
5000 fidl::encoding::Encode<ProbeResponseOffloadExtension, D>
5001 for &ProbeResponseOffloadExtension
5002 {
5003 unsafe fn encode(
5004 self,
5005 encoder: &mut fidl::encoding::Encoder<'_, D>,
5006 offset: usize,
5007 mut depth: fidl::encoding::Depth,
5008 ) -> fidl::Result<()> {
5009 encoder.debug_check_bounds::<ProbeResponseOffloadExtension>(offset);
5010 let max_ordinal: u64 = self.max_ordinal_present();
5012 encoder.write_num(max_ordinal, offset);
5013 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5014 if max_ordinal == 0 {
5016 return Ok(());
5017 }
5018 depth.increment()?;
5019 let envelope_size = 8;
5020 let bytes_len = max_ordinal as usize * envelope_size;
5021 #[allow(unused_variables)]
5022 let offset = encoder.out_of_line_offset(bytes_len);
5023 let mut _prev_end_offset: usize = 0;
5024 if 1 > max_ordinal {
5025 return Ok(());
5026 }
5027
5028 let cur_offset: usize = (1 - 1) * envelope_size;
5031
5032 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5034
5035 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5040 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5041 encoder,
5042 offset + cur_offset,
5043 depth,
5044 )?;
5045
5046 _prev_end_offset = cur_offset + envelope_size;
5047
5048 Ok(())
5049 }
5050 }
5051
5052 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5053 for ProbeResponseOffloadExtension
5054 {
5055 #[inline(always)]
5056 fn new_empty() -> Self {
5057 Self::default()
5058 }
5059
5060 unsafe fn decode(
5061 &mut self,
5062 decoder: &mut fidl::encoding::Decoder<'_, D>,
5063 offset: usize,
5064 mut depth: fidl::encoding::Depth,
5065 ) -> fidl::Result<()> {
5066 decoder.debug_check_bounds::<Self>(offset);
5067 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5068 None => return Err(fidl::Error::NotNullable),
5069 Some(len) => len,
5070 };
5071 if len == 0 {
5073 return Ok(());
5074 };
5075 depth.increment()?;
5076 let envelope_size = 8;
5077 let bytes_len = len * envelope_size;
5078 let offset = decoder.out_of_line_offset(bytes_len)?;
5079 let mut _next_ordinal_to_read = 0;
5081 let mut next_offset = offset;
5082 let end_offset = offset + bytes_len;
5083 _next_ordinal_to_read += 1;
5084 if next_offset >= end_offset {
5085 return Ok(());
5086 }
5087
5088 while _next_ordinal_to_read < 1 {
5090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5091 _next_ordinal_to_read += 1;
5092 next_offset += envelope_size;
5093 }
5094
5095 let next_out_of_line = decoder.next_out_of_line();
5096 let handles_before = decoder.remaining_handles();
5097 if let Some((inlined, num_bytes, num_handles)) =
5098 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5099 {
5100 let member_inline_size =
5101 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5102 if inlined != (member_inline_size <= 4) {
5103 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5104 }
5105 let inner_offset;
5106 let mut inner_depth = depth.clone();
5107 if inlined {
5108 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5109 inner_offset = next_offset;
5110 } else {
5111 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5112 inner_depth.increment()?;
5113 }
5114 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5115 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5116 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5117 {
5118 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5119 }
5120 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5121 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5122 }
5123 }
5124
5125 next_offset += envelope_size;
5126
5127 while next_offset < end_offset {
5129 _next_ordinal_to_read += 1;
5130 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5131 next_offset += envelope_size;
5132 }
5133
5134 Ok(())
5135 }
5136 }
5137
5138 impl RateSelectionOffloadExtension {
5139 #[inline(always)]
5140 fn max_ordinal_present(&self) -> u64 {
5141 if let Some(_) = self.supported {
5142 return 1;
5143 }
5144 0
5145 }
5146 }
5147
5148 impl fidl::encoding::ValueTypeMarker for RateSelectionOffloadExtension {
5149 type Borrowed<'a> = &'a Self;
5150 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5151 value
5152 }
5153 }
5154
5155 unsafe impl fidl::encoding::TypeMarker for RateSelectionOffloadExtension {
5156 type Owned = Self;
5157
5158 #[inline(always)]
5159 fn inline_align(_context: fidl::encoding::Context) -> usize {
5160 8
5161 }
5162
5163 #[inline(always)]
5164 fn inline_size(_context: fidl::encoding::Context) -> usize {
5165 16
5166 }
5167 }
5168
5169 unsafe impl<D: fidl::encoding::ResourceDialect>
5170 fidl::encoding::Encode<RateSelectionOffloadExtension, D>
5171 for &RateSelectionOffloadExtension
5172 {
5173 unsafe fn encode(
5174 self,
5175 encoder: &mut fidl::encoding::Encoder<'_, D>,
5176 offset: usize,
5177 mut depth: fidl::encoding::Depth,
5178 ) -> fidl::Result<()> {
5179 encoder.debug_check_bounds::<RateSelectionOffloadExtension>(offset);
5180 let max_ordinal: u64 = self.max_ordinal_present();
5182 encoder.write_num(max_ordinal, offset);
5183 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5184 if max_ordinal == 0 {
5186 return Ok(());
5187 }
5188 depth.increment()?;
5189 let envelope_size = 8;
5190 let bytes_len = max_ordinal as usize * envelope_size;
5191 #[allow(unused_variables)]
5192 let offset = encoder.out_of_line_offset(bytes_len);
5193 let mut _prev_end_offset: usize = 0;
5194 if 1 > max_ordinal {
5195 return Ok(());
5196 }
5197
5198 let cur_offset: usize = (1 - 1) * envelope_size;
5201
5202 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5204
5205 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5210 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5211 encoder,
5212 offset + cur_offset,
5213 depth,
5214 )?;
5215
5216 _prev_end_offset = cur_offset + envelope_size;
5217
5218 Ok(())
5219 }
5220 }
5221
5222 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5223 for RateSelectionOffloadExtension
5224 {
5225 #[inline(always)]
5226 fn new_empty() -> Self {
5227 Self::default()
5228 }
5229
5230 unsafe fn decode(
5231 &mut self,
5232 decoder: &mut fidl::encoding::Decoder<'_, D>,
5233 offset: usize,
5234 mut depth: fidl::encoding::Depth,
5235 ) -> fidl::Result<()> {
5236 decoder.debug_check_bounds::<Self>(offset);
5237 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5238 None => return Err(fidl::Error::NotNullable),
5239 Some(len) => len,
5240 };
5241 if len == 0 {
5243 return Ok(());
5244 };
5245 depth.increment()?;
5246 let envelope_size = 8;
5247 let bytes_len = len * envelope_size;
5248 let offset = decoder.out_of_line_offset(bytes_len)?;
5249 let mut _next_ordinal_to_read = 0;
5251 let mut next_offset = offset;
5252 let end_offset = offset + bytes_len;
5253 _next_ordinal_to_read += 1;
5254 if next_offset >= end_offset {
5255 return Ok(());
5256 }
5257
5258 while _next_ordinal_to_read < 1 {
5260 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5261 _next_ordinal_to_read += 1;
5262 next_offset += envelope_size;
5263 }
5264
5265 let next_out_of_line = decoder.next_out_of_line();
5266 let handles_before = decoder.remaining_handles();
5267 if let Some((inlined, num_bytes, num_handles)) =
5268 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5269 {
5270 let member_inline_size =
5271 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5272 if inlined != (member_inline_size <= 4) {
5273 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5274 }
5275 let inner_offset;
5276 let mut inner_depth = depth.clone();
5277 if inlined {
5278 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5279 inner_offset = next_offset;
5280 } else {
5281 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5282 inner_depth.increment()?;
5283 }
5284 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5285 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5286 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5287 {
5288 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5289 }
5290 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5291 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5292 }
5293 }
5294
5295 next_offset += envelope_size;
5296
5297 while next_offset < end_offset {
5299 _next_ordinal_to_read += 1;
5300 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5301 next_offset += envelope_size;
5302 }
5303
5304 Ok(())
5305 }
5306 }
5307
5308 impl RssiMonitorSupport {
5309 #[inline(always)]
5310 fn max_ordinal_present(&self) -> u64 {
5311 if let Some(_) = self.supported {
5312 return 1;
5313 }
5314 0
5315 }
5316 }
5317
5318 impl fidl::encoding::ValueTypeMarker for RssiMonitorSupport {
5319 type Borrowed<'a> = &'a Self;
5320 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5321 value
5322 }
5323 }
5324
5325 unsafe impl fidl::encoding::TypeMarker for RssiMonitorSupport {
5326 type Owned = Self;
5327
5328 #[inline(always)]
5329 fn inline_align(_context: fidl::encoding::Context) -> usize {
5330 8
5331 }
5332
5333 #[inline(always)]
5334 fn inline_size(_context: fidl::encoding::Context) -> usize {
5335 16
5336 }
5337 }
5338
5339 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<RssiMonitorSupport, D>
5340 for &RssiMonitorSupport
5341 {
5342 unsafe fn encode(
5343 self,
5344 encoder: &mut fidl::encoding::Encoder<'_, D>,
5345 offset: usize,
5346 mut depth: fidl::encoding::Depth,
5347 ) -> fidl::Result<()> {
5348 encoder.debug_check_bounds::<RssiMonitorSupport>(offset);
5349 let max_ordinal: u64 = self.max_ordinal_present();
5351 encoder.write_num(max_ordinal, offset);
5352 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5353 if max_ordinal == 0 {
5355 return Ok(());
5356 }
5357 depth.increment()?;
5358 let envelope_size = 8;
5359 let bytes_len = max_ordinal as usize * envelope_size;
5360 #[allow(unused_variables)]
5361 let offset = encoder.out_of_line_offset(bytes_len);
5362 let mut _prev_end_offset: usize = 0;
5363 if 1 > max_ordinal {
5364 return Ok(());
5365 }
5366
5367 let cur_offset: usize = (1 - 1) * envelope_size;
5370
5371 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5373
5374 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5379 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5380 encoder,
5381 offset + cur_offset,
5382 depth,
5383 )?;
5384
5385 _prev_end_offset = cur_offset + envelope_size;
5386
5387 Ok(())
5388 }
5389 }
5390
5391 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for RssiMonitorSupport {
5392 #[inline(always)]
5393 fn new_empty() -> Self {
5394 Self::default()
5395 }
5396
5397 unsafe fn decode(
5398 &mut self,
5399 decoder: &mut fidl::encoding::Decoder<'_, D>,
5400 offset: usize,
5401 mut depth: fidl::encoding::Depth,
5402 ) -> fidl::Result<()> {
5403 decoder.debug_check_bounds::<Self>(offset);
5404 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5405 None => return Err(fidl::Error::NotNullable),
5406 Some(len) => len,
5407 };
5408 if len == 0 {
5410 return Ok(());
5411 };
5412 depth.increment()?;
5413 let envelope_size = 8;
5414 let bytes_len = len * envelope_size;
5415 let offset = decoder.out_of_line_offset(bytes_len)?;
5416 let mut _next_ordinal_to_read = 0;
5418 let mut next_offset = offset;
5419 let end_offset = offset + bytes_len;
5420 _next_ordinal_to_read += 1;
5421 if next_offset >= end_offset {
5422 return Ok(());
5423 }
5424
5425 while _next_ordinal_to_read < 1 {
5427 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5428 _next_ordinal_to_read += 1;
5429 next_offset += envelope_size;
5430 }
5431
5432 let next_out_of_line = decoder.next_out_of_line();
5433 let handles_before = decoder.remaining_handles();
5434 if let Some((inlined, num_bytes, num_handles)) =
5435 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5436 {
5437 let member_inline_size =
5438 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5439 if inlined != (member_inline_size <= 4) {
5440 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5441 }
5442 let inner_offset;
5443 let mut inner_depth = depth.clone();
5444 if inlined {
5445 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5446 inner_offset = next_offset;
5447 } else {
5448 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5449 inner_depth.increment()?;
5450 }
5451 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5452 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5453 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5454 {
5455 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5456 }
5457 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5458 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5459 }
5460 }
5461
5462 next_offset += envelope_size;
5463
5464 while next_offset < end_offset {
5466 _next_ordinal_to_read += 1;
5467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5468 next_offset += envelope_size;
5469 }
5470
5471 Ok(())
5472 }
5473 }
5474
5475 impl SaeFeature {
5476 #[inline(always)]
5477 fn max_ordinal_present(&self) -> u64 {
5478 if let Some(_) = self.pmksa_caching_supported {
5479 return 4;
5480 }
5481 if let Some(_) = self.hash_to_element_supported {
5482 return 3;
5483 }
5484 if let Some(_) = self.sme_handler_supported {
5485 return 2;
5486 }
5487 if let Some(_) = self.driver_handler_supported {
5488 return 1;
5489 }
5490 0
5491 }
5492 }
5493
5494 impl fidl::encoding::ValueTypeMarker for SaeFeature {
5495 type Borrowed<'a> = &'a Self;
5496 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5497 value
5498 }
5499 }
5500
5501 unsafe impl fidl::encoding::TypeMarker for SaeFeature {
5502 type Owned = Self;
5503
5504 #[inline(always)]
5505 fn inline_align(_context: fidl::encoding::Context) -> usize {
5506 8
5507 }
5508
5509 #[inline(always)]
5510 fn inline_size(_context: fidl::encoding::Context) -> usize {
5511 16
5512 }
5513 }
5514
5515 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFeature, D>
5516 for &SaeFeature
5517 {
5518 unsafe fn encode(
5519 self,
5520 encoder: &mut fidl::encoding::Encoder<'_, D>,
5521 offset: usize,
5522 mut depth: fidl::encoding::Depth,
5523 ) -> fidl::Result<()> {
5524 encoder.debug_check_bounds::<SaeFeature>(offset);
5525 let max_ordinal: u64 = self.max_ordinal_present();
5527 encoder.write_num(max_ordinal, offset);
5528 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5529 if max_ordinal == 0 {
5531 return Ok(());
5532 }
5533 depth.increment()?;
5534 let envelope_size = 8;
5535 let bytes_len = max_ordinal as usize * envelope_size;
5536 #[allow(unused_variables)]
5537 let offset = encoder.out_of_line_offset(bytes_len);
5538 let mut _prev_end_offset: usize = 0;
5539 if 1 > max_ordinal {
5540 return Ok(());
5541 }
5542
5543 let cur_offset: usize = (1 - 1) * envelope_size;
5546
5547 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5549
5550 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5555 self.driver_handler_supported
5556 .as_ref()
5557 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5558 encoder,
5559 offset + cur_offset,
5560 depth,
5561 )?;
5562
5563 _prev_end_offset = cur_offset + envelope_size;
5564 if 2 > max_ordinal {
5565 return Ok(());
5566 }
5567
5568 let cur_offset: usize = (2 - 1) * envelope_size;
5571
5572 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5574
5575 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5580 self.sme_handler_supported
5581 .as_ref()
5582 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5583 encoder,
5584 offset + cur_offset,
5585 depth,
5586 )?;
5587
5588 _prev_end_offset = cur_offset + envelope_size;
5589 if 3 > max_ordinal {
5590 return Ok(());
5591 }
5592
5593 let cur_offset: usize = (3 - 1) * envelope_size;
5596
5597 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5599
5600 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5605 self.hash_to_element_supported
5606 .as_ref()
5607 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5608 encoder,
5609 offset + cur_offset,
5610 depth,
5611 )?;
5612
5613 _prev_end_offset = cur_offset + envelope_size;
5614 if 4 > max_ordinal {
5615 return Ok(());
5616 }
5617
5618 let cur_offset: usize = (4 - 1) * envelope_size;
5621
5622 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5624
5625 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5630 self.pmksa_caching_supported
5631 .as_ref()
5632 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5633 encoder,
5634 offset + cur_offset,
5635 depth,
5636 )?;
5637
5638 _prev_end_offset = cur_offset + envelope_size;
5639
5640 Ok(())
5641 }
5642 }
5643
5644 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFeature {
5645 #[inline(always)]
5646 fn new_empty() -> Self {
5647 Self::default()
5648 }
5649
5650 unsafe fn decode(
5651 &mut self,
5652 decoder: &mut fidl::encoding::Decoder<'_, D>,
5653 offset: usize,
5654 mut depth: fidl::encoding::Depth,
5655 ) -> fidl::Result<()> {
5656 decoder.debug_check_bounds::<Self>(offset);
5657 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5658 None => return Err(fidl::Error::NotNullable),
5659 Some(len) => len,
5660 };
5661 if len == 0 {
5663 return Ok(());
5664 };
5665 depth.increment()?;
5666 let envelope_size = 8;
5667 let bytes_len = len * envelope_size;
5668 let offset = decoder.out_of_line_offset(bytes_len)?;
5669 let mut _next_ordinal_to_read = 0;
5671 let mut next_offset = offset;
5672 let end_offset = offset + bytes_len;
5673 _next_ordinal_to_read += 1;
5674 if next_offset >= end_offset {
5675 return Ok(());
5676 }
5677
5678 while _next_ordinal_to_read < 1 {
5680 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5681 _next_ordinal_to_read += 1;
5682 next_offset += envelope_size;
5683 }
5684
5685 let next_out_of_line = decoder.next_out_of_line();
5686 let handles_before = decoder.remaining_handles();
5687 if let Some((inlined, num_bytes, num_handles)) =
5688 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5689 {
5690 let member_inline_size =
5691 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5692 if inlined != (member_inline_size <= 4) {
5693 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5694 }
5695 let inner_offset;
5696 let mut inner_depth = depth.clone();
5697 if inlined {
5698 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5699 inner_offset = next_offset;
5700 } else {
5701 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5702 inner_depth.increment()?;
5703 }
5704 let val_ref =
5705 self.driver_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5706 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5707 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5708 {
5709 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5710 }
5711 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5712 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5713 }
5714 }
5715
5716 next_offset += envelope_size;
5717 _next_ordinal_to_read += 1;
5718 if next_offset >= end_offset {
5719 return Ok(());
5720 }
5721
5722 while _next_ordinal_to_read < 2 {
5724 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5725 _next_ordinal_to_read += 1;
5726 next_offset += envelope_size;
5727 }
5728
5729 let next_out_of_line = decoder.next_out_of_line();
5730 let handles_before = decoder.remaining_handles();
5731 if let Some((inlined, num_bytes, num_handles)) =
5732 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5733 {
5734 let member_inline_size =
5735 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5736 if inlined != (member_inline_size <= 4) {
5737 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5738 }
5739 let inner_offset;
5740 let mut inner_depth = depth.clone();
5741 if inlined {
5742 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5743 inner_offset = next_offset;
5744 } else {
5745 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5746 inner_depth.increment()?;
5747 }
5748 let val_ref =
5749 self.sme_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5750 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5751 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5752 {
5753 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5754 }
5755 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5756 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5757 }
5758 }
5759
5760 next_offset += envelope_size;
5761 _next_ordinal_to_read += 1;
5762 if next_offset >= end_offset {
5763 return Ok(());
5764 }
5765
5766 while _next_ordinal_to_read < 3 {
5768 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5769 _next_ordinal_to_read += 1;
5770 next_offset += envelope_size;
5771 }
5772
5773 let next_out_of_line = decoder.next_out_of_line();
5774 let handles_before = decoder.remaining_handles();
5775 if let Some((inlined, num_bytes, num_handles)) =
5776 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5777 {
5778 let member_inline_size =
5779 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5780 if inlined != (member_inline_size <= 4) {
5781 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5782 }
5783 let inner_offset;
5784 let mut inner_depth = depth.clone();
5785 if inlined {
5786 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5787 inner_offset = next_offset;
5788 } else {
5789 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5790 inner_depth.increment()?;
5791 }
5792 let val_ref =
5793 self.hash_to_element_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5794 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5795 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5796 {
5797 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5798 }
5799 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5800 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5801 }
5802 }
5803
5804 next_offset += envelope_size;
5805 _next_ordinal_to_read += 1;
5806 if next_offset >= end_offset {
5807 return Ok(());
5808 }
5809
5810 while _next_ordinal_to_read < 4 {
5812 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5813 _next_ordinal_to_read += 1;
5814 next_offset += envelope_size;
5815 }
5816
5817 let next_out_of_line = decoder.next_out_of_line();
5818 let handles_before = decoder.remaining_handles();
5819 if let Some((inlined, num_bytes, num_handles)) =
5820 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5821 {
5822 let member_inline_size =
5823 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5824 if inlined != (member_inline_size <= 4) {
5825 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5826 }
5827 let inner_offset;
5828 let mut inner_depth = depth.clone();
5829 if inlined {
5830 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5831 inner_offset = next_offset;
5832 } else {
5833 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5834 inner_depth.increment()?;
5835 }
5836 let val_ref =
5837 self.pmksa_caching_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5838 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5839 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5840 {
5841 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5842 }
5843 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5844 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5845 }
5846 }
5847
5848 next_offset += envelope_size;
5849
5850 while next_offset < end_offset {
5852 _next_ordinal_to_read += 1;
5853 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5854 next_offset += envelope_size;
5855 }
5856
5857 Ok(())
5858 }
5859 }
5860
5861 impl ScanOffloadExtension {
5862 #[inline(always)]
5863 fn max_ordinal_present(&self) -> u64 {
5864 if let Some(_) = self.scan_cancel_supported {
5865 return 2;
5866 }
5867 if let Some(_) = self.supported {
5868 return 1;
5869 }
5870 0
5871 }
5872 }
5873
5874 impl fidl::encoding::ValueTypeMarker for ScanOffloadExtension {
5875 type Borrowed<'a> = &'a Self;
5876 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5877 value
5878 }
5879 }
5880
5881 unsafe impl fidl::encoding::TypeMarker for ScanOffloadExtension {
5882 type Owned = Self;
5883
5884 #[inline(always)]
5885 fn inline_align(_context: fidl::encoding::Context) -> usize {
5886 8
5887 }
5888
5889 #[inline(always)]
5890 fn inline_size(_context: fidl::encoding::Context) -> usize {
5891 16
5892 }
5893 }
5894
5895 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOffloadExtension, D>
5896 for &ScanOffloadExtension
5897 {
5898 unsafe fn encode(
5899 self,
5900 encoder: &mut fidl::encoding::Encoder<'_, D>,
5901 offset: usize,
5902 mut depth: fidl::encoding::Depth,
5903 ) -> fidl::Result<()> {
5904 encoder.debug_check_bounds::<ScanOffloadExtension>(offset);
5905 let max_ordinal: u64 = self.max_ordinal_present();
5907 encoder.write_num(max_ordinal, offset);
5908 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5909 if max_ordinal == 0 {
5911 return Ok(());
5912 }
5913 depth.increment()?;
5914 let envelope_size = 8;
5915 let bytes_len = max_ordinal as usize * envelope_size;
5916 #[allow(unused_variables)]
5917 let offset = encoder.out_of_line_offset(bytes_len);
5918 let mut _prev_end_offset: usize = 0;
5919 if 1 > max_ordinal {
5920 return Ok(());
5921 }
5922
5923 let cur_offset: usize = (1 - 1) * envelope_size;
5926
5927 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5929
5930 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5935 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5936 encoder,
5937 offset + cur_offset,
5938 depth,
5939 )?;
5940
5941 _prev_end_offset = cur_offset + envelope_size;
5942 if 2 > max_ordinal {
5943 return Ok(());
5944 }
5945
5946 let cur_offset: usize = (2 - 1) * envelope_size;
5949
5950 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5952
5953 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5958 self.scan_cancel_supported
5959 .as_ref()
5960 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5961 encoder,
5962 offset + cur_offset,
5963 depth,
5964 )?;
5965
5966 _prev_end_offset = cur_offset + envelope_size;
5967
5968 Ok(())
5969 }
5970 }
5971
5972 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOffloadExtension {
5973 #[inline(always)]
5974 fn new_empty() -> Self {
5975 Self::default()
5976 }
5977
5978 unsafe fn decode(
5979 &mut self,
5980 decoder: &mut fidl::encoding::Decoder<'_, D>,
5981 offset: usize,
5982 mut depth: fidl::encoding::Depth,
5983 ) -> fidl::Result<()> {
5984 decoder.debug_check_bounds::<Self>(offset);
5985 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5986 None => return Err(fidl::Error::NotNullable),
5987 Some(len) => len,
5988 };
5989 if len == 0 {
5991 return Ok(());
5992 };
5993 depth.increment()?;
5994 let envelope_size = 8;
5995 let bytes_len = len * envelope_size;
5996 let offset = decoder.out_of_line_offset(bytes_len)?;
5997 let mut _next_ordinal_to_read = 0;
5999 let mut next_offset = offset;
6000 let end_offset = offset + bytes_len;
6001 _next_ordinal_to_read += 1;
6002 if next_offset >= end_offset {
6003 return Ok(());
6004 }
6005
6006 while _next_ordinal_to_read < 1 {
6008 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6009 _next_ordinal_to_read += 1;
6010 next_offset += envelope_size;
6011 }
6012
6013 let next_out_of_line = decoder.next_out_of_line();
6014 let handles_before = decoder.remaining_handles();
6015 if let Some((inlined, num_bytes, num_handles)) =
6016 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6017 {
6018 let member_inline_size =
6019 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6020 if inlined != (member_inline_size <= 4) {
6021 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6022 }
6023 let inner_offset;
6024 let mut inner_depth = depth.clone();
6025 if inlined {
6026 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6027 inner_offset = next_offset;
6028 } else {
6029 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6030 inner_depth.increment()?;
6031 }
6032 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
6033 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6034 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6035 {
6036 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6037 }
6038 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6039 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6040 }
6041 }
6042
6043 next_offset += envelope_size;
6044 _next_ordinal_to_read += 1;
6045 if next_offset >= end_offset {
6046 return Ok(());
6047 }
6048
6049 while _next_ordinal_to_read < 2 {
6051 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6052 _next_ordinal_to_read += 1;
6053 next_offset += envelope_size;
6054 }
6055
6056 let next_out_of_line = decoder.next_out_of_line();
6057 let handles_before = decoder.remaining_handles();
6058 if let Some((inlined, num_bytes, num_handles)) =
6059 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6060 {
6061 let member_inline_size =
6062 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6063 if inlined != (member_inline_size <= 4) {
6064 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6065 }
6066 let inner_offset;
6067 let mut inner_depth = depth.clone();
6068 if inlined {
6069 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6070 inner_offset = next_offset;
6071 } else {
6072 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6073 inner_depth.increment()?;
6074 }
6075 let val_ref =
6076 self.scan_cancel_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
6077 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
6078 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6079 {
6080 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6081 }
6082 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6083 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6084 }
6085 }
6086
6087 next_offset += envelope_size;
6088
6089 while next_offset < end_offset {
6091 _next_ordinal_to_read += 1;
6092 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6093 next_offset += envelope_size;
6094 }
6095
6096 Ok(())
6097 }
6098 }
6099
6100 impl ScheduledScanMatchSet {
6101 #[inline(always)]
6102 fn max_ordinal_present(&self) -> u64 {
6103 if let Some(_) = self.band_rssi_adjustments {
6104 return 5;
6105 }
6106 if let Some(_) = self.relative_rssi_threshold {
6107 return 4;
6108 }
6109 if let Some(_) = self.min_rssi_threshold {
6110 return 3;
6111 }
6112 if let Some(_) = self.bssid {
6113 return 2;
6114 }
6115 if let Some(_) = self.ssid {
6116 return 1;
6117 }
6118 0
6119 }
6120 }
6121
6122 impl fidl::encoding::ValueTypeMarker for ScheduledScanMatchSet {
6123 type Borrowed<'a> = &'a Self;
6124 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6125 value
6126 }
6127 }
6128
6129 unsafe impl fidl::encoding::TypeMarker for ScheduledScanMatchSet {
6130 type Owned = Self;
6131
6132 #[inline(always)]
6133 fn inline_align(_context: fidl::encoding::Context) -> usize {
6134 8
6135 }
6136
6137 #[inline(always)]
6138 fn inline_size(_context: fidl::encoding::Context) -> usize {
6139 16
6140 }
6141 }
6142
6143 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScheduledScanMatchSet, D>
6144 for &ScheduledScanMatchSet
6145 {
6146 unsafe fn encode(
6147 self,
6148 encoder: &mut fidl::encoding::Encoder<'_, D>,
6149 offset: usize,
6150 mut depth: fidl::encoding::Depth,
6151 ) -> fidl::Result<()> {
6152 encoder.debug_check_bounds::<ScheduledScanMatchSet>(offset);
6153 let max_ordinal: u64 = self.max_ordinal_present();
6155 encoder.write_num(max_ordinal, offset);
6156 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6157 if max_ordinal == 0 {
6159 return Ok(());
6160 }
6161 depth.increment()?;
6162 let envelope_size = 8;
6163 let bytes_len = max_ordinal as usize * envelope_size;
6164 #[allow(unused_variables)]
6165 let offset = encoder.out_of_line_offset(bytes_len);
6166 let mut _prev_end_offset: usize = 0;
6167 if 1 > max_ordinal {
6168 return Ok(());
6169 }
6170
6171 let cur_offset: usize = (1 - 1) * envelope_size;
6174
6175 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6177
6178 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6183 self.ssid.as_ref().map(
6184 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6185 ),
6186 encoder,
6187 offset + cur_offset,
6188 depth,
6189 )?;
6190
6191 _prev_end_offset = cur_offset + envelope_size;
6192 if 2 > max_ordinal {
6193 return Ok(());
6194 }
6195
6196 let cur_offset: usize = (2 - 1) * envelope_size;
6199
6200 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6202
6203 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6208 self.bssid
6209 .as_ref()
6210 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6211 encoder,
6212 offset + cur_offset,
6213 depth,
6214 )?;
6215
6216 _prev_end_offset = cur_offset + envelope_size;
6217 if 3 > max_ordinal {
6218 return Ok(());
6219 }
6220
6221 let cur_offset: usize = (3 - 1) * envelope_size;
6224
6225 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6227
6228 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6233 self.min_rssi_threshold
6234 .as_ref()
6235 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6236 encoder,
6237 offset + cur_offset,
6238 depth,
6239 )?;
6240
6241 _prev_end_offset = cur_offset + envelope_size;
6242 if 4 > max_ordinal {
6243 return Ok(());
6244 }
6245
6246 let cur_offset: usize = (4 - 1) * envelope_size;
6249
6250 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6252
6253 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6258 self.relative_rssi_threshold
6259 .as_ref()
6260 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6261 encoder,
6262 offset + cur_offset,
6263 depth,
6264 )?;
6265
6266 _prev_end_offset = cur_offset + envelope_size;
6267 if 5 > max_ordinal {
6268 return Ok(());
6269 }
6270
6271 let cur_offset: usize = (5 - 1) * envelope_size;
6274
6275 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6277
6278 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<BandRssiAdjustment>, D>(
6283 self.band_rssi_adjustments.as_ref().map(<fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::ValueTypeMarker>::borrow),
6284 encoder, offset + cur_offset, depth
6285 )?;
6286
6287 _prev_end_offset = cur_offset + envelope_size;
6288
6289 Ok(())
6290 }
6291 }
6292
6293 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScheduledScanMatchSet {
6294 #[inline(always)]
6295 fn new_empty() -> Self {
6296 Self::default()
6297 }
6298
6299 unsafe fn decode(
6300 &mut self,
6301 decoder: &mut fidl::encoding::Decoder<'_, D>,
6302 offset: usize,
6303 mut depth: fidl::encoding::Depth,
6304 ) -> fidl::Result<()> {
6305 decoder.debug_check_bounds::<Self>(offset);
6306 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6307 None => return Err(fidl::Error::NotNullable),
6308 Some(len) => len,
6309 };
6310 if len == 0 {
6312 return Ok(());
6313 };
6314 depth.increment()?;
6315 let envelope_size = 8;
6316 let bytes_len = len * envelope_size;
6317 let offset = decoder.out_of_line_offset(bytes_len)?;
6318 let mut _next_ordinal_to_read = 0;
6320 let mut next_offset = offset;
6321 let end_offset = offset + bytes_len;
6322 _next_ordinal_to_read += 1;
6323 if next_offset >= end_offset {
6324 return Ok(());
6325 }
6326
6327 while _next_ordinal_to_read < 1 {
6329 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6330 _next_ordinal_to_read += 1;
6331 next_offset += envelope_size;
6332 }
6333
6334 let next_out_of_line = decoder.next_out_of_line();
6335 let handles_before = decoder.remaining_handles();
6336 if let Some((inlined, num_bytes, num_handles)) =
6337 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6338 {
6339 let member_inline_size =
6340 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6341 decoder.context,
6342 );
6343 if inlined != (member_inline_size <= 4) {
6344 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6345 }
6346 let inner_offset;
6347 let mut inner_depth = depth.clone();
6348 if inlined {
6349 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6350 inner_offset = next_offset;
6351 } else {
6352 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6353 inner_depth.increment()?;
6354 }
6355 let val_ref = self
6356 .ssid
6357 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6358 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6359 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6360 {
6361 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6362 }
6363 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6364 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6365 }
6366 }
6367
6368 next_offset += envelope_size;
6369 _next_ordinal_to_read += 1;
6370 if next_offset >= end_offset {
6371 return Ok(());
6372 }
6373
6374 while _next_ordinal_to_read < 2 {
6376 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6377 _next_ordinal_to_read += 1;
6378 next_offset += envelope_size;
6379 }
6380
6381 let next_out_of_line = decoder.next_out_of_line();
6382 let handles_before = decoder.remaining_handles();
6383 if let Some((inlined, num_bytes, num_handles)) =
6384 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6385 {
6386 let member_inline_size =
6387 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6388 decoder.context,
6389 );
6390 if inlined != (member_inline_size <= 4) {
6391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6392 }
6393 let inner_offset;
6394 let mut inner_depth = depth.clone();
6395 if inlined {
6396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6397 inner_offset = next_offset;
6398 } else {
6399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6400 inner_depth.increment()?;
6401 }
6402 let val_ref = self
6403 .bssid
6404 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6405 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6407 {
6408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6409 }
6410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6412 }
6413 }
6414
6415 next_offset += envelope_size;
6416 _next_ordinal_to_read += 1;
6417 if next_offset >= end_offset {
6418 return Ok(());
6419 }
6420
6421 while _next_ordinal_to_read < 3 {
6423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6424 _next_ordinal_to_read += 1;
6425 next_offset += envelope_size;
6426 }
6427
6428 let next_out_of_line = decoder.next_out_of_line();
6429 let handles_before = decoder.remaining_handles();
6430 if let Some((inlined, num_bytes, num_handles)) =
6431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6432 {
6433 let member_inline_size =
6434 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6435 if inlined != (member_inline_size <= 4) {
6436 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6437 }
6438 let inner_offset;
6439 let mut inner_depth = depth.clone();
6440 if inlined {
6441 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6442 inner_offset = next_offset;
6443 } else {
6444 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6445 inner_depth.increment()?;
6446 }
6447 let val_ref =
6448 self.min_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
6449 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6450 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6451 {
6452 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6453 }
6454 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6455 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6456 }
6457 }
6458
6459 next_offset += envelope_size;
6460 _next_ordinal_to_read += 1;
6461 if next_offset >= end_offset {
6462 return Ok(());
6463 }
6464
6465 while _next_ordinal_to_read < 4 {
6467 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6468 _next_ordinal_to_read += 1;
6469 next_offset += envelope_size;
6470 }
6471
6472 let next_out_of_line = decoder.next_out_of_line();
6473 let handles_before = decoder.remaining_handles();
6474 if let Some((inlined, num_bytes, num_handles)) =
6475 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6476 {
6477 let member_inline_size =
6478 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6479 if inlined != (member_inline_size <= 4) {
6480 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6481 }
6482 let inner_offset;
6483 let mut inner_depth = depth.clone();
6484 if inlined {
6485 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6486 inner_offset = next_offset;
6487 } else {
6488 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6489 inner_depth.increment()?;
6490 }
6491 let val_ref =
6492 self.relative_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
6493 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
6494 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6495 {
6496 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6497 }
6498 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6499 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6500 }
6501 }
6502
6503 next_offset += envelope_size;
6504 _next_ordinal_to_read += 1;
6505 if next_offset >= end_offset {
6506 return Ok(());
6507 }
6508
6509 while _next_ordinal_to_read < 5 {
6511 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6512 _next_ordinal_to_read += 1;
6513 next_offset += envelope_size;
6514 }
6515
6516 let next_out_of_line = decoder.next_out_of_line();
6517 let handles_before = decoder.remaining_handles();
6518 if let Some((inlined, num_bytes, num_handles)) =
6519 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6520 {
6521 let member_inline_size = <fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6522 if inlined != (member_inline_size <= 4) {
6523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6524 }
6525 let inner_offset;
6526 let mut inner_depth = depth.clone();
6527 if inlined {
6528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6529 inner_offset = next_offset;
6530 } else {
6531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6532 inner_depth.increment()?;
6533 }
6534 let val_ref = self.band_rssi_adjustments.get_or_insert_with(|| {
6535 fidl::new_empty!(fidl::encoding::UnboundedVector<BandRssiAdjustment>, D)
6536 });
6537 fidl::decode!(
6538 fidl::encoding::UnboundedVector<BandRssiAdjustment>,
6539 D,
6540 val_ref,
6541 decoder,
6542 inner_offset,
6543 inner_depth
6544 )?;
6545 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6546 {
6547 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6548 }
6549 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6550 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6551 }
6552 }
6553
6554 next_offset += envelope_size;
6555
6556 while next_offset < end_offset {
6558 _next_ordinal_to_read += 1;
6559 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6560 next_offset += envelope_size;
6561 }
6562
6563 Ok(())
6564 }
6565 }
6566
6567 impl ScheduledScanRequest {
6568 #[inline(always)]
6569 fn max_ordinal_present(&self) -> u64 {
6570 if let Some(_) = self.match_sets {
6571 return 7;
6572 }
6573 if let Some(_) = self.band_rssi_adjustments {
6574 return 6;
6575 }
6576 if let Some(_) = self.relative_rssi_threshold {
6577 return 5;
6578 }
6579 if let Some(_) = self.min_rssi_threshold {
6580 return 4;
6581 }
6582 if let Some(_) = self.frequencies {
6583 return 3;
6584 }
6585 if let Some(_) = self.ssids {
6586 return 2;
6587 }
6588 if let Some(_) = self.scan_plans {
6589 return 1;
6590 }
6591 0
6592 }
6593 }
6594
6595 impl fidl::encoding::ValueTypeMarker for ScheduledScanRequest {
6596 type Borrowed<'a> = &'a Self;
6597 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6598 value
6599 }
6600 }
6601
6602 unsafe impl fidl::encoding::TypeMarker for ScheduledScanRequest {
6603 type Owned = Self;
6604
6605 #[inline(always)]
6606 fn inline_align(_context: fidl::encoding::Context) -> usize {
6607 8
6608 }
6609
6610 #[inline(always)]
6611 fn inline_size(_context: fidl::encoding::Context) -> usize {
6612 16
6613 }
6614 }
6615
6616 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScheduledScanRequest, D>
6617 for &ScheduledScanRequest
6618 {
6619 unsafe fn encode(
6620 self,
6621 encoder: &mut fidl::encoding::Encoder<'_, D>,
6622 offset: usize,
6623 mut depth: fidl::encoding::Depth,
6624 ) -> fidl::Result<()> {
6625 encoder.debug_check_bounds::<ScheduledScanRequest>(offset);
6626 let max_ordinal: u64 = self.max_ordinal_present();
6628 encoder.write_num(max_ordinal, offset);
6629 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6630 if max_ordinal == 0 {
6632 return Ok(());
6633 }
6634 depth.increment()?;
6635 let envelope_size = 8;
6636 let bytes_len = max_ordinal as usize * envelope_size;
6637 #[allow(unused_variables)]
6638 let offset = encoder.out_of_line_offset(bytes_len);
6639 let mut _prev_end_offset: usize = 0;
6640 if 1 > max_ordinal {
6641 return Ok(());
6642 }
6643
6644 let cur_offset: usize = (1 - 1) * envelope_size;
6647
6648 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6650
6651 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScheduledScanPlan>, D>(
6656 self.scan_plans.as_ref().map(<fidl::encoding::UnboundedVector<ScheduledScanPlan> as fidl::encoding::ValueTypeMarker>::borrow),
6657 encoder, offset + cur_offset, depth
6658 )?;
6659
6660 _prev_end_offset = cur_offset + envelope_size;
6661 if 2 > max_ordinal {
6662 return Ok(());
6663 }
6664
6665 let cur_offset: usize = (2 - 1) * envelope_size;
6668
6669 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6671
6672 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>, D>(
6677 self.ssids.as_ref().map(<fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>> as fidl::encoding::ValueTypeMarker>::borrow),
6678 encoder, offset + cur_offset, depth
6679 )?;
6680
6681 _prev_end_offset = cur_offset + envelope_size;
6682 if 3 > max_ordinal {
6683 return Ok(());
6684 }
6685
6686 let cur_offset: usize = (3 - 1) * envelope_size;
6689
6690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6692
6693 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<u32>, D>(
6698 self.frequencies.as_ref().map(<fidl::encoding::UnboundedVector<u32> as fidl::encoding::ValueTypeMarker>::borrow),
6699 encoder, offset + cur_offset, depth
6700 )?;
6701
6702 _prev_end_offset = cur_offset + envelope_size;
6703 if 4 > max_ordinal {
6704 return Ok(());
6705 }
6706
6707 let cur_offset: usize = (4 - 1) * envelope_size;
6710
6711 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6713
6714 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6719 self.min_rssi_threshold
6720 .as_ref()
6721 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6722 encoder,
6723 offset + cur_offset,
6724 depth,
6725 )?;
6726
6727 _prev_end_offset = cur_offset + envelope_size;
6728 if 5 > max_ordinal {
6729 return Ok(());
6730 }
6731
6732 let cur_offset: usize = (5 - 1) * envelope_size;
6735
6736 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6738
6739 fidl::encoding::encode_in_envelope_optional::<i8, D>(
6744 self.relative_rssi_threshold
6745 .as_ref()
6746 .map(<i8 as fidl::encoding::ValueTypeMarker>::borrow),
6747 encoder,
6748 offset + cur_offset,
6749 depth,
6750 )?;
6751
6752 _prev_end_offset = cur_offset + envelope_size;
6753 if 6 > max_ordinal {
6754 return Ok(());
6755 }
6756
6757 let cur_offset: usize = (6 - 1) * envelope_size;
6760
6761 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6763
6764 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<BandRssiAdjustment>, D>(
6769 self.band_rssi_adjustments.as_ref().map(<fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::ValueTypeMarker>::borrow),
6770 encoder, offset + cur_offset, depth
6771 )?;
6772
6773 _prev_end_offset = cur_offset + envelope_size;
6774 if 7 > max_ordinal {
6775 return Ok(());
6776 }
6777
6778 let cur_offset: usize = (7 - 1) * envelope_size;
6781
6782 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6784
6785 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::UnboundedVector<ScheduledScanMatchSet>, D>(
6790 self.match_sets.as_ref().map(<fidl::encoding::UnboundedVector<ScheduledScanMatchSet> as fidl::encoding::ValueTypeMarker>::borrow),
6791 encoder, offset + cur_offset, depth
6792 )?;
6793
6794 _prev_end_offset = cur_offset + envelope_size;
6795
6796 Ok(())
6797 }
6798 }
6799
6800 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScheduledScanRequest {
6801 #[inline(always)]
6802 fn new_empty() -> Self {
6803 Self::default()
6804 }
6805
6806 unsafe fn decode(
6807 &mut self,
6808 decoder: &mut fidl::encoding::Decoder<'_, D>,
6809 offset: usize,
6810 mut depth: fidl::encoding::Depth,
6811 ) -> fidl::Result<()> {
6812 decoder.debug_check_bounds::<Self>(offset);
6813 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6814 None => return Err(fidl::Error::NotNullable),
6815 Some(len) => len,
6816 };
6817 if len == 0 {
6819 return Ok(());
6820 };
6821 depth.increment()?;
6822 let envelope_size = 8;
6823 let bytes_len = len * envelope_size;
6824 let offset = decoder.out_of_line_offset(bytes_len)?;
6825 let mut _next_ordinal_to_read = 0;
6827 let mut next_offset = offset;
6828 let end_offset = offset + bytes_len;
6829 _next_ordinal_to_read += 1;
6830 if next_offset >= end_offset {
6831 return Ok(());
6832 }
6833
6834 while _next_ordinal_to_read < 1 {
6836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6837 _next_ordinal_to_read += 1;
6838 next_offset += envelope_size;
6839 }
6840
6841 let next_out_of_line = decoder.next_out_of_line();
6842 let handles_before = decoder.remaining_handles();
6843 if let Some((inlined, num_bytes, num_handles)) =
6844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6845 {
6846 let member_inline_size = <fidl::encoding::UnboundedVector<ScheduledScanPlan> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6847 if inlined != (member_inline_size <= 4) {
6848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6849 }
6850 let inner_offset;
6851 let mut inner_depth = depth.clone();
6852 if inlined {
6853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6854 inner_offset = next_offset;
6855 } else {
6856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6857 inner_depth.increment()?;
6858 }
6859 let val_ref = self.scan_plans.get_or_insert_with(|| {
6860 fidl::new_empty!(fidl::encoding::UnboundedVector<ScheduledScanPlan>, D)
6861 });
6862 fidl::decode!(
6863 fidl::encoding::UnboundedVector<ScheduledScanPlan>,
6864 D,
6865 val_ref,
6866 decoder,
6867 inner_offset,
6868 inner_depth
6869 )?;
6870 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6871 {
6872 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6873 }
6874 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6875 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6876 }
6877 }
6878
6879 next_offset += envelope_size;
6880 _next_ordinal_to_read += 1;
6881 if next_offset >= end_offset {
6882 return Ok(());
6883 }
6884
6885 while _next_ordinal_to_read < 2 {
6887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6888 _next_ordinal_to_read += 1;
6889 next_offset += envelope_size;
6890 }
6891
6892 let next_out_of_line = decoder.next_out_of_line();
6893 let handles_before = decoder.remaining_handles();
6894 if let Some((inlined, num_bytes, num_handles)) =
6895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6896 {
6897 let member_inline_size = <fidl::encoding::UnboundedVector<
6898 fidl::encoding::Vector<u8, 32>,
6899 > as fidl::encoding::TypeMarker>::inline_size(
6900 decoder.context
6901 );
6902 if inlined != (member_inline_size <= 4) {
6903 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6904 }
6905 let inner_offset;
6906 let mut inner_depth = depth.clone();
6907 if inlined {
6908 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6909 inner_offset = next_offset;
6910 } else {
6911 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6912 inner_depth.increment()?;
6913 }
6914 let val_ref = self.ssids.get_or_insert_with(|| {
6915 fidl::new_empty!(
6916 fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
6917 D
6918 )
6919 });
6920 fidl::decode!(
6921 fidl::encoding::UnboundedVector<fidl::encoding::Vector<u8, 32>>,
6922 D,
6923 val_ref,
6924 decoder,
6925 inner_offset,
6926 inner_depth
6927 )?;
6928 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6929 {
6930 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6931 }
6932 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6933 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6934 }
6935 }
6936
6937 next_offset += envelope_size;
6938 _next_ordinal_to_read += 1;
6939 if next_offset >= end_offset {
6940 return Ok(());
6941 }
6942
6943 while _next_ordinal_to_read < 3 {
6945 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6946 _next_ordinal_to_read += 1;
6947 next_offset += envelope_size;
6948 }
6949
6950 let next_out_of_line = decoder.next_out_of_line();
6951 let handles_before = decoder.remaining_handles();
6952 if let Some((inlined, num_bytes, num_handles)) =
6953 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6954 {
6955 let member_inline_size = <fidl::encoding::UnboundedVector<u32> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6956 if inlined != (member_inline_size <= 4) {
6957 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6958 }
6959 let inner_offset;
6960 let mut inner_depth = depth.clone();
6961 if inlined {
6962 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6963 inner_offset = next_offset;
6964 } else {
6965 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6966 inner_depth.increment()?;
6967 }
6968 let val_ref = self.frequencies.get_or_insert_with(|| {
6969 fidl::new_empty!(fidl::encoding::UnboundedVector<u32>, D)
6970 });
6971 fidl::decode!(
6972 fidl::encoding::UnboundedVector<u32>,
6973 D,
6974 val_ref,
6975 decoder,
6976 inner_offset,
6977 inner_depth
6978 )?;
6979 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6980 {
6981 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6982 }
6983 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6984 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6985 }
6986 }
6987
6988 next_offset += envelope_size;
6989 _next_ordinal_to_read += 1;
6990 if next_offset >= end_offset {
6991 return Ok(());
6992 }
6993
6994 while _next_ordinal_to_read < 4 {
6996 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6997 _next_ordinal_to_read += 1;
6998 next_offset += envelope_size;
6999 }
7000
7001 let next_out_of_line = decoder.next_out_of_line();
7002 let handles_before = decoder.remaining_handles();
7003 if let Some((inlined, num_bytes, num_handles)) =
7004 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7005 {
7006 let member_inline_size =
7007 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7008 if inlined != (member_inline_size <= 4) {
7009 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7010 }
7011 let inner_offset;
7012 let mut inner_depth = depth.clone();
7013 if inlined {
7014 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7015 inner_offset = next_offset;
7016 } else {
7017 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7018 inner_depth.increment()?;
7019 }
7020 let val_ref =
7021 self.min_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
7022 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
7023 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7024 {
7025 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7026 }
7027 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7028 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7029 }
7030 }
7031
7032 next_offset += envelope_size;
7033 _next_ordinal_to_read += 1;
7034 if next_offset >= end_offset {
7035 return Ok(());
7036 }
7037
7038 while _next_ordinal_to_read < 5 {
7040 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7041 _next_ordinal_to_read += 1;
7042 next_offset += envelope_size;
7043 }
7044
7045 let next_out_of_line = decoder.next_out_of_line();
7046 let handles_before = decoder.remaining_handles();
7047 if let Some((inlined, num_bytes, num_handles)) =
7048 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7049 {
7050 let member_inline_size =
7051 <i8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7052 if inlined != (member_inline_size <= 4) {
7053 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7054 }
7055 let inner_offset;
7056 let mut inner_depth = depth.clone();
7057 if inlined {
7058 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7059 inner_offset = next_offset;
7060 } else {
7061 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7062 inner_depth.increment()?;
7063 }
7064 let val_ref =
7065 self.relative_rssi_threshold.get_or_insert_with(|| fidl::new_empty!(i8, D));
7066 fidl::decode!(i8, D, val_ref, decoder, inner_offset, inner_depth)?;
7067 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7068 {
7069 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7070 }
7071 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7072 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7073 }
7074 }
7075
7076 next_offset += envelope_size;
7077 _next_ordinal_to_read += 1;
7078 if next_offset >= end_offset {
7079 return Ok(());
7080 }
7081
7082 while _next_ordinal_to_read < 6 {
7084 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7085 _next_ordinal_to_read += 1;
7086 next_offset += envelope_size;
7087 }
7088
7089 let next_out_of_line = decoder.next_out_of_line();
7090 let handles_before = decoder.remaining_handles();
7091 if let Some((inlined, num_bytes, num_handles)) =
7092 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7093 {
7094 let member_inline_size = <fidl::encoding::UnboundedVector<BandRssiAdjustment> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7095 if inlined != (member_inline_size <= 4) {
7096 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7097 }
7098 let inner_offset;
7099 let mut inner_depth = depth.clone();
7100 if inlined {
7101 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7102 inner_offset = next_offset;
7103 } else {
7104 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7105 inner_depth.increment()?;
7106 }
7107 let val_ref = self.band_rssi_adjustments.get_or_insert_with(|| {
7108 fidl::new_empty!(fidl::encoding::UnboundedVector<BandRssiAdjustment>, D)
7109 });
7110 fidl::decode!(
7111 fidl::encoding::UnboundedVector<BandRssiAdjustment>,
7112 D,
7113 val_ref,
7114 decoder,
7115 inner_offset,
7116 inner_depth
7117 )?;
7118 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7119 {
7120 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7121 }
7122 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7123 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7124 }
7125 }
7126
7127 next_offset += envelope_size;
7128 _next_ordinal_to_read += 1;
7129 if next_offset >= end_offset {
7130 return Ok(());
7131 }
7132
7133 while _next_ordinal_to_read < 7 {
7135 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7136 _next_ordinal_to_read += 1;
7137 next_offset += envelope_size;
7138 }
7139
7140 let next_out_of_line = decoder.next_out_of_line();
7141 let handles_before = decoder.remaining_handles();
7142 if let Some((inlined, num_bytes, num_handles)) =
7143 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7144 {
7145 let member_inline_size = <fidl::encoding::UnboundedVector<ScheduledScanMatchSet> as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7146 if inlined != (member_inline_size <= 4) {
7147 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7148 }
7149 let inner_offset;
7150 let mut inner_depth = depth.clone();
7151 if inlined {
7152 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7153 inner_offset = next_offset;
7154 } else {
7155 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7156 inner_depth.increment()?;
7157 }
7158 let val_ref = self.match_sets.get_or_insert_with(|| {
7159 fidl::new_empty!(fidl::encoding::UnboundedVector<ScheduledScanMatchSet>, D)
7160 });
7161 fidl::decode!(
7162 fidl::encoding::UnboundedVector<ScheduledScanMatchSet>,
7163 D,
7164 val_ref,
7165 decoder,
7166 inner_offset,
7167 inner_depth
7168 )?;
7169 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7170 {
7171 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7172 }
7173 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7174 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7175 }
7176 }
7177
7178 next_offset += envelope_size;
7179
7180 while next_offset < end_offset {
7182 _next_ordinal_to_read += 1;
7183 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7184 next_offset += envelope_size;
7185 }
7186
7187 Ok(())
7188 }
7189 }
7190
7191 impl SecuritySupport {
7192 #[inline(always)]
7193 fn max_ordinal_present(&self) -> u64 {
7194 if let Some(_) = self.owe {
7195 return 3;
7196 }
7197 if let Some(_) = self.mfp {
7198 return 2;
7199 }
7200 if let Some(_) = self.sae {
7201 return 1;
7202 }
7203 0
7204 }
7205 }
7206
7207 impl fidl::encoding::ValueTypeMarker for SecuritySupport {
7208 type Borrowed<'a> = &'a Self;
7209 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7210 value
7211 }
7212 }
7213
7214 unsafe impl fidl::encoding::TypeMarker for SecuritySupport {
7215 type Owned = Self;
7216
7217 #[inline(always)]
7218 fn inline_align(_context: fidl::encoding::Context) -> usize {
7219 8
7220 }
7221
7222 #[inline(always)]
7223 fn inline_size(_context: fidl::encoding::Context) -> usize {
7224 16
7225 }
7226 }
7227
7228 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecuritySupport, D>
7229 for &SecuritySupport
7230 {
7231 unsafe fn encode(
7232 self,
7233 encoder: &mut fidl::encoding::Encoder<'_, D>,
7234 offset: usize,
7235 mut depth: fidl::encoding::Depth,
7236 ) -> fidl::Result<()> {
7237 encoder.debug_check_bounds::<SecuritySupport>(offset);
7238 let max_ordinal: u64 = self.max_ordinal_present();
7240 encoder.write_num(max_ordinal, offset);
7241 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7242 if max_ordinal == 0 {
7244 return Ok(());
7245 }
7246 depth.increment()?;
7247 let envelope_size = 8;
7248 let bytes_len = max_ordinal as usize * envelope_size;
7249 #[allow(unused_variables)]
7250 let offset = encoder.out_of_line_offset(bytes_len);
7251 let mut _prev_end_offset: usize = 0;
7252 if 1 > max_ordinal {
7253 return Ok(());
7254 }
7255
7256 let cur_offset: usize = (1 - 1) * envelope_size;
7259
7260 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7262
7263 fidl::encoding::encode_in_envelope_optional::<SaeFeature, D>(
7268 self.sae.as_ref().map(<SaeFeature as fidl::encoding::ValueTypeMarker>::borrow),
7269 encoder,
7270 offset + cur_offset,
7271 depth,
7272 )?;
7273
7274 _prev_end_offset = cur_offset + envelope_size;
7275 if 2 > max_ordinal {
7276 return Ok(());
7277 }
7278
7279 let cur_offset: usize = (2 - 1) * envelope_size;
7282
7283 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7285
7286 fidl::encoding::encode_in_envelope_optional::<MfpFeature, D>(
7291 self.mfp.as_ref().map(<MfpFeature as fidl::encoding::ValueTypeMarker>::borrow),
7292 encoder,
7293 offset + cur_offset,
7294 depth,
7295 )?;
7296
7297 _prev_end_offset = cur_offset + envelope_size;
7298 if 3 > max_ordinal {
7299 return Ok(());
7300 }
7301
7302 let cur_offset: usize = (3 - 1) * envelope_size;
7305
7306 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7308
7309 fidl::encoding::encode_in_envelope_optional::<OweFeature, D>(
7314 self.owe.as_ref().map(<OweFeature as fidl::encoding::ValueTypeMarker>::borrow),
7315 encoder,
7316 offset + cur_offset,
7317 depth,
7318 )?;
7319
7320 _prev_end_offset = cur_offset + envelope_size;
7321
7322 Ok(())
7323 }
7324 }
7325
7326 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecuritySupport {
7327 #[inline(always)]
7328 fn new_empty() -> Self {
7329 Self::default()
7330 }
7331
7332 unsafe fn decode(
7333 &mut self,
7334 decoder: &mut fidl::encoding::Decoder<'_, D>,
7335 offset: usize,
7336 mut depth: fidl::encoding::Depth,
7337 ) -> fidl::Result<()> {
7338 decoder.debug_check_bounds::<Self>(offset);
7339 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7340 None => return Err(fidl::Error::NotNullable),
7341 Some(len) => len,
7342 };
7343 if len == 0 {
7345 return Ok(());
7346 };
7347 depth.increment()?;
7348 let envelope_size = 8;
7349 let bytes_len = len * envelope_size;
7350 let offset = decoder.out_of_line_offset(bytes_len)?;
7351 let mut _next_ordinal_to_read = 0;
7353 let mut next_offset = offset;
7354 let end_offset = offset + bytes_len;
7355 _next_ordinal_to_read += 1;
7356 if next_offset >= end_offset {
7357 return Ok(());
7358 }
7359
7360 while _next_ordinal_to_read < 1 {
7362 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7363 _next_ordinal_to_read += 1;
7364 next_offset += envelope_size;
7365 }
7366
7367 let next_out_of_line = decoder.next_out_of_line();
7368 let handles_before = decoder.remaining_handles();
7369 if let Some((inlined, num_bytes, num_handles)) =
7370 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7371 {
7372 let member_inline_size =
7373 <SaeFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7374 if inlined != (member_inline_size <= 4) {
7375 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7376 }
7377 let inner_offset;
7378 let mut inner_depth = depth.clone();
7379 if inlined {
7380 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7381 inner_offset = next_offset;
7382 } else {
7383 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7384 inner_depth.increment()?;
7385 }
7386 let val_ref = self.sae.get_or_insert_with(|| fidl::new_empty!(SaeFeature, D));
7387 fidl::decode!(SaeFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7388 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7389 {
7390 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7391 }
7392 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7393 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7394 }
7395 }
7396
7397 next_offset += envelope_size;
7398 _next_ordinal_to_read += 1;
7399 if next_offset >= end_offset {
7400 return Ok(());
7401 }
7402
7403 while _next_ordinal_to_read < 2 {
7405 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7406 _next_ordinal_to_read += 1;
7407 next_offset += envelope_size;
7408 }
7409
7410 let next_out_of_line = decoder.next_out_of_line();
7411 let handles_before = decoder.remaining_handles();
7412 if let Some((inlined, num_bytes, num_handles)) =
7413 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7414 {
7415 let member_inline_size =
7416 <MfpFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7417 if inlined != (member_inline_size <= 4) {
7418 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7419 }
7420 let inner_offset;
7421 let mut inner_depth = depth.clone();
7422 if inlined {
7423 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7424 inner_offset = next_offset;
7425 } else {
7426 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7427 inner_depth.increment()?;
7428 }
7429 let val_ref = self.mfp.get_or_insert_with(|| fidl::new_empty!(MfpFeature, D));
7430 fidl::decode!(MfpFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7432 {
7433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7434 }
7435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7437 }
7438 }
7439
7440 next_offset += envelope_size;
7441 _next_ordinal_to_read += 1;
7442 if next_offset >= end_offset {
7443 return Ok(());
7444 }
7445
7446 while _next_ordinal_to_read < 3 {
7448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7449 _next_ordinal_to_read += 1;
7450 next_offset += envelope_size;
7451 }
7452
7453 let next_out_of_line = decoder.next_out_of_line();
7454 let handles_before = decoder.remaining_handles();
7455 if let Some((inlined, num_bytes, num_handles)) =
7456 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7457 {
7458 let member_inline_size =
7459 <OweFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7460 if inlined != (member_inline_size <= 4) {
7461 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7462 }
7463 let inner_offset;
7464 let mut inner_depth = depth.clone();
7465 if inlined {
7466 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7467 inner_offset = next_offset;
7468 } else {
7469 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7470 inner_depth.increment()?;
7471 }
7472 let val_ref = self.owe.get_or_insert_with(|| fidl::new_empty!(OweFeature, D));
7473 fidl::decode!(OweFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7474 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7475 {
7476 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7477 }
7478 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7479 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7480 }
7481 }
7482
7483 next_offset += envelope_size;
7484
7485 while next_offset < end_offset {
7487 _next_ordinal_to_read += 1;
7488 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7489 next_offset += envelope_size;
7490 }
7491
7492 Ok(())
7493 }
7494 }
7495
7496 impl SpectrumManagementSupport {
7497 #[inline(always)]
7498 fn max_ordinal_present(&self) -> u64 {
7499 if let Some(_) = self.dfs {
7500 return 1;
7501 }
7502 0
7503 }
7504 }
7505
7506 impl fidl::encoding::ValueTypeMarker for SpectrumManagementSupport {
7507 type Borrowed<'a> = &'a Self;
7508 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
7509 value
7510 }
7511 }
7512
7513 unsafe impl fidl::encoding::TypeMarker for SpectrumManagementSupport {
7514 type Owned = Self;
7515
7516 #[inline(always)]
7517 fn inline_align(_context: fidl::encoding::Context) -> usize {
7518 8
7519 }
7520
7521 #[inline(always)]
7522 fn inline_size(_context: fidl::encoding::Context) -> usize {
7523 16
7524 }
7525 }
7526
7527 unsafe impl<D: fidl::encoding::ResourceDialect>
7528 fidl::encoding::Encode<SpectrumManagementSupport, D> for &SpectrumManagementSupport
7529 {
7530 unsafe fn encode(
7531 self,
7532 encoder: &mut fidl::encoding::Encoder<'_, D>,
7533 offset: usize,
7534 mut depth: fidl::encoding::Depth,
7535 ) -> fidl::Result<()> {
7536 encoder.debug_check_bounds::<SpectrumManagementSupport>(offset);
7537 let max_ordinal: u64 = self.max_ordinal_present();
7539 encoder.write_num(max_ordinal, offset);
7540 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
7541 if max_ordinal == 0 {
7543 return Ok(());
7544 }
7545 depth.increment()?;
7546 let envelope_size = 8;
7547 let bytes_len = max_ordinal as usize * envelope_size;
7548 #[allow(unused_variables)]
7549 let offset = encoder.out_of_line_offset(bytes_len);
7550 let mut _prev_end_offset: usize = 0;
7551 if 1 > max_ordinal {
7552 return Ok(());
7553 }
7554
7555 let cur_offset: usize = (1 - 1) * envelope_size;
7558
7559 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
7561
7562 fidl::encoding::encode_in_envelope_optional::<DfsFeature, D>(
7567 self.dfs.as_ref().map(<DfsFeature as fidl::encoding::ValueTypeMarker>::borrow),
7568 encoder,
7569 offset + cur_offset,
7570 depth,
7571 )?;
7572
7573 _prev_end_offset = cur_offset + envelope_size;
7574
7575 Ok(())
7576 }
7577 }
7578
7579 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
7580 for SpectrumManagementSupport
7581 {
7582 #[inline(always)]
7583 fn new_empty() -> Self {
7584 Self::default()
7585 }
7586
7587 unsafe fn decode(
7588 &mut self,
7589 decoder: &mut fidl::encoding::Decoder<'_, D>,
7590 offset: usize,
7591 mut depth: fidl::encoding::Depth,
7592 ) -> fidl::Result<()> {
7593 decoder.debug_check_bounds::<Self>(offset);
7594 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
7595 None => return Err(fidl::Error::NotNullable),
7596 Some(len) => len,
7597 };
7598 if len == 0 {
7600 return Ok(());
7601 };
7602 depth.increment()?;
7603 let envelope_size = 8;
7604 let bytes_len = len * envelope_size;
7605 let offset = decoder.out_of_line_offset(bytes_len)?;
7606 let mut _next_ordinal_to_read = 0;
7608 let mut next_offset = offset;
7609 let end_offset = offset + bytes_len;
7610 _next_ordinal_to_read += 1;
7611 if next_offset >= end_offset {
7612 return Ok(());
7613 }
7614
7615 while _next_ordinal_to_read < 1 {
7617 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7618 _next_ordinal_to_read += 1;
7619 next_offset += envelope_size;
7620 }
7621
7622 let next_out_of_line = decoder.next_out_of_line();
7623 let handles_before = decoder.remaining_handles();
7624 if let Some((inlined, num_bytes, num_handles)) =
7625 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7626 {
7627 let member_inline_size =
7628 <DfsFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7629 if inlined != (member_inline_size <= 4) {
7630 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7631 }
7632 let inner_offset;
7633 let mut inner_depth = depth.clone();
7634 if inlined {
7635 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7636 inner_offset = next_offset;
7637 } else {
7638 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7639 inner_depth.increment()?;
7640 }
7641 let val_ref = self.dfs.get_or_insert_with(|| fidl::new_empty!(DfsFeature, D));
7642 fidl::decode!(DfsFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
7643 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7644 {
7645 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7646 }
7647 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7648 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7649 }
7650 }
7651
7652 next_offset += envelope_size;
7653
7654 while next_offset < end_offset {
7656 _next_ordinal_to_read += 1;
7657 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7658 next_offset += envelope_size;
7659 }
7660
7661 Ok(())
7662 }
7663 }
7664}