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