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 CapabilityInfo = u16;
16
17pub type WlanSoftmacHardwareCapability = u32;
18
19pub const MAX_BANDS: u8 = 16;
22
23pub const MAX_SUPPORTED_MAC_ROLES: u8 = 16;
26
27pub const MAX_SUPPORTED_PHY_TYPES: u8 = 64;
30
31pub const WLAN_MAC_MAX_EXT_RATES: u32 = 255;
32
33pub const WLAN_MAC_MAX_SUPP_RATES: u32 = 8;
40
41pub const WLAN_TX_RESULT_MAX_ENTRY: u32 = 8;
42
43pub const WLAN_TX_VECTOR_IDX_INVALID: u16 = 0;
44
45#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
46pub enum BssType {
47 Unknown,
48 Infrastructure,
49 Independent,
50 Mesh,
51 Personal,
52 #[doc(hidden)]
53 __SourceBreaking {
54 unknown_ordinal: u32,
55 },
56}
57
58#[macro_export]
60macro_rules! BssTypeUnknown {
61 () => {
62 _
63 };
64}
65
66impl BssType {
67 #[inline]
68 pub fn from_primitive(prim: u32) -> Option<Self> {
69 match prim {
70 0 => Some(Self::Unknown),
71 1 => Some(Self::Infrastructure),
72 2 => Some(Self::Independent),
73 3 => Some(Self::Mesh),
74 4 => Some(Self::Personal),
75 _ => None,
76 }
77 }
78
79 #[inline]
80 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
81 match prim {
82 0 => Self::Unknown,
83 1 => Self::Infrastructure,
84 2 => Self::Independent,
85 3 => Self::Mesh,
86 4 => Self::Personal,
87 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
88 }
89 }
90
91 #[inline]
92 pub fn unknown() -> Self {
93 Self::__SourceBreaking { unknown_ordinal: 0x0 }
94 }
95
96 #[inline]
97 pub const fn into_primitive(self) -> u32 {
98 match self {
99 Self::Unknown => 0,
100 Self::Infrastructure => 1,
101 Self::Independent => 2,
102 Self::Mesh => 3,
103 Self::Personal => 4,
104 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
105 }
106 }
107
108 #[inline]
109 pub fn is_unknown(&self) -> bool {
110 match self {
111 Self::__SourceBreaking { unknown_ordinal: _ } => true,
112 _ => false,
113 }
114 }
115}
116
117#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
118pub enum ChannelBandwidth {
119 Cbw20,
120 Cbw40,
121 Cbw40Below,
122 Cbw80,
123 Cbw160,
124 Cbw80P80,
125 #[doc(hidden)]
126 __SourceBreaking {
127 unknown_ordinal: u32,
128 },
129}
130
131#[macro_export]
133macro_rules! ChannelBandwidthUnknown {
134 () => {
135 _
136 };
137}
138
139impl ChannelBandwidth {
140 #[inline]
141 pub fn from_primitive(prim: u32) -> Option<Self> {
142 match prim {
143 1 => Some(Self::Cbw20),
144 2 => Some(Self::Cbw40),
145 3 => Some(Self::Cbw40Below),
146 4 => Some(Self::Cbw80),
147 5 => Some(Self::Cbw160),
148 6 => Some(Self::Cbw80P80),
149 _ => None,
150 }
151 }
152
153 #[inline]
154 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
155 match prim {
156 1 => Self::Cbw20,
157 2 => Self::Cbw40,
158 3 => Self::Cbw40Below,
159 4 => Self::Cbw80,
160 5 => Self::Cbw160,
161 6 => Self::Cbw80P80,
162 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
163 }
164 }
165
166 #[inline]
167 pub fn unknown() -> Self {
168 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
169 }
170
171 #[inline]
172 pub const fn into_primitive(self) -> u32 {
173 match self {
174 Self::Cbw20 => 1,
175 Self::Cbw40 => 2,
176 Self::Cbw40Below => 3,
177 Self::Cbw80 => 4,
178 Self::Cbw160 => 5,
179 Self::Cbw80P80 => 6,
180 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
181 }
182 }
183
184 #[inline]
185 pub fn is_unknown(&self) -> bool {
186 match self {
187 Self::__SourceBreaking { unknown_ordinal: _ } => true,
188 _ => false,
189 }
190 }
191}
192
193#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
195pub enum DataPlaneType {
196 EthernetDevice,
197 GenericNetworkDevice,
198 #[doc(hidden)]
199 __SourceBreaking {
200 unknown_ordinal: u8,
201 },
202}
203
204#[macro_export]
206macro_rules! DataPlaneTypeUnknown {
207 () => {
208 _
209 };
210}
211
212impl DataPlaneType {
213 #[inline]
214 pub fn from_primitive(prim: u8) -> Option<Self> {
215 match prim {
216 1 => Some(Self::EthernetDevice),
217 2 => Some(Self::GenericNetworkDevice),
218 _ => None,
219 }
220 }
221
222 #[inline]
223 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
224 match prim {
225 1 => Self::EthernetDevice,
226 2 => Self::GenericNetworkDevice,
227 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
228 }
229 }
230
231 #[inline]
232 pub fn unknown() -> Self {
233 Self::__SourceBreaking { unknown_ordinal: 0xff }
234 }
235
236 #[inline]
237 pub const fn into_primitive(self) -> u8 {
238 match self {
239 Self::EthernetDevice => 1,
240 Self::GenericNetworkDevice => 2,
241 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
242 }
243 }
244
245 #[inline]
246 pub fn is_unknown(&self) -> bool {
247 match self {
248 Self::__SourceBreaking { unknown_ordinal: _ } => true,
249 _ => false,
250 }
251 }
252}
253
254#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
257#[repr(u8)]
258pub enum GuardInterval {
259 LongGi = 1,
260 ShortGi = 2,
261}
262
263impl GuardInterval {
264 #[inline]
265 pub fn from_primitive(prim: u8) -> Option<Self> {
266 match prim {
267 1 => Some(Self::LongGi),
268 2 => Some(Self::ShortGi),
269 _ => None,
270 }
271 }
272
273 #[inline]
274 pub const fn into_primitive(self) -> u8 {
275 self as u8
276 }
277}
278
279#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
281pub enum MacImplementationType {
282 Softmac,
283 Fullmac,
284 #[doc(hidden)]
285 __SourceBreaking {
286 unknown_ordinal: u8,
287 },
288}
289
290#[macro_export]
292macro_rules! MacImplementationTypeUnknown {
293 () => {
294 _
295 };
296}
297
298impl MacImplementationType {
299 #[inline]
300 pub fn from_primitive(prim: u8) -> Option<Self> {
301 match prim {
302 1 => Some(Self::Softmac),
303 2 => Some(Self::Fullmac),
304 _ => None,
305 }
306 }
307
308 #[inline]
309 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
310 match prim {
311 1 => Self::Softmac,
312 2 => Self::Fullmac,
313 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
314 }
315 }
316
317 #[inline]
318 pub fn unknown() -> Self {
319 Self::__SourceBreaking { unknown_ordinal: 0xff }
320 }
321
322 #[inline]
323 pub const fn into_primitive(self) -> u8 {
324 match self {
325 Self::Softmac => 1,
326 Self::Fullmac => 2,
327 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
328 }
329 }
330
331 #[inline]
332 pub fn is_unknown(&self) -> bool {
333 match self {
334 Self::__SourceBreaking { unknown_ordinal: _ } => true,
335 _ => false,
336 }
337 }
338}
339
340#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
341#[repr(u32)]
342pub enum PowerSaveType {
343 PsModeUltraLowPower = 0,
344 PsModeLowPower = 1,
345 PsModeBalanced = 2,
346 PsModePerformance = 3,
347}
348
349impl PowerSaveType {
350 #[inline]
351 pub fn from_primitive(prim: u32) -> Option<Self> {
352 match prim {
353 0 => Some(Self::PsModeUltraLowPower),
354 1 => Some(Self::PsModeLowPower),
355 2 => Some(Self::PsModeBalanced),
356 3 => Some(Self::PsModePerformance),
357 _ => None,
358 }
359 }
360
361 #[inline]
362 pub const fn into_primitive(self) -> u32 {
363 self as u32
364 }
365}
366
367#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
368#[repr(u32)]
369pub enum ScanType {
370 Active = 1,
371 Passive = 2,
372}
373
374impl ScanType {
375 #[inline]
376 pub fn from_primitive(prim: u32) -> Option<Self> {
377 match prim {
378 1 => Some(Self::Active),
379 2 => Some(Self::Passive),
380 _ => None,
381 }
382 }
383
384 #[inline]
385 pub const fn into_primitive(self) -> u32 {
386 self as u32
387 }
388}
389
390#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
391pub enum WlanKeyType {
392 Pairwise,
393 Group,
394 Igtk,
395 Peer,
396 #[doc(hidden)]
397 __SourceBreaking {
398 unknown_ordinal: u8,
399 },
400}
401
402#[macro_export]
404macro_rules! WlanKeyTypeUnknown {
405 () => {
406 _
407 };
408}
409
410impl WlanKeyType {
411 #[inline]
412 pub fn from_primitive(prim: u8) -> Option<Self> {
413 match prim {
414 1 => Some(Self::Pairwise),
415 2 => Some(Self::Group),
416 3 => Some(Self::Igtk),
417 4 => Some(Self::Peer),
418 _ => None,
419 }
420 }
421
422 #[inline]
423 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
424 match prim {
425 1 => Self::Pairwise,
426 2 => Self::Group,
427 3 => Self::Igtk,
428 4 => Self::Peer,
429 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
430 }
431 }
432
433 #[inline]
434 pub fn unknown() -> Self {
435 Self::__SourceBreaking { unknown_ordinal: 0xff }
436 }
437
438 #[inline]
439 pub const fn into_primitive(self) -> u8 {
440 match self {
441 Self::Pairwise => 1,
442 Self::Group => 2,
443 Self::Igtk => 3,
444 Self::Peer => 4,
445 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
446 }
447 }
448
449 #[inline]
450 pub fn is_unknown(&self) -> bool {
451 match self {
452 Self::__SourceBreaking { unknown_ordinal: _ } => true,
453 _ => false,
454 }
455 }
456}
457
458#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
459pub enum WlanMacRole {
460 Client,
461 Ap,
462 Mesh,
463 #[doc(hidden)]
464 __SourceBreaking {
465 unknown_ordinal: u32,
466 },
467}
468
469#[macro_export]
471macro_rules! WlanMacRoleUnknown {
472 () => {
473 _
474 };
475}
476
477impl WlanMacRole {
478 #[inline]
479 pub fn from_primitive(prim: u32) -> Option<Self> {
480 match prim {
481 1 => Some(Self::Client),
482 2 => Some(Self::Ap),
483 3 => Some(Self::Mesh),
484 _ => None,
485 }
486 }
487
488 #[inline]
489 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
490 match prim {
491 1 => Self::Client,
492 2 => Self::Ap,
493 3 => Self::Mesh,
494 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
495 }
496 }
497
498 #[inline]
499 pub fn unknown() -> Self {
500 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
501 }
502
503 #[inline]
504 pub const fn into_primitive(self) -> u32 {
505 match self {
506 Self::Client => 1,
507 Self::Ap => 2,
508 Self::Mesh => 3,
509 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
510 }
511 }
512
513 #[inline]
514 pub fn is_unknown(&self) -> bool {
515 match self {
516 Self::__SourceBreaking { unknown_ordinal: _ } => true,
517 _ => false,
518 }
519 }
520}
521
522#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
525pub enum WlanPhyType {
526 Dsss,
530 Hr,
535 Ofdm,
539 Erp,
544 Ht,
548 Dmg,
551 Vht,
555 Tvht,
559 S1G,
562 Cdmg,
565 Cmmg,
568 He,
571 #[doc(hidden)]
572 __SourceBreaking { unknown_ordinal: u32 },
573}
574
575#[macro_export]
577macro_rules! WlanPhyTypeUnknown {
578 () => {
579 _
580 };
581}
582
583impl WlanPhyType {
584 #[inline]
585 pub fn from_primitive(prim: u32) -> Option<Self> {
586 match prim {
587 1 => Some(Self::Dsss),
588 2 => Some(Self::Hr),
589 3 => Some(Self::Ofdm),
590 4 => Some(Self::Erp),
591 5 => Some(Self::Ht),
592 6 => Some(Self::Dmg),
593 7 => Some(Self::Vht),
594 8 => Some(Self::Tvht),
595 9 => Some(Self::S1G),
596 10 => Some(Self::Cdmg),
597 11 => Some(Self::Cmmg),
598 12 => Some(Self::He),
599 _ => None,
600 }
601 }
602
603 #[inline]
604 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
605 match prim {
606 1 => Self::Dsss,
607 2 => Self::Hr,
608 3 => Self::Ofdm,
609 4 => Self::Erp,
610 5 => Self::Ht,
611 6 => Self::Dmg,
612 7 => Self::Vht,
613 8 => Self::Tvht,
614 9 => Self::S1G,
615 10 => Self::Cdmg,
616 11 => Self::Cmmg,
617 12 => Self::He,
618 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
619 }
620 }
621
622 #[inline]
623 pub fn unknown() -> Self {
624 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
625 }
626
627 #[inline]
628 pub const fn into_primitive(self) -> u32 {
629 match self {
630 Self::Dsss => 1,
631 Self::Hr => 2,
632 Self::Ofdm => 3,
633 Self::Erp => 4,
634 Self::Ht => 5,
635 Self::Dmg => 6,
636 Self::Vht => 7,
637 Self::Tvht => 8,
638 Self::S1G => 9,
639 Self::Cdmg => 10,
640 Self::Cmmg => 11,
641 Self::He => 12,
642 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
643 }
644 }
645
646 #[inline]
647 pub fn is_unknown(&self) -> bool {
648 match self {
649 Self::__SourceBreaking { unknown_ordinal: _ } => true,
650 _ => false,
651 }
652 }
653}
654
655#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
656#[repr(u8)]
657pub enum WlanProtection {
658 None = 0,
659 Rx = 1,
660 Tx = 2,
661 RxTx = 3,
662}
663
664impl WlanProtection {
665 #[inline]
666 pub fn from_primitive(prim: u8) -> Option<Self> {
667 match prim {
668 0 => Some(Self::None),
669 1 => Some(Self::Rx),
670 2 => Some(Self::Tx),
671 3 => Some(Self::RxTx),
672 _ => None,
673 }
674 }
675
676 #[inline]
677 pub const fn into_primitive(self) -> u8 {
678 self as u8
679 }
680}
681
682#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
683#[repr(u32)]
684pub enum WlanSoftmacHardwareCapabilityBit {
685 ShortPreamble = 32,
687 SpectrumMgmt = 256,
689 Qos = 512,
690 ShortSlotTime = 1024,
692 RadioMsmt = 4096,
694 SimultaneousClientAp = 65536,
695}
696
697impl WlanSoftmacHardwareCapabilityBit {
698 #[inline]
699 pub fn from_primitive(prim: u32) -> Option<Self> {
700 match prim {
701 32 => Some(Self::ShortPreamble),
702 256 => Some(Self::SpectrumMgmt),
703 512 => Some(Self::Qos),
704 1024 => Some(Self::ShortSlotTime),
705 4096 => Some(Self::RadioMsmt),
706 65536 => Some(Self::SimultaneousClientAp),
707 _ => None,
708 }
709 }
710
711 #[inline]
712 pub const fn into_primitive(self) -> u32 {
713 self as u32
714 }
715}
716
717#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
719pub enum WlanTxResultCode {
720 Failed,
722 Success,
724 #[doc(hidden)]
725 __SourceBreaking { unknown_ordinal: u8 },
726}
727
728#[macro_export]
730macro_rules! WlanTxResultCodeUnknown {
731 () => {
732 _
733 };
734}
735
736impl WlanTxResultCode {
737 #[inline]
738 pub fn from_primitive(prim: u8) -> Option<Self> {
739 match prim {
740 0 => Some(Self::Failed),
741 1 => Some(Self::Success),
742 _ => None,
743 }
744 }
745
746 #[inline]
747 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
748 match prim {
749 0 => Self::Failed,
750 1 => Self::Success,
751 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
752 }
753 }
754
755 #[inline]
756 pub fn unknown() -> Self {
757 Self::__SourceBreaking { unknown_ordinal: 0xff }
758 }
759
760 #[inline]
761 pub const fn into_primitive(self) -> u8 {
762 match self {
763 Self::Failed => 0,
764 Self::Success => 1,
765 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
766 }
767 }
768
769 #[inline]
770 pub fn is_unknown(&self) -> bool {
771 match self {
772 Self::__SourceBreaking { unknown_ordinal: _ } => true,
773 _ => false,
774 }
775 }
776}
777
778#[derive(Clone, Debug, PartialEq)]
789pub struct BssDescription {
790 pub bssid: [u8; 6],
791 pub bss_type: BssType,
792 pub beacon_period: u16,
793 pub capability_info: u16,
794 pub ies: Vec<u8>,
797 pub channel: fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
799 pub rssi_dbm: i8,
801 pub snr_db: i8,
803}
804
805impl fidl::Persistable for BssDescription {}
806
807#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
808pub struct WlanChannel {
809 pub primary: u8,
810 pub cbw: ChannelBandwidth,
811 pub secondary80: u8,
812}
813
814impl fidl::Persistable for WlanChannel {}
815
816#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
819pub struct WlanTxResult {
820 pub tx_result_entry: [WlanTxResultEntry; 8],
823 pub peer_addr: [u8; 6],
825 pub result_code: WlanTxResultCode,
826}
827
828impl fidl::Persistable for WlanTxResult {}
829
830#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
833#[repr(C)]
834pub struct WlanTxResultEntry {
835 pub tx_vector_idx: u16,
836 pub attempts: u8,
839}
840
841impl fidl::Persistable for WlanTxResultEntry {}
842
843#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
845pub struct WlanWmmAccessCategoryParameters {
846 pub ecw_min: u8,
850 pub ecw_max: u8,
854 pub aifsn: u8,
856 pub txop_limit: u16,
858 pub acm: bool,
860}
861
862impl fidl::Persistable for WlanWmmAccessCategoryParameters {}
863
864#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
865pub struct WlanWmmParameters {
866 pub apsd: bool,
867 pub ac_be_params: WlanWmmAccessCategoryParameters,
868 pub ac_bk_params: WlanWmmAccessCategoryParameters,
869 pub ac_vi_params: WlanWmmAccessCategoryParameters,
870 pub ac_vo_params: WlanWmmAccessCategoryParameters,
871}
872
873impl fidl::Persistable for WlanWmmParameters {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
879pub struct DataPlaneExtension {
880 pub data_plane_type: Option<DataPlaneType>,
881 #[doc(hidden)]
882 pub __source_breaking: fidl::marker::SourceBreaking,
883}
884
885impl fidl::Persistable for DataPlaneExtension {}
886
887#[derive(Clone, Debug, Default, PartialEq)]
891pub struct DeviceExtension {
892 pub is_synthetic: Option<bool>,
896 pub mac_implementation_type: Option<MacImplementationType>,
898 pub tx_status_report_supported: Option<bool>,
900 #[doc(hidden)]
901 pub __source_breaking: fidl::marker::SourceBreaking,
902}
903
904impl fidl::Persistable for DeviceExtension {}
905
906#[derive(Clone, Debug, Default, PartialEq)]
910pub struct DfsFeature {
911 pub supported: Option<bool>,
916 #[doc(hidden)]
917 pub __source_breaking: fidl::marker::SourceBreaking,
918}
919
920impl fidl::Persistable for DfsFeature {}
921
922#[derive(Clone, Debug, Default, PartialEq)]
925pub struct DiscoverySupport {
926 pub scan_offload: Option<ScanOffloadExtension>,
927 pub probe_response_offload: Option<ProbeResponseOffloadExtension>,
928 #[doc(hidden)]
929 pub __source_breaking: fidl::marker::SourceBreaking,
930}
931
932impl fidl::Persistable for DiscoverySupport {}
933
934#[derive(Clone, Debug, Default, PartialEq)]
935pub struct JoinBssRequest {
936 pub bssid: Option<[u8; 6]>,
937 pub bss_type: Option<BssType>,
938 pub remote: Option<bool>,
939 pub beacon_period: Option<u16>,
940 #[doc(hidden)]
941 pub __source_breaking: fidl::marker::SourceBreaking,
942}
943
944impl fidl::Persistable for JoinBssRequest {}
945
946#[derive(Clone, Debug, Default, PartialEq)]
949pub struct MacSublayerSupport {
950 pub rate_selection_offload: Option<RateSelectionOffloadExtension>,
951 pub data_plane: Option<DataPlaneExtension>,
952 pub device: Option<DeviceExtension>,
953 #[doc(hidden)]
954 pub __source_breaking: fidl::marker::SourceBreaking,
955}
956
957impl fidl::Persistable for MacSublayerSupport {}
958
959#[derive(Clone, Debug, Default, PartialEq)]
963pub struct MfpFeature {
964 pub supported: Option<bool>,
965 #[doc(hidden)]
966 pub __source_breaking: fidl::marker::SourceBreaking,
967}
968
969impl fidl::Persistable for MfpFeature {}
970
971#[derive(Clone, Debug, Default, PartialEq)]
975pub struct OweFeature {
976 pub supported: Option<bool>,
977 #[doc(hidden)]
978 pub __source_breaking: fidl::marker::SourceBreaking,
979}
980
981impl fidl::Persistable for OweFeature {}
982
983#[derive(Clone, Debug, Default, PartialEq)]
987pub struct ProbeResponseOffloadExtension {
988 pub supported: Option<bool>,
990 #[doc(hidden)]
991 pub __source_breaking: fidl::marker::SourceBreaking,
992}
993
994impl fidl::Persistable for ProbeResponseOffloadExtension {}
995
996#[derive(Clone, Debug, Default, PartialEq)]
1000pub struct RateSelectionOffloadExtension {
1001 pub supported: Option<bool>,
1003 #[doc(hidden)]
1004 pub __source_breaking: fidl::marker::SourceBreaking,
1005}
1006
1007impl fidl::Persistable for RateSelectionOffloadExtension {}
1008
1009#[derive(Clone, Debug, Default, PartialEq)]
1013pub struct SaeFeature {
1014 pub driver_handler_supported: Option<bool>,
1016 pub sme_handler_supported: Option<bool>,
1018 pub hash_to_element_supported: Option<bool>,
1022 #[doc(hidden)]
1023 pub __source_breaking: fidl::marker::SourceBreaking,
1024}
1025
1026impl fidl::Persistable for SaeFeature {}
1027
1028#[derive(Clone, Debug, Default, PartialEq)]
1032pub struct ScanOffloadExtension {
1033 pub supported: Option<bool>,
1035 pub scan_cancel_supported: Option<bool>,
1036 #[doc(hidden)]
1037 pub __source_breaking: fidl::marker::SourceBreaking,
1038}
1039
1040impl fidl::Persistable for ScanOffloadExtension {}
1041
1042#[derive(Clone, Debug, Default, PartialEq)]
1045pub struct SecuritySupport {
1046 pub sae: Option<SaeFeature>,
1047 pub mfp: Option<MfpFeature>,
1048 pub owe: Option<OweFeature>,
1049 #[doc(hidden)]
1050 pub __source_breaking: fidl::marker::SourceBreaking,
1051}
1052
1053impl fidl::Persistable for SecuritySupport {}
1054
1055#[derive(Clone, Debug, Default, PartialEq)]
1058pub struct SpectrumManagementSupport {
1059 pub dfs: Option<DfsFeature>,
1060 #[doc(hidden)]
1061 pub __source_breaking: fidl::marker::SourceBreaking,
1062}
1063
1064impl fidl::Persistable for SpectrumManagementSupport {}
1065
1066#[derive(Clone, Debug, Default, PartialEq)]
1067pub struct WlanKeyConfig {
1068 pub protection: Option<WlanProtection>,
1070 pub cipher_oui: Option<[u8; 3]>,
1074 pub cipher_type: Option<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType>,
1077 pub key_type: Option<WlanKeyType>,
1080 pub peer_addr: Option<[u8; 6]>,
1084 pub key_idx: Option<u8>,
1092 pub key: Option<Vec<u8>>,
1095 pub rsc: Option<u64>,
1099 #[doc(hidden)]
1100 pub __source_breaking: fidl::marker::SourceBreaking,
1101}
1102
1103impl fidl::Persistable for WlanKeyConfig {}
1104
1105mod internal {
1106 use super::*;
1107 unsafe impl fidl::encoding::TypeMarker for BssType {
1108 type Owned = Self;
1109
1110 #[inline(always)]
1111 fn inline_align(_context: fidl::encoding::Context) -> usize {
1112 std::mem::align_of::<u32>()
1113 }
1114
1115 #[inline(always)]
1116 fn inline_size(_context: fidl::encoding::Context) -> usize {
1117 std::mem::size_of::<u32>()
1118 }
1119
1120 #[inline(always)]
1121 fn encode_is_copy() -> bool {
1122 false
1123 }
1124
1125 #[inline(always)]
1126 fn decode_is_copy() -> bool {
1127 false
1128 }
1129 }
1130
1131 impl fidl::encoding::ValueTypeMarker for BssType {
1132 type Borrowed<'a> = Self;
1133 #[inline(always)]
1134 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1135 *value
1136 }
1137 }
1138
1139 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BssType {
1140 #[inline]
1141 unsafe fn encode(
1142 self,
1143 encoder: &mut fidl::encoding::Encoder<'_, D>,
1144 offset: usize,
1145 _depth: fidl::encoding::Depth,
1146 ) -> fidl::Result<()> {
1147 encoder.debug_check_bounds::<Self>(offset);
1148 encoder.write_num(self.into_primitive(), offset);
1149 Ok(())
1150 }
1151 }
1152
1153 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssType {
1154 #[inline(always)]
1155 fn new_empty() -> Self {
1156 Self::unknown()
1157 }
1158
1159 #[inline]
1160 unsafe fn decode(
1161 &mut self,
1162 decoder: &mut fidl::encoding::Decoder<'_, D>,
1163 offset: usize,
1164 _depth: fidl::encoding::Depth,
1165 ) -> fidl::Result<()> {
1166 decoder.debug_check_bounds::<Self>(offset);
1167 let prim = decoder.read_num::<u32>(offset);
1168
1169 *self = Self::from_primitive_allow_unknown(prim);
1170 Ok(())
1171 }
1172 }
1173 unsafe impl fidl::encoding::TypeMarker for ChannelBandwidth {
1174 type Owned = Self;
1175
1176 #[inline(always)]
1177 fn inline_align(_context: fidl::encoding::Context) -> usize {
1178 std::mem::align_of::<u32>()
1179 }
1180
1181 #[inline(always)]
1182 fn inline_size(_context: fidl::encoding::Context) -> usize {
1183 std::mem::size_of::<u32>()
1184 }
1185
1186 #[inline(always)]
1187 fn encode_is_copy() -> bool {
1188 false
1189 }
1190
1191 #[inline(always)]
1192 fn decode_is_copy() -> bool {
1193 false
1194 }
1195 }
1196
1197 impl fidl::encoding::ValueTypeMarker for ChannelBandwidth {
1198 type Borrowed<'a> = Self;
1199 #[inline(always)]
1200 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1201 *value
1202 }
1203 }
1204
1205 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1206 for ChannelBandwidth
1207 {
1208 #[inline]
1209 unsafe fn encode(
1210 self,
1211 encoder: &mut fidl::encoding::Encoder<'_, D>,
1212 offset: usize,
1213 _depth: fidl::encoding::Depth,
1214 ) -> fidl::Result<()> {
1215 encoder.debug_check_bounds::<Self>(offset);
1216 encoder.write_num(self.into_primitive(), offset);
1217 Ok(())
1218 }
1219 }
1220
1221 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelBandwidth {
1222 #[inline(always)]
1223 fn new_empty() -> Self {
1224 Self::unknown()
1225 }
1226
1227 #[inline]
1228 unsafe fn decode(
1229 &mut self,
1230 decoder: &mut fidl::encoding::Decoder<'_, D>,
1231 offset: usize,
1232 _depth: fidl::encoding::Depth,
1233 ) -> fidl::Result<()> {
1234 decoder.debug_check_bounds::<Self>(offset);
1235 let prim = decoder.read_num::<u32>(offset);
1236
1237 *self = Self::from_primitive_allow_unknown(prim);
1238 Ok(())
1239 }
1240 }
1241 unsafe impl fidl::encoding::TypeMarker for DataPlaneType {
1242 type Owned = Self;
1243
1244 #[inline(always)]
1245 fn inline_align(_context: fidl::encoding::Context) -> usize {
1246 std::mem::align_of::<u8>()
1247 }
1248
1249 #[inline(always)]
1250 fn inline_size(_context: fidl::encoding::Context) -> usize {
1251 std::mem::size_of::<u8>()
1252 }
1253
1254 #[inline(always)]
1255 fn encode_is_copy() -> bool {
1256 false
1257 }
1258
1259 #[inline(always)]
1260 fn decode_is_copy() -> bool {
1261 false
1262 }
1263 }
1264
1265 impl fidl::encoding::ValueTypeMarker for DataPlaneType {
1266 type Borrowed<'a> = Self;
1267 #[inline(always)]
1268 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1269 *value
1270 }
1271 }
1272
1273 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPlaneType {
1274 #[inline]
1275 unsafe fn encode(
1276 self,
1277 encoder: &mut fidl::encoding::Encoder<'_, D>,
1278 offset: usize,
1279 _depth: fidl::encoding::Depth,
1280 ) -> fidl::Result<()> {
1281 encoder.debug_check_bounds::<Self>(offset);
1282 encoder.write_num(self.into_primitive(), offset);
1283 Ok(())
1284 }
1285 }
1286
1287 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneType {
1288 #[inline(always)]
1289 fn new_empty() -> Self {
1290 Self::unknown()
1291 }
1292
1293 #[inline]
1294 unsafe fn decode(
1295 &mut self,
1296 decoder: &mut fidl::encoding::Decoder<'_, D>,
1297 offset: usize,
1298 _depth: fidl::encoding::Depth,
1299 ) -> fidl::Result<()> {
1300 decoder.debug_check_bounds::<Self>(offset);
1301 let prim = decoder.read_num::<u8>(offset);
1302
1303 *self = Self::from_primitive_allow_unknown(prim);
1304 Ok(())
1305 }
1306 }
1307 unsafe impl fidl::encoding::TypeMarker for GuardInterval {
1308 type Owned = Self;
1309
1310 #[inline(always)]
1311 fn inline_align(_context: fidl::encoding::Context) -> usize {
1312 std::mem::align_of::<u8>()
1313 }
1314
1315 #[inline(always)]
1316 fn inline_size(_context: fidl::encoding::Context) -> usize {
1317 std::mem::size_of::<u8>()
1318 }
1319
1320 #[inline(always)]
1321 fn encode_is_copy() -> bool {
1322 true
1323 }
1324
1325 #[inline(always)]
1326 fn decode_is_copy() -> bool {
1327 false
1328 }
1329 }
1330
1331 impl fidl::encoding::ValueTypeMarker for GuardInterval {
1332 type Borrowed<'a> = Self;
1333 #[inline(always)]
1334 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1335 *value
1336 }
1337 }
1338
1339 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuardInterval {
1340 #[inline]
1341 unsafe fn encode(
1342 self,
1343 encoder: &mut fidl::encoding::Encoder<'_, D>,
1344 offset: usize,
1345 _depth: fidl::encoding::Depth,
1346 ) -> fidl::Result<()> {
1347 encoder.debug_check_bounds::<Self>(offset);
1348 encoder.write_num(self.into_primitive(), offset);
1349 Ok(())
1350 }
1351 }
1352
1353 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuardInterval {
1354 #[inline(always)]
1355 fn new_empty() -> Self {
1356 Self::LongGi
1357 }
1358
1359 #[inline]
1360 unsafe fn decode(
1361 &mut self,
1362 decoder: &mut fidl::encoding::Decoder<'_, D>,
1363 offset: usize,
1364 _depth: fidl::encoding::Depth,
1365 ) -> fidl::Result<()> {
1366 decoder.debug_check_bounds::<Self>(offset);
1367 let prim = decoder.read_num::<u8>(offset);
1368
1369 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1370 Ok(())
1371 }
1372 }
1373 unsafe impl fidl::encoding::TypeMarker for MacImplementationType {
1374 type Owned = Self;
1375
1376 #[inline(always)]
1377 fn inline_align(_context: fidl::encoding::Context) -> usize {
1378 std::mem::align_of::<u8>()
1379 }
1380
1381 #[inline(always)]
1382 fn inline_size(_context: fidl::encoding::Context) -> usize {
1383 std::mem::size_of::<u8>()
1384 }
1385
1386 #[inline(always)]
1387 fn encode_is_copy() -> bool {
1388 false
1389 }
1390
1391 #[inline(always)]
1392 fn decode_is_copy() -> bool {
1393 false
1394 }
1395 }
1396
1397 impl fidl::encoding::ValueTypeMarker for MacImplementationType {
1398 type Borrowed<'a> = Self;
1399 #[inline(always)]
1400 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1401 *value
1402 }
1403 }
1404
1405 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1406 for MacImplementationType
1407 {
1408 #[inline]
1409 unsafe fn encode(
1410 self,
1411 encoder: &mut fidl::encoding::Encoder<'_, D>,
1412 offset: usize,
1413 _depth: fidl::encoding::Depth,
1414 ) -> fidl::Result<()> {
1415 encoder.debug_check_bounds::<Self>(offset);
1416 encoder.write_num(self.into_primitive(), offset);
1417 Ok(())
1418 }
1419 }
1420
1421 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacImplementationType {
1422 #[inline(always)]
1423 fn new_empty() -> Self {
1424 Self::unknown()
1425 }
1426
1427 #[inline]
1428 unsafe fn decode(
1429 &mut self,
1430 decoder: &mut fidl::encoding::Decoder<'_, D>,
1431 offset: usize,
1432 _depth: fidl::encoding::Depth,
1433 ) -> fidl::Result<()> {
1434 decoder.debug_check_bounds::<Self>(offset);
1435 let prim = decoder.read_num::<u8>(offset);
1436
1437 *self = Self::from_primitive_allow_unknown(prim);
1438 Ok(())
1439 }
1440 }
1441 unsafe impl fidl::encoding::TypeMarker for PowerSaveType {
1442 type Owned = Self;
1443
1444 #[inline(always)]
1445 fn inline_align(_context: fidl::encoding::Context) -> usize {
1446 std::mem::align_of::<u32>()
1447 }
1448
1449 #[inline(always)]
1450 fn inline_size(_context: fidl::encoding::Context) -> usize {
1451 std::mem::size_of::<u32>()
1452 }
1453
1454 #[inline(always)]
1455 fn encode_is_copy() -> bool {
1456 true
1457 }
1458
1459 #[inline(always)]
1460 fn decode_is_copy() -> bool {
1461 false
1462 }
1463 }
1464
1465 impl fidl::encoding::ValueTypeMarker for PowerSaveType {
1466 type Borrowed<'a> = Self;
1467 #[inline(always)]
1468 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1469 *value
1470 }
1471 }
1472
1473 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerSaveType {
1474 #[inline]
1475 unsafe fn encode(
1476 self,
1477 encoder: &mut fidl::encoding::Encoder<'_, D>,
1478 offset: usize,
1479 _depth: fidl::encoding::Depth,
1480 ) -> fidl::Result<()> {
1481 encoder.debug_check_bounds::<Self>(offset);
1482 encoder.write_num(self.into_primitive(), offset);
1483 Ok(())
1484 }
1485 }
1486
1487 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerSaveType {
1488 #[inline(always)]
1489 fn new_empty() -> Self {
1490 Self::PsModeUltraLowPower
1491 }
1492
1493 #[inline]
1494 unsafe fn decode(
1495 &mut self,
1496 decoder: &mut fidl::encoding::Decoder<'_, D>,
1497 offset: usize,
1498 _depth: fidl::encoding::Depth,
1499 ) -> fidl::Result<()> {
1500 decoder.debug_check_bounds::<Self>(offset);
1501 let prim = decoder.read_num::<u32>(offset);
1502
1503 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1504 Ok(())
1505 }
1506 }
1507 unsafe impl fidl::encoding::TypeMarker for ScanType {
1508 type Owned = Self;
1509
1510 #[inline(always)]
1511 fn inline_align(_context: fidl::encoding::Context) -> usize {
1512 std::mem::align_of::<u32>()
1513 }
1514
1515 #[inline(always)]
1516 fn inline_size(_context: fidl::encoding::Context) -> usize {
1517 std::mem::size_of::<u32>()
1518 }
1519
1520 #[inline(always)]
1521 fn encode_is_copy() -> bool {
1522 true
1523 }
1524
1525 #[inline(always)]
1526 fn decode_is_copy() -> bool {
1527 false
1528 }
1529 }
1530
1531 impl fidl::encoding::ValueTypeMarker for ScanType {
1532 type Borrowed<'a> = Self;
1533 #[inline(always)]
1534 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1535 *value
1536 }
1537 }
1538
1539 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanType {
1540 #[inline]
1541 unsafe fn encode(
1542 self,
1543 encoder: &mut fidl::encoding::Encoder<'_, D>,
1544 offset: usize,
1545 _depth: fidl::encoding::Depth,
1546 ) -> fidl::Result<()> {
1547 encoder.debug_check_bounds::<Self>(offset);
1548 encoder.write_num(self.into_primitive(), offset);
1549 Ok(())
1550 }
1551 }
1552
1553 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanType {
1554 #[inline(always)]
1555 fn new_empty() -> Self {
1556 Self::Active
1557 }
1558
1559 #[inline]
1560 unsafe fn decode(
1561 &mut self,
1562 decoder: &mut fidl::encoding::Decoder<'_, D>,
1563 offset: usize,
1564 _depth: fidl::encoding::Depth,
1565 ) -> fidl::Result<()> {
1566 decoder.debug_check_bounds::<Self>(offset);
1567 let prim = decoder.read_num::<u32>(offset);
1568
1569 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1570 Ok(())
1571 }
1572 }
1573 unsafe impl fidl::encoding::TypeMarker for WlanKeyType {
1574 type Owned = Self;
1575
1576 #[inline(always)]
1577 fn inline_align(_context: fidl::encoding::Context) -> usize {
1578 std::mem::align_of::<u8>()
1579 }
1580
1581 #[inline(always)]
1582 fn inline_size(_context: fidl::encoding::Context) -> usize {
1583 std::mem::size_of::<u8>()
1584 }
1585
1586 #[inline(always)]
1587 fn encode_is_copy() -> bool {
1588 false
1589 }
1590
1591 #[inline(always)]
1592 fn decode_is_copy() -> bool {
1593 false
1594 }
1595 }
1596
1597 impl fidl::encoding::ValueTypeMarker for WlanKeyType {
1598 type Borrowed<'a> = Self;
1599 #[inline(always)]
1600 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1601 *value
1602 }
1603 }
1604
1605 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanKeyType {
1606 #[inline]
1607 unsafe fn encode(
1608 self,
1609 encoder: &mut fidl::encoding::Encoder<'_, D>,
1610 offset: usize,
1611 _depth: fidl::encoding::Depth,
1612 ) -> fidl::Result<()> {
1613 encoder.debug_check_bounds::<Self>(offset);
1614 encoder.write_num(self.into_primitive(), offset);
1615 Ok(())
1616 }
1617 }
1618
1619 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyType {
1620 #[inline(always)]
1621 fn new_empty() -> Self {
1622 Self::unknown()
1623 }
1624
1625 #[inline]
1626 unsafe fn decode(
1627 &mut self,
1628 decoder: &mut fidl::encoding::Decoder<'_, D>,
1629 offset: usize,
1630 _depth: fidl::encoding::Depth,
1631 ) -> fidl::Result<()> {
1632 decoder.debug_check_bounds::<Self>(offset);
1633 let prim = decoder.read_num::<u8>(offset);
1634
1635 *self = Self::from_primitive_allow_unknown(prim);
1636 Ok(())
1637 }
1638 }
1639 unsafe impl fidl::encoding::TypeMarker for WlanMacRole {
1640 type Owned = Self;
1641
1642 #[inline(always)]
1643 fn inline_align(_context: fidl::encoding::Context) -> usize {
1644 std::mem::align_of::<u32>()
1645 }
1646
1647 #[inline(always)]
1648 fn inline_size(_context: fidl::encoding::Context) -> usize {
1649 std::mem::size_of::<u32>()
1650 }
1651
1652 #[inline(always)]
1653 fn encode_is_copy() -> bool {
1654 false
1655 }
1656
1657 #[inline(always)]
1658 fn decode_is_copy() -> bool {
1659 false
1660 }
1661 }
1662
1663 impl fidl::encoding::ValueTypeMarker for WlanMacRole {
1664 type Borrowed<'a> = Self;
1665 #[inline(always)]
1666 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1667 *value
1668 }
1669 }
1670
1671 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanMacRole {
1672 #[inline]
1673 unsafe fn encode(
1674 self,
1675 encoder: &mut fidl::encoding::Encoder<'_, D>,
1676 offset: usize,
1677 _depth: fidl::encoding::Depth,
1678 ) -> fidl::Result<()> {
1679 encoder.debug_check_bounds::<Self>(offset);
1680 encoder.write_num(self.into_primitive(), offset);
1681 Ok(())
1682 }
1683 }
1684
1685 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanMacRole {
1686 #[inline(always)]
1687 fn new_empty() -> Self {
1688 Self::unknown()
1689 }
1690
1691 #[inline]
1692 unsafe fn decode(
1693 &mut self,
1694 decoder: &mut fidl::encoding::Decoder<'_, D>,
1695 offset: usize,
1696 _depth: fidl::encoding::Depth,
1697 ) -> fidl::Result<()> {
1698 decoder.debug_check_bounds::<Self>(offset);
1699 let prim = decoder.read_num::<u32>(offset);
1700
1701 *self = Self::from_primitive_allow_unknown(prim);
1702 Ok(())
1703 }
1704 }
1705 unsafe impl fidl::encoding::TypeMarker for WlanPhyType {
1706 type Owned = Self;
1707
1708 #[inline(always)]
1709 fn inline_align(_context: fidl::encoding::Context) -> usize {
1710 std::mem::align_of::<u32>()
1711 }
1712
1713 #[inline(always)]
1714 fn inline_size(_context: fidl::encoding::Context) -> usize {
1715 std::mem::size_of::<u32>()
1716 }
1717
1718 #[inline(always)]
1719 fn encode_is_copy() -> bool {
1720 false
1721 }
1722
1723 #[inline(always)]
1724 fn decode_is_copy() -> bool {
1725 false
1726 }
1727 }
1728
1729 impl fidl::encoding::ValueTypeMarker for WlanPhyType {
1730 type Borrowed<'a> = Self;
1731 #[inline(always)]
1732 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1733 *value
1734 }
1735 }
1736
1737 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanPhyType {
1738 #[inline]
1739 unsafe fn encode(
1740 self,
1741 encoder: &mut fidl::encoding::Encoder<'_, D>,
1742 offset: usize,
1743 _depth: fidl::encoding::Depth,
1744 ) -> fidl::Result<()> {
1745 encoder.debug_check_bounds::<Self>(offset);
1746 encoder.write_num(self.into_primitive(), offset);
1747 Ok(())
1748 }
1749 }
1750
1751 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyType {
1752 #[inline(always)]
1753 fn new_empty() -> Self {
1754 Self::unknown()
1755 }
1756
1757 #[inline]
1758 unsafe fn decode(
1759 &mut self,
1760 decoder: &mut fidl::encoding::Decoder<'_, D>,
1761 offset: usize,
1762 _depth: fidl::encoding::Depth,
1763 ) -> fidl::Result<()> {
1764 decoder.debug_check_bounds::<Self>(offset);
1765 let prim = decoder.read_num::<u32>(offset);
1766
1767 *self = Self::from_primitive_allow_unknown(prim);
1768 Ok(())
1769 }
1770 }
1771 unsafe impl fidl::encoding::TypeMarker for WlanProtection {
1772 type Owned = Self;
1773
1774 #[inline(always)]
1775 fn inline_align(_context: fidl::encoding::Context) -> usize {
1776 std::mem::align_of::<u8>()
1777 }
1778
1779 #[inline(always)]
1780 fn inline_size(_context: fidl::encoding::Context) -> usize {
1781 std::mem::size_of::<u8>()
1782 }
1783
1784 #[inline(always)]
1785 fn encode_is_copy() -> bool {
1786 true
1787 }
1788
1789 #[inline(always)]
1790 fn decode_is_copy() -> bool {
1791 false
1792 }
1793 }
1794
1795 impl fidl::encoding::ValueTypeMarker for WlanProtection {
1796 type Borrowed<'a> = Self;
1797 #[inline(always)]
1798 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1799 *value
1800 }
1801 }
1802
1803 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanProtection {
1804 #[inline]
1805 unsafe fn encode(
1806 self,
1807 encoder: &mut fidl::encoding::Encoder<'_, D>,
1808 offset: usize,
1809 _depth: fidl::encoding::Depth,
1810 ) -> fidl::Result<()> {
1811 encoder.debug_check_bounds::<Self>(offset);
1812 encoder.write_num(self.into_primitive(), offset);
1813 Ok(())
1814 }
1815 }
1816
1817 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanProtection {
1818 #[inline(always)]
1819 fn new_empty() -> Self {
1820 Self::None
1821 }
1822
1823 #[inline]
1824 unsafe fn decode(
1825 &mut self,
1826 decoder: &mut fidl::encoding::Decoder<'_, D>,
1827 offset: usize,
1828 _depth: fidl::encoding::Depth,
1829 ) -> fidl::Result<()> {
1830 decoder.debug_check_bounds::<Self>(offset);
1831 let prim = decoder.read_num::<u8>(offset);
1832
1833 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1834 Ok(())
1835 }
1836 }
1837 unsafe impl fidl::encoding::TypeMarker for WlanSoftmacHardwareCapabilityBit {
1838 type Owned = Self;
1839
1840 #[inline(always)]
1841 fn inline_align(_context: fidl::encoding::Context) -> usize {
1842 std::mem::align_of::<u32>()
1843 }
1844
1845 #[inline(always)]
1846 fn inline_size(_context: fidl::encoding::Context) -> usize {
1847 std::mem::size_of::<u32>()
1848 }
1849
1850 #[inline(always)]
1851 fn encode_is_copy() -> bool {
1852 true
1853 }
1854
1855 #[inline(always)]
1856 fn decode_is_copy() -> bool {
1857 false
1858 }
1859 }
1860
1861 impl fidl::encoding::ValueTypeMarker for WlanSoftmacHardwareCapabilityBit {
1862 type Borrowed<'a> = Self;
1863 #[inline(always)]
1864 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1865 *value
1866 }
1867 }
1868
1869 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1870 for WlanSoftmacHardwareCapabilityBit
1871 {
1872 #[inline]
1873 unsafe fn encode(
1874 self,
1875 encoder: &mut fidl::encoding::Encoder<'_, D>,
1876 offset: usize,
1877 _depth: fidl::encoding::Depth,
1878 ) -> fidl::Result<()> {
1879 encoder.debug_check_bounds::<Self>(offset);
1880 encoder.write_num(self.into_primitive(), offset);
1881 Ok(())
1882 }
1883 }
1884
1885 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1886 for WlanSoftmacHardwareCapabilityBit
1887 {
1888 #[inline(always)]
1889 fn new_empty() -> Self {
1890 Self::ShortPreamble
1891 }
1892
1893 #[inline]
1894 unsafe fn decode(
1895 &mut self,
1896 decoder: &mut fidl::encoding::Decoder<'_, D>,
1897 offset: usize,
1898 _depth: fidl::encoding::Depth,
1899 ) -> fidl::Result<()> {
1900 decoder.debug_check_bounds::<Self>(offset);
1901 let prim = decoder.read_num::<u32>(offset);
1902
1903 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1904 Ok(())
1905 }
1906 }
1907 unsafe impl fidl::encoding::TypeMarker for WlanTxResultCode {
1908 type Owned = Self;
1909
1910 #[inline(always)]
1911 fn inline_align(_context: fidl::encoding::Context) -> usize {
1912 std::mem::align_of::<u8>()
1913 }
1914
1915 #[inline(always)]
1916 fn inline_size(_context: fidl::encoding::Context) -> usize {
1917 std::mem::size_of::<u8>()
1918 }
1919
1920 #[inline(always)]
1921 fn encode_is_copy() -> bool {
1922 false
1923 }
1924
1925 #[inline(always)]
1926 fn decode_is_copy() -> bool {
1927 false
1928 }
1929 }
1930
1931 impl fidl::encoding::ValueTypeMarker for WlanTxResultCode {
1932 type Borrowed<'a> = Self;
1933 #[inline(always)]
1934 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1935 *value
1936 }
1937 }
1938
1939 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1940 for WlanTxResultCode
1941 {
1942 #[inline]
1943 unsafe fn encode(
1944 self,
1945 encoder: &mut fidl::encoding::Encoder<'_, D>,
1946 offset: usize,
1947 _depth: fidl::encoding::Depth,
1948 ) -> fidl::Result<()> {
1949 encoder.debug_check_bounds::<Self>(offset);
1950 encoder.write_num(self.into_primitive(), offset);
1951 Ok(())
1952 }
1953 }
1954
1955 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultCode {
1956 #[inline(always)]
1957 fn new_empty() -> Self {
1958 Self::unknown()
1959 }
1960
1961 #[inline]
1962 unsafe fn decode(
1963 &mut self,
1964 decoder: &mut fidl::encoding::Decoder<'_, D>,
1965 offset: usize,
1966 _depth: fidl::encoding::Depth,
1967 ) -> fidl::Result<()> {
1968 decoder.debug_check_bounds::<Self>(offset);
1969 let prim = decoder.read_num::<u8>(offset);
1970
1971 *self = Self::from_primitive_allow_unknown(prim);
1972 Ok(())
1973 }
1974 }
1975
1976 impl fidl::encoding::ValueTypeMarker for BssDescription {
1977 type Borrowed<'a> = &'a Self;
1978 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1979 value
1980 }
1981 }
1982
1983 unsafe impl fidl::encoding::TypeMarker for BssDescription {
1984 type Owned = Self;
1985
1986 #[inline(always)]
1987 fn inline_align(_context: fidl::encoding::Context) -> usize {
1988 8
1989 }
1990
1991 #[inline(always)]
1992 fn inline_size(_context: fidl::encoding::Context) -> usize {
1993 48
1994 }
1995 }
1996
1997 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BssDescription, D>
1998 for &BssDescription
1999 {
2000 #[inline]
2001 unsafe fn encode(
2002 self,
2003 encoder: &mut fidl::encoding::Encoder<'_, D>,
2004 offset: usize,
2005 _depth: fidl::encoding::Depth,
2006 ) -> fidl::Result<()> {
2007 encoder.debug_check_bounds::<BssDescription>(offset);
2008 fidl::encoding::Encode::<BssDescription, D>::encode(
2010 (
2011 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.bssid),
2012 <BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
2013 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
2014 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2015 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.ies),
2016 <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
2017 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_dbm),
2018 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.snr_db),
2019 ),
2020 encoder, offset, _depth
2021 )
2022 }
2023 }
2024 unsafe impl<
2025 D: fidl::encoding::ResourceDialect,
2026 T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2027 T1: fidl::encoding::Encode<BssType, D>,
2028 T2: fidl::encoding::Encode<u16, D>,
2029 T3: fidl::encoding::Encode<u16, D>,
2030 T4: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2031 T5: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
2032 T6: fidl::encoding::Encode<i8, D>,
2033 T7: fidl::encoding::Encode<i8, D>,
2034 > fidl::encoding::Encode<BssDescription, D> for (T0, T1, T2, T3, T4, T5, T6, T7)
2035 {
2036 #[inline]
2037 unsafe fn encode(
2038 self,
2039 encoder: &mut fidl::encoding::Encoder<'_, D>,
2040 offset: usize,
2041 depth: fidl::encoding::Depth,
2042 ) -> fidl::Result<()> {
2043 encoder.debug_check_bounds::<BssDescription>(offset);
2044 unsafe {
2047 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2048 (ptr as *mut u64).write_unaligned(0);
2049 }
2050 unsafe {
2051 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
2052 (ptr as *mut u64).write_unaligned(0);
2053 }
2054 self.0.encode(encoder, offset + 0, depth)?;
2056 self.1.encode(encoder, offset + 8, depth)?;
2057 self.2.encode(encoder, offset + 12, depth)?;
2058 self.3.encode(encoder, offset + 14, depth)?;
2059 self.4.encode(encoder, offset + 16, depth)?;
2060 self.5.encode(encoder, offset + 32, depth)?;
2061 self.6.encode(encoder, offset + 44, depth)?;
2062 self.7.encode(encoder, offset + 45, depth)?;
2063 Ok(())
2064 }
2065 }
2066
2067 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssDescription {
2068 #[inline(always)]
2069 fn new_empty() -> Self {
2070 Self {
2071 bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2072 bss_type: fidl::new_empty!(BssType, D),
2073 beacon_period: fidl::new_empty!(u16, D),
2074 capability_info: fidl::new_empty!(u16, D),
2075 ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2076 channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
2077 rssi_dbm: fidl::new_empty!(i8, D),
2078 snr_db: fidl::new_empty!(i8, D),
2079 }
2080 }
2081
2082 #[inline]
2083 unsafe fn decode(
2084 &mut self,
2085 decoder: &mut fidl::encoding::Decoder<'_, D>,
2086 offset: usize,
2087 _depth: fidl::encoding::Depth,
2088 ) -> fidl::Result<()> {
2089 decoder.debug_check_bounds::<Self>(offset);
2090 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2092 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2093 let mask = 0xffff000000000000u64;
2094 let maskedval = padval & mask;
2095 if maskedval != 0 {
2096 return Err(fidl::Error::NonZeroPadding {
2097 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2098 });
2099 }
2100 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
2101 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2102 let mask = 0xffff000000000000u64;
2103 let maskedval = padval & mask;
2104 if maskedval != 0 {
2105 return Err(fidl::Error::NonZeroPadding {
2106 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
2107 });
2108 }
2109 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.bssid, decoder, offset + 0, _depth)?;
2110 fidl::decode!(BssType, D, &mut self.bss_type, decoder, offset + 8, _depth)?;
2111 fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 12, _depth)?;
2112 fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2113 fidl::decode!(
2114 fidl::encoding::UnboundedVector<u8>,
2115 D,
2116 &mut self.ies,
2117 decoder,
2118 offset + 16,
2119 _depth
2120 )?;
2121 fidl::decode!(
2122 fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
2123 D,
2124 &mut self.channel,
2125 decoder,
2126 offset + 32,
2127 _depth
2128 )?;
2129 fidl::decode!(i8, D, &mut self.rssi_dbm, decoder, offset + 44, _depth)?;
2130 fidl::decode!(i8, D, &mut self.snr_db, decoder, offset + 45, _depth)?;
2131 Ok(())
2132 }
2133 }
2134
2135 impl fidl::encoding::ValueTypeMarker for WlanChannel {
2136 type Borrowed<'a> = &'a Self;
2137 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2138 value
2139 }
2140 }
2141
2142 unsafe impl fidl::encoding::TypeMarker for WlanChannel {
2143 type Owned = Self;
2144
2145 #[inline(always)]
2146 fn inline_align(_context: fidl::encoding::Context) -> usize {
2147 4
2148 }
2149
2150 #[inline(always)]
2151 fn inline_size(_context: fidl::encoding::Context) -> usize {
2152 12
2153 }
2154 }
2155
2156 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanChannel, D>
2157 for &WlanChannel
2158 {
2159 #[inline]
2160 unsafe fn encode(
2161 self,
2162 encoder: &mut fidl::encoding::Encoder<'_, D>,
2163 offset: usize,
2164 _depth: fidl::encoding::Depth,
2165 ) -> fidl::Result<()> {
2166 encoder.debug_check_bounds::<WlanChannel>(offset);
2167 fidl::encoding::Encode::<WlanChannel, D>::encode(
2169 (
2170 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
2171 <ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.cbw),
2172 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.secondary80),
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<ChannelBandwidth, D>,
2184 T2: fidl::encoding::Encode<u8, D>,
2185 > fidl::encoding::Encode<WlanChannel, D> for (T0, T1, T2)
2186 {
2187 #[inline]
2188 unsafe fn encode(
2189 self,
2190 encoder: &mut fidl::encoding::Encoder<'_, D>,
2191 offset: usize,
2192 depth: fidl::encoding::Depth,
2193 ) -> fidl::Result<()> {
2194 encoder.debug_check_bounds::<WlanChannel>(offset);
2195 unsafe {
2198 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2199 (ptr as *mut u32).write_unaligned(0);
2200 }
2201 unsafe {
2202 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2203 (ptr as *mut u32).write_unaligned(0);
2204 }
2205 self.0.encode(encoder, offset + 0, depth)?;
2207 self.1.encode(encoder, offset + 4, depth)?;
2208 self.2.encode(encoder, offset + 8, depth)?;
2209 Ok(())
2210 }
2211 }
2212
2213 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanChannel {
2214 #[inline(always)]
2215 fn new_empty() -> Self {
2216 Self {
2217 primary: fidl::new_empty!(u8, D),
2218 cbw: fidl::new_empty!(ChannelBandwidth, D),
2219 secondary80: fidl::new_empty!(u8, D),
2220 }
2221 }
2222
2223 #[inline]
2224 unsafe fn decode(
2225 &mut self,
2226 decoder: &mut fidl::encoding::Decoder<'_, D>,
2227 offset: usize,
2228 _depth: fidl::encoding::Depth,
2229 ) -> fidl::Result<()> {
2230 decoder.debug_check_bounds::<Self>(offset);
2231 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2233 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2234 let mask = 0xffffff00u32;
2235 let maskedval = padval & mask;
2236 if maskedval != 0 {
2237 return Err(fidl::Error::NonZeroPadding {
2238 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2239 });
2240 }
2241 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2242 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2243 let mask = 0xffffff00u32;
2244 let maskedval = padval & mask;
2245 if maskedval != 0 {
2246 return Err(fidl::Error::NonZeroPadding {
2247 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2248 });
2249 }
2250 fidl::decode!(u8, D, &mut self.primary, decoder, offset + 0, _depth)?;
2251 fidl::decode!(ChannelBandwidth, D, &mut self.cbw, decoder, offset + 4, _depth)?;
2252 fidl::decode!(u8, D, &mut self.secondary80, decoder, offset + 8, _depth)?;
2253 Ok(())
2254 }
2255 }
2256
2257 impl fidl::encoding::ValueTypeMarker for WlanTxResult {
2258 type Borrowed<'a> = &'a Self;
2259 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2260 value
2261 }
2262 }
2263
2264 unsafe impl fidl::encoding::TypeMarker for WlanTxResult {
2265 type Owned = Self;
2266
2267 #[inline(always)]
2268 fn inline_align(_context: fidl::encoding::Context) -> usize {
2269 2
2270 }
2271
2272 #[inline(always)]
2273 fn inline_size(_context: fidl::encoding::Context) -> usize {
2274 40
2275 }
2276 }
2277
2278 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResult, D>
2279 for &WlanTxResult
2280 {
2281 #[inline]
2282 unsafe fn encode(
2283 self,
2284 encoder: &mut fidl::encoding::Encoder<'_, D>,
2285 offset: usize,
2286 _depth: fidl::encoding::Depth,
2287 ) -> fidl::Result<()> {
2288 encoder.debug_check_bounds::<WlanTxResult>(offset);
2289 fidl::encoding::Encode::<WlanTxResult, D>::encode(
2291 (
2292 <fidl::encoding::Array<WlanTxResultEntry, 8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_result_entry),
2293 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_addr),
2294 <WlanTxResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2295 ),
2296 encoder, offset, _depth
2297 )
2298 }
2299 }
2300 unsafe impl<
2301 D: fidl::encoding::ResourceDialect,
2302 T0: fidl::encoding::Encode<fidl::encoding::Array<WlanTxResultEntry, 8>, D>,
2303 T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2304 T2: fidl::encoding::Encode<WlanTxResultCode, D>,
2305 > fidl::encoding::Encode<WlanTxResult, D> for (T0, T1, T2)
2306 {
2307 #[inline]
2308 unsafe fn encode(
2309 self,
2310 encoder: &mut fidl::encoding::Encoder<'_, D>,
2311 offset: usize,
2312 depth: fidl::encoding::Depth,
2313 ) -> fidl::Result<()> {
2314 encoder.debug_check_bounds::<WlanTxResult>(offset);
2315 unsafe {
2318 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(38);
2319 (ptr as *mut u16).write_unaligned(0);
2320 }
2321 self.0.encode(encoder, offset + 0, depth)?;
2323 self.1.encode(encoder, offset + 32, depth)?;
2324 self.2.encode(encoder, offset + 38, depth)?;
2325 Ok(())
2326 }
2327 }
2328
2329 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResult {
2330 #[inline(always)]
2331 fn new_empty() -> Self {
2332 Self {
2333 tx_result_entry: fidl::new_empty!(fidl::encoding::Array<WlanTxResultEntry, 8>, D),
2334 peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2335 result_code: fidl::new_empty!(WlanTxResultCode, D),
2336 }
2337 }
2338
2339 #[inline]
2340 unsafe fn decode(
2341 &mut self,
2342 decoder: &mut fidl::encoding::Decoder<'_, D>,
2343 offset: usize,
2344 _depth: fidl::encoding::Depth,
2345 ) -> fidl::Result<()> {
2346 decoder.debug_check_bounds::<Self>(offset);
2347 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(38) };
2349 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2350 let mask = 0xff00u16;
2351 let maskedval = padval & mask;
2352 if maskedval != 0 {
2353 return Err(fidl::Error::NonZeroPadding {
2354 padding_start: offset + 38 + ((mask as u64).trailing_zeros() / 8) as usize,
2355 });
2356 }
2357 fidl::decode!(fidl::encoding::Array<WlanTxResultEntry, 8>, D, &mut self.tx_result_entry, decoder, offset + 0, _depth)?;
2358 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_addr, decoder, offset + 32, _depth)?;
2359 fidl::decode!(
2360 WlanTxResultCode,
2361 D,
2362 &mut self.result_code,
2363 decoder,
2364 offset + 38,
2365 _depth
2366 )?;
2367 Ok(())
2368 }
2369 }
2370
2371 impl fidl::encoding::ValueTypeMarker for WlanTxResultEntry {
2372 type Borrowed<'a> = &'a Self;
2373 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2374 value
2375 }
2376 }
2377
2378 unsafe impl fidl::encoding::TypeMarker for WlanTxResultEntry {
2379 type Owned = Self;
2380
2381 #[inline(always)]
2382 fn inline_align(_context: fidl::encoding::Context) -> usize {
2383 2
2384 }
2385
2386 #[inline(always)]
2387 fn inline_size(_context: fidl::encoding::Context) -> usize {
2388 4
2389 }
2390 }
2391
2392 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResultEntry, D>
2393 for &WlanTxResultEntry
2394 {
2395 #[inline]
2396 unsafe fn encode(
2397 self,
2398 encoder: &mut fidl::encoding::Encoder<'_, D>,
2399 offset: usize,
2400 _depth: fidl::encoding::Depth,
2401 ) -> fidl::Result<()> {
2402 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2403 unsafe {
2404 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2406 (buf_ptr as *mut WlanTxResultEntry)
2407 .write_unaligned((self as *const WlanTxResultEntry).read());
2408 let padding_ptr = buf_ptr.offset(2) as *mut u16;
2411 let padding_mask = 0xff00u16;
2412 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2413 }
2414 Ok(())
2415 }
2416 }
2417 unsafe impl<
2418 D: fidl::encoding::ResourceDialect,
2419 T0: fidl::encoding::Encode<u16, D>,
2420 T1: fidl::encoding::Encode<u8, D>,
2421 > fidl::encoding::Encode<WlanTxResultEntry, D> for (T0, T1)
2422 {
2423 #[inline]
2424 unsafe fn encode(
2425 self,
2426 encoder: &mut fidl::encoding::Encoder<'_, D>,
2427 offset: usize,
2428 depth: fidl::encoding::Depth,
2429 ) -> fidl::Result<()> {
2430 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2431 unsafe {
2434 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2435 (ptr as *mut u16).write_unaligned(0);
2436 }
2437 self.0.encode(encoder, offset + 0, depth)?;
2439 self.1.encode(encoder, offset + 2, depth)?;
2440 Ok(())
2441 }
2442 }
2443
2444 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultEntry {
2445 #[inline(always)]
2446 fn new_empty() -> Self {
2447 Self { tx_vector_idx: fidl::new_empty!(u16, D), attempts: fidl::new_empty!(u8, D) }
2448 }
2449
2450 #[inline]
2451 unsafe fn decode(
2452 &mut self,
2453 decoder: &mut fidl::encoding::Decoder<'_, D>,
2454 offset: usize,
2455 _depth: fidl::encoding::Depth,
2456 ) -> fidl::Result<()> {
2457 decoder.debug_check_bounds::<Self>(offset);
2458 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2459 let ptr = unsafe { buf_ptr.offset(2) };
2461 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2462 let mask = 0xff00u16;
2463 let maskedval = padval & mask;
2464 if maskedval != 0 {
2465 return Err(fidl::Error::NonZeroPadding {
2466 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2467 });
2468 }
2469 unsafe {
2471 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2472 }
2473 Ok(())
2474 }
2475 }
2476
2477 impl fidl::encoding::ValueTypeMarker for WlanWmmAccessCategoryParameters {
2478 type Borrowed<'a> = &'a Self;
2479 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2480 value
2481 }
2482 }
2483
2484 unsafe impl fidl::encoding::TypeMarker for WlanWmmAccessCategoryParameters {
2485 type Owned = Self;
2486
2487 #[inline(always)]
2488 fn inline_align(_context: fidl::encoding::Context) -> usize {
2489 2
2490 }
2491
2492 #[inline(always)]
2493 fn inline_size(_context: fidl::encoding::Context) -> usize {
2494 8
2495 }
2496 }
2497
2498 unsafe impl<D: fidl::encoding::ResourceDialect>
2499 fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>
2500 for &WlanWmmAccessCategoryParameters
2501 {
2502 #[inline]
2503 unsafe fn encode(
2504 self,
2505 encoder: &mut fidl::encoding::Encoder<'_, D>,
2506 offset: usize,
2507 _depth: fidl::encoding::Depth,
2508 ) -> fidl::Result<()> {
2509 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2510 fidl::encoding::Encode::<WlanWmmAccessCategoryParameters, D>::encode(
2512 (
2513 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_min),
2514 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_max),
2515 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.aifsn),
2516 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.txop_limit),
2517 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.acm),
2518 ),
2519 encoder,
2520 offset,
2521 _depth,
2522 )
2523 }
2524 }
2525 unsafe impl<
2526 D: fidl::encoding::ResourceDialect,
2527 T0: fidl::encoding::Encode<u8, D>,
2528 T1: fidl::encoding::Encode<u8, D>,
2529 T2: fidl::encoding::Encode<u8, D>,
2530 T3: fidl::encoding::Encode<u16, D>,
2531 T4: fidl::encoding::Encode<bool, D>,
2532 > fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D> for (T0, T1, T2, T3, T4)
2533 {
2534 #[inline]
2535 unsafe fn encode(
2536 self,
2537 encoder: &mut fidl::encoding::Encoder<'_, D>,
2538 offset: usize,
2539 depth: fidl::encoding::Depth,
2540 ) -> fidl::Result<()> {
2541 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2542 unsafe {
2545 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2546 (ptr as *mut u16).write_unaligned(0);
2547 }
2548 unsafe {
2549 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(6);
2550 (ptr as *mut u16).write_unaligned(0);
2551 }
2552 self.0.encode(encoder, offset + 0, depth)?;
2554 self.1.encode(encoder, offset + 1, depth)?;
2555 self.2.encode(encoder, offset + 2, depth)?;
2556 self.3.encode(encoder, offset + 4, depth)?;
2557 self.4.encode(encoder, offset + 6, depth)?;
2558 Ok(())
2559 }
2560 }
2561
2562 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2563 for WlanWmmAccessCategoryParameters
2564 {
2565 #[inline(always)]
2566 fn new_empty() -> Self {
2567 Self {
2568 ecw_min: fidl::new_empty!(u8, D),
2569 ecw_max: fidl::new_empty!(u8, D),
2570 aifsn: fidl::new_empty!(u8, D),
2571 txop_limit: fidl::new_empty!(u16, D),
2572 acm: fidl::new_empty!(bool, D),
2573 }
2574 }
2575
2576 #[inline]
2577 unsafe fn decode(
2578 &mut self,
2579 decoder: &mut fidl::encoding::Decoder<'_, D>,
2580 offset: usize,
2581 _depth: fidl::encoding::Depth,
2582 ) -> fidl::Result<()> {
2583 decoder.debug_check_bounds::<Self>(offset);
2584 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(2) };
2586 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2587 let mask = 0xff00u16;
2588 let maskedval = padval & mask;
2589 if maskedval != 0 {
2590 return Err(fidl::Error::NonZeroPadding {
2591 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2592 });
2593 }
2594 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(6) };
2595 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2596 let mask = 0xff00u16;
2597 let maskedval = padval & mask;
2598 if maskedval != 0 {
2599 return Err(fidl::Error::NonZeroPadding {
2600 padding_start: offset + 6 + ((mask as u64).trailing_zeros() / 8) as usize,
2601 });
2602 }
2603 fidl::decode!(u8, D, &mut self.ecw_min, decoder, offset + 0, _depth)?;
2604 fidl::decode!(u8, D, &mut self.ecw_max, decoder, offset + 1, _depth)?;
2605 fidl::decode!(u8, D, &mut self.aifsn, decoder, offset + 2, _depth)?;
2606 fidl::decode!(u16, D, &mut self.txop_limit, decoder, offset + 4, _depth)?;
2607 fidl::decode!(bool, D, &mut self.acm, decoder, offset + 6, _depth)?;
2608 Ok(())
2609 }
2610 }
2611
2612 impl fidl::encoding::ValueTypeMarker for WlanWmmParameters {
2613 type Borrowed<'a> = &'a Self;
2614 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2615 value
2616 }
2617 }
2618
2619 unsafe impl fidl::encoding::TypeMarker for WlanWmmParameters {
2620 type Owned = Self;
2621
2622 #[inline(always)]
2623 fn inline_align(_context: fidl::encoding::Context) -> usize {
2624 2
2625 }
2626
2627 #[inline(always)]
2628 fn inline_size(_context: fidl::encoding::Context) -> usize {
2629 34
2630 }
2631 }
2632
2633 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanWmmParameters, D>
2634 for &WlanWmmParameters
2635 {
2636 #[inline]
2637 unsafe fn encode(
2638 self,
2639 encoder: &mut fidl::encoding::Encoder<'_, D>,
2640 offset: usize,
2641 _depth: fidl::encoding::Depth,
2642 ) -> fidl::Result<()> {
2643 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2644 fidl::encoding::Encode::<WlanWmmParameters, D>::encode(
2646 (
2647 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.apsd),
2648 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2649 &self.ac_be_params,
2650 ),
2651 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2652 &self.ac_bk_params,
2653 ),
2654 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2655 &self.ac_vi_params,
2656 ),
2657 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2658 &self.ac_vo_params,
2659 ),
2660 ),
2661 encoder,
2662 offset,
2663 _depth,
2664 )
2665 }
2666 }
2667 unsafe impl<
2668 D: fidl::encoding::ResourceDialect,
2669 T0: fidl::encoding::Encode<bool, D>,
2670 T1: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2671 T2: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2672 T3: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2673 T4: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2674 > fidl::encoding::Encode<WlanWmmParameters, D> for (T0, T1, T2, T3, T4)
2675 {
2676 #[inline]
2677 unsafe fn encode(
2678 self,
2679 encoder: &mut fidl::encoding::Encoder<'_, D>,
2680 offset: usize,
2681 depth: fidl::encoding::Depth,
2682 ) -> fidl::Result<()> {
2683 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2684 unsafe {
2687 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2688 (ptr as *mut u16).write_unaligned(0);
2689 }
2690 self.0.encode(encoder, offset + 0, depth)?;
2692 self.1.encode(encoder, offset + 2, depth)?;
2693 self.2.encode(encoder, offset + 10, depth)?;
2694 self.3.encode(encoder, offset + 18, depth)?;
2695 self.4.encode(encoder, offset + 26, depth)?;
2696 Ok(())
2697 }
2698 }
2699
2700 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanWmmParameters {
2701 #[inline(always)]
2702 fn new_empty() -> Self {
2703 Self {
2704 apsd: fidl::new_empty!(bool, D),
2705 ac_be_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2706 ac_bk_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2707 ac_vi_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2708 ac_vo_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2709 }
2710 }
2711
2712 #[inline]
2713 unsafe fn decode(
2714 &mut self,
2715 decoder: &mut fidl::encoding::Decoder<'_, D>,
2716 offset: usize,
2717 _depth: fidl::encoding::Depth,
2718 ) -> fidl::Result<()> {
2719 decoder.debug_check_bounds::<Self>(offset);
2720 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2722 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2723 let mask = 0xff00u16;
2724 let maskedval = padval & mask;
2725 if maskedval != 0 {
2726 return Err(fidl::Error::NonZeroPadding {
2727 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2728 });
2729 }
2730 fidl::decode!(bool, D, &mut self.apsd, decoder, offset + 0, _depth)?;
2731 fidl::decode!(
2732 WlanWmmAccessCategoryParameters,
2733 D,
2734 &mut self.ac_be_params,
2735 decoder,
2736 offset + 2,
2737 _depth
2738 )?;
2739 fidl::decode!(
2740 WlanWmmAccessCategoryParameters,
2741 D,
2742 &mut self.ac_bk_params,
2743 decoder,
2744 offset + 10,
2745 _depth
2746 )?;
2747 fidl::decode!(
2748 WlanWmmAccessCategoryParameters,
2749 D,
2750 &mut self.ac_vi_params,
2751 decoder,
2752 offset + 18,
2753 _depth
2754 )?;
2755 fidl::decode!(
2756 WlanWmmAccessCategoryParameters,
2757 D,
2758 &mut self.ac_vo_params,
2759 decoder,
2760 offset + 26,
2761 _depth
2762 )?;
2763 Ok(())
2764 }
2765 }
2766
2767 impl DataPlaneExtension {
2768 #[inline(always)]
2769 fn max_ordinal_present(&self) -> u64 {
2770 if let Some(_) = self.data_plane_type {
2771 return 1;
2772 }
2773 0
2774 }
2775 }
2776
2777 impl fidl::encoding::ValueTypeMarker for DataPlaneExtension {
2778 type Borrowed<'a> = &'a Self;
2779 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2780 value
2781 }
2782 }
2783
2784 unsafe impl fidl::encoding::TypeMarker for DataPlaneExtension {
2785 type Owned = Self;
2786
2787 #[inline(always)]
2788 fn inline_align(_context: fidl::encoding::Context) -> usize {
2789 8
2790 }
2791
2792 #[inline(always)]
2793 fn inline_size(_context: fidl::encoding::Context) -> usize {
2794 16
2795 }
2796 }
2797
2798 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataPlaneExtension, D>
2799 for &DataPlaneExtension
2800 {
2801 unsafe fn encode(
2802 self,
2803 encoder: &mut fidl::encoding::Encoder<'_, D>,
2804 offset: usize,
2805 mut depth: fidl::encoding::Depth,
2806 ) -> fidl::Result<()> {
2807 encoder.debug_check_bounds::<DataPlaneExtension>(offset);
2808 let max_ordinal: u64 = self.max_ordinal_present();
2810 encoder.write_num(max_ordinal, offset);
2811 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2812 if max_ordinal == 0 {
2814 return Ok(());
2815 }
2816 depth.increment()?;
2817 let envelope_size = 8;
2818 let bytes_len = max_ordinal as usize * envelope_size;
2819 #[allow(unused_variables)]
2820 let offset = encoder.out_of_line_offset(bytes_len);
2821 let mut _prev_end_offset: usize = 0;
2822 if 1 > max_ordinal {
2823 return Ok(());
2824 }
2825
2826 let cur_offset: usize = (1 - 1) * envelope_size;
2829
2830 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2832
2833 fidl::encoding::encode_in_envelope_optional::<DataPlaneType, D>(
2838 self.data_plane_type
2839 .as_ref()
2840 .map(<DataPlaneType as fidl::encoding::ValueTypeMarker>::borrow),
2841 encoder,
2842 offset + cur_offset,
2843 depth,
2844 )?;
2845
2846 _prev_end_offset = cur_offset + envelope_size;
2847
2848 Ok(())
2849 }
2850 }
2851
2852 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneExtension {
2853 #[inline(always)]
2854 fn new_empty() -> Self {
2855 Self::default()
2856 }
2857
2858 unsafe fn decode(
2859 &mut self,
2860 decoder: &mut fidl::encoding::Decoder<'_, D>,
2861 offset: usize,
2862 mut depth: fidl::encoding::Depth,
2863 ) -> fidl::Result<()> {
2864 decoder.debug_check_bounds::<Self>(offset);
2865 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2866 None => return Err(fidl::Error::NotNullable),
2867 Some(len) => len,
2868 };
2869 if len == 0 {
2871 return Ok(());
2872 };
2873 depth.increment()?;
2874 let envelope_size = 8;
2875 let bytes_len = len * envelope_size;
2876 let offset = decoder.out_of_line_offset(bytes_len)?;
2877 let mut _next_ordinal_to_read = 0;
2879 let mut next_offset = offset;
2880 let end_offset = offset + bytes_len;
2881 _next_ordinal_to_read += 1;
2882 if next_offset >= end_offset {
2883 return Ok(());
2884 }
2885
2886 while _next_ordinal_to_read < 1 {
2888 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2889 _next_ordinal_to_read += 1;
2890 next_offset += envelope_size;
2891 }
2892
2893 let next_out_of_line = decoder.next_out_of_line();
2894 let handles_before = decoder.remaining_handles();
2895 if let Some((inlined, num_bytes, num_handles)) =
2896 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2897 {
2898 let member_inline_size =
2899 <DataPlaneType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2900 if inlined != (member_inline_size <= 4) {
2901 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2902 }
2903 let inner_offset;
2904 let mut inner_depth = depth.clone();
2905 if inlined {
2906 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2907 inner_offset = next_offset;
2908 } else {
2909 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2910 inner_depth.increment()?;
2911 }
2912 let val_ref =
2913 self.data_plane_type.get_or_insert_with(|| fidl::new_empty!(DataPlaneType, D));
2914 fidl::decode!(DataPlaneType, D, val_ref, decoder, inner_offset, inner_depth)?;
2915 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2916 {
2917 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2918 }
2919 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2920 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2921 }
2922 }
2923
2924 next_offset += envelope_size;
2925
2926 while next_offset < end_offset {
2928 _next_ordinal_to_read += 1;
2929 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2930 next_offset += envelope_size;
2931 }
2932
2933 Ok(())
2934 }
2935 }
2936
2937 impl DeviceExtension {
2938 #[inline(always)]
2939 fn max_ordinal_present(&self) -> u64 {
2940 if let Some(_) = self.tx_status_report_supported {
2941 return 3;
2942 }
2943 if let Some(_) = self.mac_implementation_type {
2944 return 2;
2945 }
2946 if let Some(_) = self.is_synthetic {
2947 return 1;
2948 }
2949 0
2950 }
2951 }
2952
2953 impl fidl::encoding::ValueTypeMarker for DeviceExtension {
2954 type Borrowed<'a> = &'a Self;
2955 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2956 value
2957 }
2958 }
2959
2960 unsafe impl fidl::encoding::TypeMarker for DeviceExtension {
2961 type Owned = Self;
2962
2963 #[inline(always)]
2964 fn inline_align(_context: fidl::encoding::Context) -> usize {
2965 8
2966 }
2967
2968 #[inline(always)]
2969 fn inline_size(_context: fidl::encoding::Context) -> usize {
2970 16
2971 }
2972 }
2973
2974 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceExtension, D>
2975 for &DeviceExtension
2976 {
2977 unsafe fn encode(
2978 self,
2979 encoder: &mut fidl::encoding::Encoder<'_, D>,
2980 offset: usize,
2981 mut depth: fidl::encoding::Depth,
2982 ) -> fidl::Result<()> {
2983 encoder.debug_check_bounds::<DeviceExtension>(offset);
2984 let max_ordinal: u64 = self.max_ordinal_present();
2986 encoder.write_num(max_ordinal, offset);
2987 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2988 if max_ordinal == 0 {
2990 return Ok(());
2991 }
2992 depth.increment()?;
2993 let envelope_size = 8;
2994 let bytes_len = max_ordinal as usize * envelope_size;
2995 #[allow(unused_variables)]
2996 let offset = encoder.out_of_line_offset(bytes_len);
2997 let mut _prev_end_offset: usize = 0;
2998 if 1 > max_ordinal {
2999 return Ok(());
3000 }
3001
3002 let cur_offset: usize = (1 - 1) * envelope_size;
3005
3006 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3008
3009 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3014 self.is_synthetic.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3015 encoder,
3016 offset + cur_offset,
3017 depth,
3018 )?;
3019
3020 _prev_end_offset = cur_offset + envelope_size;
3021 if 2 > max_ordinal {
3022 return Ok(());
3023 }
3024
3025 let cur_offset: usize = (2 - 1) * envelope_size;
3028
3029 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3031
3032 fidl::encoding::encode_in_envelope_optional::<MacImplementationType, D>(
3037 self.mac_implementation_type
3038 .as_ref()
3039 .map(<MacImplementationType as fidl::encoding::ValueTypeMarker>::borrow),
3040 encoder,
3041 offset + cur_offset,
3042 depth,
3043 )?;
3044
3045 _prev_end_offset = cur_offset + envelope_size;
3046 if 3 > max_ordinal {
3047 return Ok(());
3048 }
3049
3050 let cur_offset: usize = (3 - 1) * envelope_size;
3053
3054 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3056
3057 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3062 self.tx_status_report_supported
3063 .as_ref()
3064 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3065 encoder,
3066 offset + cur_offset,
3067 depth,
3068 )?;
3069
3070 _prev_end_offset = cur_offset + envelope_size;
3071
3072 Ok(())
3073 }
3074 }
3075
3076 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceExtension {
3077 #[inline(always)]
3078 fn new_empty() -> Self {
3079 Self::default()
3080 }
3081
3082 unsafe fn decode(
3083 &mut self,
3084 decoder: &mut fidl::encoding::Decoder<'_, D>,
3085 offset: usize,
3086 mut depth: fidl::encoding::Depth,
3087 ) -> fidl::Result<()> {
3088 decoder.debug_check_bounds::<Self>(offset);
3089 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3090 None => return Err(fidl::Error::NotNullable),
3091 Some(len) => len,
3092 };
3093 if len == 0 {
3095 return Ok(());
3096 };
3097 depth.increment()?;
3098 let envelope_size = 8;
3099 let bytes_len = len * envelope_size;
3100 let offset = decoder.out_of_line_offset(bytes_len)?;
3101 let mut _next_ordinal_to_read = 0;
3103 let mut next_offset = offset;
3104 let end_offset = offset + bytes_len;
3105 _next_ordinal_to_read += 1;
3106 if next_offset >= end_offset {
3107 return Ok(());
3108 }
3109
3110 while _next_ordinal_to_read < 1 {
3112 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3113 _next_ordinal_to_read += 1;
3114 next_offset += envelope_size;
3115 }
3116
3117 let next_out_of_line = decoder.next_out_of_line();
3118 let handles_before = decoder.remaining_handles();
3119 if let Some((inlined, num_bytes, num_handles)) =
3120 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3121 {
3122 let member_inline_size =
3123 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3124 if inlined != (member_inline_size <= 4) {
3125 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3126 }
3127 let inner_offset;
3128 let mut inner_depth = depth.clone();
3129 if inlined {
3130 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3131 inner_offset = next_offset;
3132 } else {
3133 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3134 inner_depth.increment()?;
3135 }
3136 let val_ref = self.is_synthetic.get_or_insert_with(|| fidl::new_empty!(bool, D));
3137 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3138 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3139 {
3140 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3141 }
3142 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3143 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3144 }
3145 }
3146
3147 next_offset += envelope_size;
3148 _next_ordinal_to_read += 1;
3149 if next_offset >= end_offset {
3150 return Ok(());
3151 }
3152
3153 while _next_ordinal_to_read < 2 {
3155 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3156 _next_ordinal_to_read += 1;
3157 next_offset += envelope_size;
3158 }
3159
3160 let next_out_of_line = decoder.next_out_of_line();
3161 let handles_before = decoder.remaining_handles();
3162 if let Some((inlined, num_bytes, num_handles)) =
3163 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3164 {
3165 let member_inline_size =
3166 <MacImplementationType as fidl::encoding::TypeMarker>::inline_size(
3167 decoder.context,
3168 );
3169 if inlined != (member_inline_size <= 4) {
3170 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3171 }
3172 let inner_offset;
3173 let mut inner_depth = depth.clone();
3174 if inlined {
3175 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3176 inner_offset = next_offset;
3177 } else {
3178 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3179 inner_depth.increment()?;
3180 }
3181 let val_ref = self
3182 .mac_implementation_type
3183 .get_or_insert_with(|| fidl::new_empty!(MacImplementationType, D));
3184 fidl::decode!(
3185 MacImplementationType,
3186 D,
3187 val_ref,
3188 decoder,
3189 inner_offset,
3190 inner_depth
3191 )?;
3192 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3193 {
3194 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3195 }
3196 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3197 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3198 }
3199 }
3200
3201 next_offset += envelope_size;
3202 _next_ordinal_to_read += 1;
3203 if next_offset >= end_offset {
3204 return Ok(());
3205 }
3206
3207 while _next_ordinal_to_read < 3 {
3209 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3210 _next_ordinal_to_read += 1;
3211 next_offset += envelope_size;
3212 }
3213
3214 let next_out_of_line = decoder.next_out_of_line();
3215 let handles_before = decoder.remaining_handles();
3216 if let Some((inlined, num_bytes, num_handles)) =
3217 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3218 {
3219 let member_inline_size =
3220 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3221 if inlined != (member_inline_size <= 4) {
3222 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3223 }
3224 let inner_offset;
3225 let mut inner_depth = depth.clone();
3226 if inlined {
3227 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3228 inner_offset = next_offset;
3229 } else {
3230 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3231 inner_depth.increment()?;
3232 }
3233 let val_ref = self
3234 .tx_status_report_supported
3235 .get_or_insert_with(|| fidl::new_empty!(bool, D));
3236 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3237 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3238 {
3239 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3240 }
3241 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3242 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3243 }
3244 }
3245
3246 next_offset += envelope_size;
3247
3248 while next_offset < end_offset {
3250 _next_ordinal_to_read += 1;
3251 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3252 next_offset += envelope_size;
3253 }
3254
3255 Ok(())
3256 }
3257 }
3258
3259 impl DfsFeature {
3260 #[inline(always)]
3261 fn max_ordinal_present(&self) -> u64 {
3262 if let Some(_) = self.supported {
3263 return 1;
3264 }
3265 0
3266 }
3267 }
3268
3269 impl fidl::encoding::ValueTypeMarker for DfsFeature {
3270 type Borrowed<'a> = &'a Self;
3271 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3272 value
3273 }
3274 }
3275
3276 unsafe impl fidl::encoding::TypeMarker for DfsFeature {
3277 type Owned = Self;
3278
3279 #[inline(always)]
3280 fn inline_align(_context: fidl::encoding::Context) -> usize {
3281 8
3282 }
3283
3284 #[inline(always)]
3285 fn inline_size(_context: fidl::encoding::Context) -> usize {
3286 16
3287 }
3288 }
3289
3290 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DfsFeature, D>
3291 for &DfsFeature
3292 {
3293 unsafe fn encode(
3294 self,
3295 encoder: &mut fidl::encoding::Encoder<'_, D>,
3296 offset: usize,
3297 mut depth: fidl::encoding::Depth,
3298 ) -> fidl::Result<()> {
3299 encoder.debug_check_bounds::<DfsFeature>(offset);
3300 let max_ordinal: u64 = self.max_ordinal_present();
3302 encoder.write_num(max_ordinal, offset);
3303 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3304 if max_ordinal == 0 {
3306 return Ok(());
3307 }
3308 depth.increment()?;
3309 let envelope_size = 8;
3310 let bytes_len = max_ordinal as usize * envelope_size;
3311 #[allow(unused_variables)]
3312 let offset = encoder.out_of_line_offset(bytes_len);
3313 let mut _prev_end_offset: usize = 0;
3314 if 1 > max_ordinal {
3315 return Ok(());
3316 }
3317
3318 let cur_offset: usize = (1 - 1) * envelope_size;
3321
3322 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3324
3325 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3330 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3331 encoder,
3332 offset + cur_offset,
3333 depth,
3334 )?;
3335
3336 _prev_end_offset = cur_offset + envelope_size;
3337
3338 Ok(())
3339 }
3340 }
3341
3342 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DfsFeature {
3343 #[inline(always)]
3344 fn new_empty() -> Self {
3345 Self::default()
3346 }
3347
3348 unsafe fn decode(
3349 &mut self,
3350 decoder: &mut fidl::encoding::Decoder<'_, D>,
3351 offset: usize,
3352 mut depth: fidl::encoding::Depth,
3353 ) -> fidl::Result<()> {
3354 decoder.debug_check_bounds::<Self>(offset);
3355 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3356 None => return Err(fidl::Error::NotNullable),
3357 Some(len) => len,
3358 };
3359 if len == 0 {
3361 return Ok(());
3362 };
3363 depth.increment()?;
3364 let envelope_size = 8;
3365 let bytes_len = len * envelope_size;
3366 let offset = decoder.out_of_line_offset(bytes_len)?;
3367 let mut _next_ordinal_to_read = 0;
3369 let mut next_offset = offset;
3370 let end_offset = offset + bytes_len;
3371 _next_ordinal_to_read += 1;
3372 if next_offset >= end_offset {
3373 return Ok(());
3374 }
3375
3376 while _next_ordinal_to_read < 1 {
3378 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3379 _next_ordinal_to_read += 1;
3380 next_offset += envelope_size;
3381 }
3382
3383 let next_out_of_line = decoder.next_out_of_line();
3384 let handles_before = decoder.remaining_handles();
3385 if let Some((inlined, num_bytes, num_handles)) =
3386 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3387 {
3388 let member_inline_size =
3389 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3390 if inlined != (member_inline_size <= 4) {
3391 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3392 }
3393 let inner_offset;
3394 let mut inner_depth = depth.clone();
3395 if inlined {
3396 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3397 inner_offset = next_offset;
3398 } else {
3399 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3400 inner_depth.increment()?;
3401 }
3402 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
3403 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3404 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3405 {
3406 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3407 }
3408 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3409 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3410 }
3411 }
3412
3413 next_offset += envelope_size;
3414
3415 while next_offset < end_offset {
3417 _next_ordinal_to_read += 1;
3418 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3419 next_offset += envelope_size;
3420 }
3421
3422 Ok(())
3423 }
3424 }
3425
3426 impl DiscoverySupport {
3427 #[inline(always)]
3428 fn max_ordinal_present(&self) -> u64 {
3429 if let Some(_) = self.probe_response_offload {
3430 return 2;
3431 }
3432 if let Some(_) = self.scan_offload {
3433 return 1;
3434 }
3435 0
3436 }
3437 }
3438
3439 impl fidl::encoding::ValueTypeMarker for DiscoverySupport {
3440 type Borrowed<'a> = &'a Self;
3441 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3442 value
3443 }
3444 }
3445
3446 unsafe impl fidl::encoding::TypeMarker for DiscoverySupport {
3447 type Owned = Self;
3448
3449 #[inline(always)]
3450 fn inline_align(_context: fidl::encoding::Context) -> usize {
3451 8
3452 }
3453
3454 #[inline(always)]
3455 fn inline_size(_context: fidl::encoding::Context) -> usize {
3456 16
3457 }
3458 }
3459
3460 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DiscoverySupport, D>
3461 for &DiscoverySupport
3462 {
3463 unsafe fn encode(
3464 self,
3465 encoder: &mut fidl::encoding::Encoder<'_, D>,
3466 offset: usize,
3467 mut depth: fidl::encoding::Depth,
3468 ) -> fidl::Result<()> {
3469 encoder.debug_check_bounds::<DiscoverySupport>(offset);
3470 let max_ordinal: u64 = self.max_ordinal_present();
3472 encoder.write_num(max_ordinal, offset);
3473 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3474 if max_ordinal == 0 {
3476 return Ok(());
3477 }
3478 depth.increment()?;
3479 let envelope_size = 8;
3480 let bytes_len = max_ordinal as usize * envelope_size;
3481 #[allow(unused_variables)]
3482 let offset = encoder.out_of_line_offset(bytes_len);
3483 let mut _prev_end_offset: usize = 0;
3484 if 1 > max_ordinal {
3485 return Ok(());
3486 }
3487
3488 let cur_offset: usize = (1 - 1) * envelope_size;
3491
3492 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3494
3495 fidl::encoding::encode_in_envelope_optional::<ScanOffloadExtension, D>(
3500 self.scan_offload
3501 .as_ref()
3502 .map(<ScanOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow),
3503 encoder,
3504 offset + cur_offset,
3505 depth,
3506 )?;
3507
3508 _prev_end_offset = cur_offset + envelope_size;
3509 if 2 > max_ordinal {
3510 return Ok(());
3511 }
3512
3513 let cur_offset: usize = (2 - 1) * envelope_size;
3516
3517 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3519
3520 fidl::encoding::encode_in_envelope_optional::<ProbeResponseOffloadExtension, D>(
3525 self.probe_response_offload.as_ref().map(
3526 <ProbeResponseOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
3527 ),
3528 encoder,
3529 offset + cur_offset,
3530 depth,
3531 )?;
3532
3533 _prev_end_offset = cur_offset + envelope_size;
3534
3535 Ok(())
3536 }
3537 }
3538
3539 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DiscoverySupport {
3540 #[inline(always)]
3541 fn new_empty() -> Self {
3542 Self::default()
3543 }
3544
3545 unsafe fn decode(
3546 &mut self,
3547 decoder: &mut fidl::encoding::Decoder<'_, D>,
3548 offset: usize,
3549 mut depth: fidl::encoding::Depth,
3550 ) -> fidl::Result<()> {
3551 decoder.debug_check_bounds::<Self>(offset);
3552 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3553 None => return Err(fidl::Error::NotNullable),
3554 Some(len) => len,
3555 };
3556 if len == 0 {
3558 return Ok(());
3559 };
3560 depth.increment()?;
3561 let envelope_size = 8;
3562 let bytes_len = len * envelope_size;
3563 let offset = decoder.out_of_line_offset(bytes_len)?;
3564 let mut _next_ordinal_to_read = 0;
3566 let mut next_offset = offset;
3567 let end_offset = offset + bytes_len;
3568 _next_ordinal_to_read += 1;
3569 if next_offset >= end_offset {
3570 return Ok(());
3571 }
3572
3573 while _next_ordinal_to_read < 1 {
3575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3576 _next_ordinal_to_read += 1;
3577 next_offset += envelope_size;
3578 }
3579
3580 let next_out_of_line = decoder.next_out_of_line();
3581 let handles_before = decoder.remaining_handles();
3582 if let Some((inlined, num_bytes, num_handles)) =
3583 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3584 {
3585 let member_inline_size =
3586 <ScanOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3587 decoder.context,
3588 );
3589 if inlined != (member_inline_size <= 4) {
3590 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3591 }
3592 let inner_offset;
3593 let mut inner_depth = depth.clone();
3594 if inlined {
3595 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3596 inner_offset = next_offset;
3597 } else {
3598 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3599 inner_depth.increment()?;
3600 }
3601 let val_ref = self
3602 .scan_offload
3603 .get_or_insert_with(|| fidl::new_empty!(ScanOffloadExtension, D));
3604 fidl::decode!(
3605 ScanOffloadExtension,
3606 D,
3607 val_ref,
3608 decoder,
3609 inner_offset,
3610 inner_depth
3611 )?;
3612 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3613 {
3614 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3615 }
3616 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3617 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3618 }
3619 }
3620
3621 next_offset += envelope_size;
3622 _next_ordinal_to_read += 1;
3623 if next_offset >= end_offset {
3624 return Ok(());
3625 }
3626
3627 while _next_ordinal_to_read < 2 {
3629 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3630 _next_ordinal_to_read += 1;
3631 next_offset += envelope_size;
3632 }
3633
3634 let next_out_of_line = decoder.next_out_of_line();
3635 let handles_before = decoder.remaining_handles();
3636 if let Some((inlined, num_bytes, num_handles)) =
3637 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3638 {
3639 let member_inline_size =
3640 <ProbeResponseOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3641 decoder.context,
3642 );
3643 if inlined != (member_inline_size <= 4) {
3644 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3645 }
3646 let inner_offset;
3647 let mut inner_depth = depth.clone();
3648 if inlined {
3649 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3650 inner_offset = next_offset;
3651 } else {
3652 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3653 inner_depth.increment()?;
3654 }
3655 let val_ref = self
3656 .probe_response_offload
3657 .get_or_insert_with(|| fidl::new_empty!(ProbeResponseOffloadExtension, D));
3658 fidl::decode!(
3659 ProbeResponseOffloadExtension,
3660 D,
3661 val_ref,
3662 decoder,
3663 inner_offset,
3664 inner_depth
3665 )?;
3666 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3667 {
3668 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3669 }
3670 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3671 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3672 }
3673 }
3674
3675 next_offset += envelope_size;
3676
3677 while next_offset < end_offset {
3679 _next_ordinal_to_read += 1;
3680 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3681 next_offset += envelope_size;
3682 }
3683
3684 Ok(())
3685 }
3686 }
3687
3688 impl JoinBssRequest {
3689 #[inline(always)]
3690 fn max_ordinal_present(&self) -> u64 {
3691 if let Some(_) = self.beacon_period {
3692 return 4;
3693 }
3694 if let Some(_) = self.remote {
3695 return 3;
3696 }
3697 if let Some(_) = self.bss_type {
3698 return 2;
3699 }
3700 if let Some(_) = self.bssid {
3701 return 1;
3702 }
3703 0
3704 }
3705 }
3706
3707 impl fidl::encoding::ValueTypeMarker for JoinBssRequest {
3708 type Borrowed<'a> = &'a Self;
3709 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3710 value
3711 }
3712 }
3713
3714 unsafe impl fidl::encoding::TypeMarker for JoinBssRequest {
3715 type Owned = Self;
3716
3717 #[inline(always)]
3718 fn inline_align(_context: fidl::encoding::Context) -> usize {
3719 8
3720 }
3721
3722 #[inline(always)]
3723 fn inline_size(_context: fidl::encoding::Context) -> usize {
3724 16
3725 }
3726 }
3727
3728 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinBssRequest, D>
3729 for &JoinBssRequest
3730 {
3731 unsafe fn encode(
3732 self,
3733 encoder: &mut fidl::encoding::Encoder<'_, D>,
3734 offset: usize,
3735 mut depth: fidl::encoding::Depth,
3736 ) -> fidl::Result<()> {
3737 encoder.debug_check_bounds::<JoinBssRequest>(offset);
3738 let max_ordinal: u64 = self.max_ordinal_present();
3740 encoder.write_num(max_ordinal, offset);
3741 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3742 if max_ordinal == 0 {
3744 return Ok(());
3745 }
3746 depth.increment()?;
3747 let envelope_size = 8;
3748 let bytes_len = max_ordinal as usize * envelope_size;
3749 #[allow(unused_variables)]
3750 let offset = encoder.out_of_line_offset(bytes_len);
3751 let mut _prev_end_offset: usize = 0;
3752 if 1 > max_ordinal {
3753 return Ok(());
3754 }
3755
3756 let cur_offset: usize = (1 - 1) * envelope_size;
3759
3760 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3762
3763 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3768 self.bssid
3769 .as_ref()
3770 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3771 encoder,
3772 offset + cur_offset,
3773 depth,
3774 )?;
3775
3776 _prev_end_offset = cur_offset + envelope_size;
3777 if 2 > max_ordinal {
3778 return Ok(());
3779 }
3780
3781 let cur_offset: usize = (2 - 1) * envelope_size;
3784
3785 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3787
3788 fidl::encoding::encode_in_envelope_optional::<BssType, D>(
3793 self.bss_type.as_ref().map(<BssType as fidl::encoding::ValueTypeMarker>::borrow),
3794 encoder,
3795 offset + cur_offset,
3796 depth,
3797 )?;
3798
3799 _prev_end_offset = cur_offset + envelope_size;
3800 if 3 > max_ordinal {
3801 return Ok(());
3802 }
3803
3804 let cur_offset: usize = (3 - 1) * envelope_size;
3807
3808 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3810
3811 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3816 self.remote.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3817 encoder,
3818 offset + cur_offset,
3819 depth,
3820 )?;
3821
3822 _prev_end_offset = cur_offset + envelope_size;
3823 if 4 > max_ordinal {
3824 return Ok(());
3825 }
3826
3827 let cur_offset: usize = (4 - 1) * envelope_size;
3830
3831 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3833
3834 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3839 self.beacon_period.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3840 encoder,
3841 offset + cur_offset,
3842 depth,
3843 )?;
3844
3845 _prev_end_offset = cur_offset + envelope_size;
3846
3847 Ok(())
3848 }
3849 }
3850
3851 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinBssRequest {
3852 #[inline(always)]
3853 fn new_empty() -> Self {
3854 Self::default()
3855 }
3856
3857 unsafe fn decode(
3858 &mut self,
3859 decoder: &mut fidl::encoding::Decoder<'_, D>,
3860 offset: usize,
3861 mut depth: fidl::encoding::Depth,
3862 ) -> fidl::Result<()> {
3863 decoder.debug_check_bounds::<Self>(offset);
3864 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3865 None => return Err(fidl::Error::NotNullable),
3866 Some(len) => len,
3867 };
3868 if len == 0 {
3870 return Ok(());
3871 };
3872 depth.increment()?;
3873 let envelope_size = 8;
3874 let bytes_len = len * envelope_size;
3875 let offset = decoder.out_of_line_offset(bytes_len)?;
3876 let mut _next_ordinal_to_read = 0;
3878 let mut next_offset = offset;
3879 let end_offset = offset + bytes_len;
3880 _next_ordinal_to_read += 1;
3881 if next_offset >= end_offset {
3882 return Ok(());
3883 }
3884
3885 while _next_ordinal_to_read < 1 {
3887 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3888 _next_ordinal_to_read += 1;
3889 next_offset += envelope_size;
3890 }
3891
3892 let next_out_of_line = decoder.next_out_of_line();
3893 let handles_before = decoder.remaining_handles();
3894 if let Some((inlined, num_bytes, num_handles)) =
3895 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3896 {
3897 let member_inline_size =
3898 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3899 decoder.context,
3900 );
3901 if inlined != (member_inline_size <= 4) {
3902 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3903 }
3904 let inner_offset;
3905 let mut inner_depth = depth.clone();
3906 if inlined {
3907 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3908 inner_offset = next_offset;
3909 } else {
3910 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3911 inner_depth.increment()?;
3912 }
3913 let val_ref = self
3914 .bssid
3915 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3916 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3917 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3918 {
3919 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3920 }
3921 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3922 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3923 }
3924 }
3925
3926 next_offset += envelope_size;
3927 _next_ordinal_to_read += 1;
3928 if next_offset >= end_offset {
3929 return Ok(());
3930 }
3931
3932 while _next_ordinal_to_read < 2 {
3934 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3935 _next_ordinal_to_read += 1;
3936 next_offset += envelope_size;
3937 }
3938
3939 let next_out_of_line = decoder.next_out_of_line();
3940 let handles_before = decoder.remaining_handles();
3941 if let Some((inlined, num_bytes, num_handles)) =
3942 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3943 {
3944 let member_inline_size =
3945 <BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3946 if inlined != (member_inline_size <= 4) {
3947 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3948 }
3949 let inner_offset;
3950 let mut inner_depth = depth.clone();
3951 if inlined {
3952 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3953 inner_offset = next_offset;
3954 } else {
3955 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3956 inner_depth.increment()?;
3957 }
3958 let val_ref = self.bss_type.get_or_insert_with(|| fidl::new_empty!(BssType, D));
3959 fidl::decode!(BssType, D, val_ref, decoder, inner_offset, inner_depth)?;
3960 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3961 {
3962 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3963 }
3964 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3965 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3966 }
3967 }
3968
3969 next_offset += envelope_size;
3970 _next_ordinal_to_read += 1;
3971 if next_offset >= end_offset {
3972 return Ok(());
3973 }
3974
3975 while _next_ordinal_to_read < 3 {
3977 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3978 _next_ordinal_to_read += 1;
3979 next_offset += envelope_size;
3980 }
3981
3982 let next_out_of_line = decoder.next_out_of_line();
3983 let handles_before = decoder.remaining_handles();
3984 if let Some((inlined, num_bytes, num_handles)) =
3985 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3986 {
3987 let member_inline_size =
3988 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3989 if inlined != (member_inline_size <= 4) {
3990 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3991 }
3992 let inner_offset;
3993 let mut inner_depth = depth.clone();
3994 if inlined {
3995 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3996 inner_offset = next_offset;
3997 } else {
3998 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3999 inner_depth.increment()?;
4000 }
4001 let val_ref = self.remote.get_or_insert_with(|| fidl::new_empty!(bool, D));
4002 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4003 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4004 {
4005 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4006 }
4007 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4008 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4009 }
4010 }
4011
4012 next_offset += envelope_size;
4013 _next_ordinal_to_read += 1;
4014 if next_offset >= end_offset {
4015 return Ok(());
4016 }
4017
4018 while _next_ordinal_to_read < 4 {
4020 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4021 _next_ordinal_to_read += 1;
4022 next_offset += envelope_size;
4023 }
4024
4025 let next_out_of_line = decoder.next_out_of_line();
4026 let handles_before = decoder.remaining_handles();
4027 if let Some((inlined, num_bytes, num_handles)) =
4028 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4029 {
4030 let member_inline_size =
4031 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4032 if inlined != (member_inline_size <= 4) {
4033 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4034 }
4035 let inner_offset;
4036 let mut inner_depth = depth.clone();
4037 if inlined {
4038 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4039 inner_offset = next_offset;
4040 } else {
4041 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4042 inner_depth.increment()?;
4043 }
4044 let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u16, D));
4045 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4046 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4047 {
4048 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4049 }
4050 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4051 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4052 }
4053 }
4054
4055 next_offset += envelope_size;
4056
4057 while next_offset < end_offset {
4059 _next_ordinal_to_read += 1;
4060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4061 next_offset += envelope_size;
4062 }
4063
4064 Ok(())
4065 }
4066 }
4067
4068 impl MacSublayerSupport {
4069 #[inline(always)]
4070 fn max_ordinal_present(&self) -> u64 {
4071 if let Some(_) = self.device {
4072 return 3;
4073 }
4074 if let Some(_) = self.data_plane {
4075 return 2;
4076 }
4077 if let Some(_) = self.rate_selection_offload {
4078 return 1;
4079 }
4080 0
4081 }
4082 }
4083
4084 impl fidl::encoding::ValueTypeMarker for MacSublayerSupport {
4085 type Borrowed<'a> = &'a Self;
4086 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4087 value
4088 }
4089 }
4090
4091 unsafe impl fidl::encoding::TypeMarker for MacSublayerSupport {
4092 type Owned = Self;
4093
4094 #[inline(always)]
4095 fn inline_align(_context: fidl::encoding::Context) -> usize {
4096 8
4097 }
4098
4099 #[inline(always)]
4100 fn inline_size(_context: fidl::encoding::Context) -> usize {
4101 16
4102 }
4103 }
4104
4105 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacSublayerSupport, D>
4106 for &MacSublayerSupport
4107 {
4108 unsafe fn encode(
4109 self,
4110 encoder: &mut fidl::encoding::Encoder<'_, D>,
4111 offset: usize,
4112 mut depth: fidl::encoding::Depth,
4113 ) -> fidl::Result<()> {
4114 encoder.debug_check_bounds::<MacSublayerSupport>(offset);
4115 let max_ordinal: u64 = self.max_ordinal_present();
4117 encoder.write_num(max_ordinal, offset);
4118 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4119 if max_ordinal == 0 {
4121 return Ok(());
4122 }
4123 depth.increment()?;
4124 let envelope_size = 8;
4125 let bytes_len = max_ordinal as usize * envelope_size;
4126 #[allow(unused_variables)]
4127 let offset = encoder.out_of_line_offset(bytes_len);
4128 let mut _prev_end_offset: usize = 0;
4129 if 1 > max_ordinal {
4130 return Ok(());
4131 }
4132
4133 let cur_offset: usize = (1 - 1) * envelope_size;
4136
4137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4139
4140 fidl::encoding::encode_in_envelope_optional::<RateSelectionOffloadExtension, D>(
4145 self.rate_selection_offload.as_ref().map(
4146 <RateSelectionOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
4147 ),
4148 encoder,
4149 offset + cur_offset,
4150 depth,
4151 )?;
4152
4153 _prev_end_offset = cur_offset + envelope_size;
4154 if 2 > max_ordinal {
4155 return Ok(());
4156 }
4157
4158 let cur_offset: usize = (2 - 1) * envelope_size;
4161
4162 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4164
4165 fidl::encoding::encode_in_envelope_optional::<DataPlaneExtension, D>(
4170 self.data_plane
4171 .as_ref()
4172 .map(<DataPlaneExtension as fidl::encoding::ValueTypeMarker>::borrow),
4173 encoder,
4174 offset + cur_offset,
4175 depth,
4176 )?;
4177
4178 _prev_end_offset = cur_offset + envelope_size;
4179 if 3 > max_ordinal {
4180 return Ok(());
4181 }
4182
4183 let cur_offset: usize = (3 - 1) * envelope_size;
4186
4187 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4189
4190 fidl::encoding::encode_in_envelope_optional::<DeviceExtension, D>(
4195 self.device
4196 .as_ref()
4197 .map(<DeviceExtension as fidl::encoding::ValueTypeMarker>::borrow),
4198 encoder,
4199 offset + cur_offset,
4200 depth,
4201 )?;
4202
4203 _prev_end_offset = cur_offset + envelope_size;
4204
4205 Ok(())
4206 }
4207 }
4208
4209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacSublayerSupport {
4210 #[inline(always)]
4211 fn new_empty() -> Self {
4212 Self::default()
4213 }
4214
4215 unsafe fn decode(
4216 &mut self,
4217 decoder: &mut fidl::encoding::Decoder<'_, D>,
4218 offset: usize,
4219 mut depth: fidl::encoding::Depth,
4220 ) -> fidl::Result<()> {
4221 decoder.debug_check_bounds::<Self>(offset);
4222 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4223 None => return Err(fidl::Error::NotNullable),
4224 Some(len) => len,
4225 };
4226 if len == 0 {
4228 return Ok(());
4229 };
4230 depth.increment()?;
4231 let envelope_size = 8;
4232 let bytes_len = len * envelope_size;
4233 let offset = decoder.out_of_line_offset(bytes_len)?;
4234 let mut _next_ordinal_to_read = 0;
4236 let mut next_offset = offset;
4237 let end_offset = offset + bytes_len;
4238 _next_ordinal_to_read += 1;
4239 if next_offset >= end_offset {
4240 return Ok(());
4241 }
4242
4243 while _next_ordinal_to_read < 1 {
4245 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4246 _next_ordinal_to_read += 1;
4247 next_offset += envelope_size;
4248 }
4249
4250 let next_out_of_line = decoder.next_out_of_line();
4251 let handles_before = decoder.remaining_handles();
4252 if let Some((inlined, num_bytes, num_handles)) =
4253 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4254 {
4255 let member_inline_size =
4256 <RateSelectionOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
4257 decoder.context,
4258 );
4259 if inlined != (member_inline_size <= 4) {
4260 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4261 }
4262 let inner_offset;
4263 let mut inner_depth = depth.clone();
4264 if inlined {
4265 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4266 inner_offset = next_offset;
4267 } else {
4268 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4269 inner_depth.increment()?;
4270 }
4271 let val_ref = self
4272 .rate_selection_offload
4273 .get_or_insert_with(|| fidl::new_empty!(RateSelectionOffloadExtension, D));
4274 fidl::decode!(
4275 RateSelectionOffloadExtension,
4276 D,
4277 val_ref,
4278 decoder,
4279 inner_offset,
4280 inner_depth
4281 )?;
4282 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4283 {
4284 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4285 }
4286 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4287 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4288 }
4289 }
4290
4291 next_offset += envelope_size;
4292 _next_ordinal_to_read += 1;
4293 if next_offset >= end_offset {
4294 return Ok(());
4295 }
4296
4297 while _next_ordinal_to_read < 2 {
4299 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4300 _next_ordinal_to_read += 1;
4301 next_offset += envelope_size;
4302 }
4303
4304 let next_out_of_line = decoder.next_out_of_line();
4305 let handles_before = decoder.remaining_handles();
4306 if let Some((inlined, num_bytes, num_handles)) =
4307 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4308 {
4309 let member_inline_size =
4310 <DataPlaneExtension as fidl::encoding::TypeMarker>::inline_size(
4311 decoder.context,
4312 );
4313 if inlined != (member_inline_size <= 4) {
4314 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4315 }
4316 let inner_offset;
4317 let mut inner_depth = depth.clone();
4318 if inlined {
4319 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4320 inner_offset = next_offset;
4321 } else {
4322 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4323 inner_depth.increment()?;
4324 }
4325 let val_ref =
4326 self.data_plane.get_or_insert_with(|| fidl::new_empty!(DataPlaneExtension, D));
4327 fidl::decode!(DataPlaneExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4328 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4329 {
4330 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4331 }
4332 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4333 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4334 }
4335 }
4336
4337 next_offset += envelope_size;
4338 _next_ordinal_to_read += 1;
4339 if next_offset >= end_offset {
4340 return Ok(());
4341 }
4342
4343 while _next_ordinal_to_read < 3 {
4345 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4346 _next_ordinal_to_read += 1;
4347 next_offset += envelope_size;
4348 }
4349
4350 let next_out_of_line = decoder.next_out_of_line();
4351 let handles_before = decoder.remaining_handles();
4352 if let Some((inlined, num_bytes, num_handles)) =
4353 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4354 {
4355 let member_inline_size =
4356 <DeviceExtension as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4357 if inlined != (member_inline_size <= 4) {
4358 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4359 }
4360 let inner_offset;
4361 let mut inner_depth = depth.clone();
4362 if inlined {
4363 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4364 inner_offset = next_offset;
4365 } else {
4366 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4367 inner_depth.increment()?;
4368 }
4369 let val_ref =
4370 self.device.get_or_insert_with(|| fidl::new_empty!(DeviceExtension, D));
4371 fidl::decode!(DeviceExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4372 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4373 {
4374 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4375 }
4376 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4377 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4378 }
4379 }
4380
4381 next_offset += envelope_size;
4382
4383 while next_offset < end_offset {
4385 _next_ordinal_to_read += 1;
4386 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4387 next_offset += envelope_size;
4388 }
4389
4390 Ok(())
4391 }
4392 }
4393
4394 impl MfpFeature {
4395 #[inline(always)]
4396 fn max_ordinal_present(&self) -> u64 {
4397 if let Some(_) = self.supported {
4398 return 1;
4399 }
4400 0
4401 }
4402 }
4403
4404 impl fidl::encoding::ValueTypeMarker for MfpFeature {
4405 type Borrowed<'a> = &'a Self;
4406 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4407 value
4408 }
4409 }
4410
4411 unsafe impl fidl::encoding::TypeMarker for MfpFeature {
4412 type Owned = Self;
4413
4414 #[inline(always)]
4415 fn inline_align(_context: fidl::encoding::Context) -> usize {
4416 8
4417 }
4418
4419 #[inline(always)]
4420 fn inline_size(_context: fidl::encoding::Context) -> usize {
4421 16
4422 }
4423 }
4424
4425 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MfpFeature, D>
4426 for &MfpFeature
4427 {
4428 unsafe fn encode(
4429 self,
4430 encoder: &mut fidl::encoding::Encoder<'_, D>,
4431 offset: usize,
4432 mut depth: fidl::encoding::Depth,
4433 ) -> fidl::Result<()> {
4434 encoder.debug_check_bounds::<MfpFeature>(offset);
4435 let max_ordinal: u64 = self.max_ordinal_present();
4437 encoder.write_num(max_ordinal, offset);
4438 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4439 if max_ordinal == 0 {
4441 return Ok(());
4442 }
4443 depth.increment()?;
4444 let envelope_size = 8;
4445 let bytes_len = max_ordinal as usize * envelope_size;
4446 #[allow(unused_variables)]
4447 let offset = encoder.out_of_line_offset(bytes_len);
4448 let mut _prev_end_offset: usize = 0;
4449 if 1 > max_ordinal {
4450 return Ok(());
4451 }
4452
4453 let cur_offset: usize = (1 - 1) * envelope_size;
4456
4457 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4459
4460 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4465 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4466 encoder,
4467 offset + cur_offset,
4468 depth,
4469 )?;
4470
4471 _prev_end_offset = cur_offset + envelope_size;
4472
4473 Ok(())
4474 }
4475 }
4476
4477 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MfpFeature {
4478 #[inline(always)]
4479 fn new_empty() -> Self {
4480 Self::default()
4481 }
4482
4483 unsafe fn decode(
4484 &mut self,
4485 decoder: &mut fidl::encoding::Decoder<'_, D>,
4486 offset: usize,
4487 mut depth: fidl::encoding::Depth,
4488 ) -> fidl::Result<()> {
4489 decoder.debug_check_bounds::<Self>(offset);
4490 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4491 None => return Err(fidl::Error::NotNullable),
4492 Some(len) => len,
4493 };
4494 if len == 0 {
4496 return Ok(());
4497 };
4498 depth.increment()?;
4499 let envelope_size = 8;
4500 let bytes_len = len * envelope_size;
4501 let offset = decoder.out_of_line_offset(bytes_len)?;
4502 let mut _next_ordinal_to_read = 0;
4504 let mut next_offset = offset;
4505 let end_offset = offset + bytes_len;
4506 _next_ordinal_to_read += 1;
4507 if next_offset >= end_offset {
4508 return Ok(());
4509 }
4510
4511 while _next_ordinal_to_read < 1 {
4513 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4514 _next_ordinal_to_read += 1;
4515 next_offset += envelope_size;
4516 }
4517
4518 let next_out_of_line = decoder.next_out_of_line();
4519 let handles_before = decoder.remaining_handles();
4520 if let Some((inlined, num_bytes, num_handles)) =
4521 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4522 {
4523 let member_inline_size =
4524 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4525 if inlined != (member_inline_size <= 4) {
4526 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4527 }
4528 let inner_offset;
4529 let mut inner_depth = depth.clone();
4530 if inlined {
4531 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4532 inner_offset = next_offset;
4533 } else {
4534 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4535 inner_depth.increment()?;
4536 }
4537 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4538 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4539 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4540 {
4541 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4542 }
4543 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4544 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4545 }
4546 }
4547
4548 next_offset += envelope_size;
4549
4550 while next_offset < end_offset {
4552 _next_ordinal_to_read += 1;
4553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4554 next_offset += envelope_size;
4555 }
4556
4557 Ok(())
4558 }
4559 }
4560
4561 impl OweFeature {
4562 #[inline(always)]
4563 fn max_ordinal_present(&self) -> u64 {
4564 if let Some(_) = self.supported {
4565 return 1;
4566 }
4567 0
4568 }
4569 }
4570
4571 impl fidl::encoding::ValueTypeMarker for OweFeature {
4572 type Borrowed<'a> = &'a Self;
4573 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4574 value
4575 }
4576 }
4577
4578 unsafe impl fidl::encoding::TypeMarker for OweFeature {
4579 type Owned = Self;
4580
4581 #[inline(always)]
4582 fn inline_align(_context: fidl::encoding::Context) -> usize {
4583 8
4584 }
4585
4586 #[inline(always)]
4587 fn inline_size(_context: fidl::encoding::Context) -> usize {
4588 16
4589 }
4590 }
4591
4592 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OweFeature, D>
4593 for &OweFeature
4594 {
4595 unsafe fn encode(
4596 self,
4597 encoder: &mut fidl::encoding::Encoder<'_, D>,
4598 offset: usize,
4599 mut depth: fidl::encoding::Depth,
4600 ) -> fidl::Result<()> {
4601 encoder.debug_check_bounds::<OweFeature>(offset);
4602 let max_ordinal: u64 = self.max_ordinal_present();
4604 encoder.write_num(max_ordinal, offset);
4605 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4606 if max_ordinal == 0 {
4608 return Ok(());
4609 }
4610 depth.increment()?;
4611 let envelope_size = 8;
4612 let bytes_len = max_ordinal as usize * envelope_size;
4613 #[allow(unused_variables)]
4614 let offset = encoder.out_of_line_offset(bytes_len);
4615 let mut _prev_end_offset: usize = 0;
4616 if 1 > max_ordinal {
4617 return Ok(());
4618 }
4619
4620 let cur_offset: usize = (1 - 1) * envelope_size;
4623
4624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4626
4627 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4632 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4633 encoder,
4634 offset + cur_offset,
4635 depth,
4636 )?;
4637
4638 _prev_end_offset = cur_offset + envelope_size;
4639
4640 Ok(())
4641 }
4642 }
4643
4644 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OweFeature {
4645 #[inline(always)]
4646 fn new_empty() -> Self {
4647 Self::default()
4648 }
4649
4650 unsafe fn decode(
4651 &mut self,
4652 decoder: &mut fidl::encoding::Decoder<'_, D>,
4653 offset: usize,
4654 mut depth: fidl::encoding::Depth,
4655 ) -> fidl::Result<()> {
4656 decoder.debug_check_bounds::<Self>(offset);
4657 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4658 None => return Err(fidl::Error::NotNullable),
4659 Some(len) => len,
4660 };
4661 if len == 0 {
4663 return Ok(());
4664 };
4665 depth.increment()?;
4666 let envelope_size = 8;
4667 let bytes_len = len * envelope_size;
4668 let offset = decoder.out_of_line_offset(bytes_len)?;
4669 let mut _next_ordinal_to_read = 0;
4671 let mut next_offset = offset;
4672 let end_offset = offset + bytes_len;
4673 _next_ordinal_to_read += 1;
4674 if next_offset >= end_offset {
4675 return Ok(());
4676 }
4677
4678 while _next_ordinal_to_read < 1 {
4680 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4681 _next_ordinal_to_read += 1;
4682 next_offset += envelope_size;
4683 }
4684
4685 let next_out_of_line = decoder.next_out_of_line();
4686 let handles_before = decoder.remaining_handles();
4687 if let Some((inlined, num_bytes, num_handles)) =
4688 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4689 {
4690 let member_inline_size =
4691 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4692 if inlined != (member_inline_size <= 4) {
4693 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4694 }
4695 let inner_offset;
4696 let mut inner_depth = depth.clone();
4697 if inlined {
4698 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4699 inner_offset = next_offset;
4700 } else {
4701 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4702 inner_depth.increment()?;
4703 }
4704 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4705 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4706 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4707 {
4708 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4709 }
4710 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4711 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4712 }
4713 }
4714
4715 next_offset += envelope_size;
4716
4717 while next_offset < end_offset {
4719 _next_ordinal_to_read += 1;
4720 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4721 next_offset += envelope_size;
4722 }
4723
4724 Ok(())
4725 }
4726 }
4727
4728 impl ProbeResponseOffloadExtension {
4729 #[inline(always)]
4730 fn max_ordinal_present(&self) -> u64 {
4731 if let Some(_) = self.supported {
4732 return 1;
4733 }
4734 0
4735 }
4736 }
4737
4738 impl fidl::encoding::ValueTypeMarker for ProbeResponseOffloadExtension {
4739 type Borrowed<'a> = &'a Self;
4740 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4741 value
4742 }
4743 }
4744
4745 unsafe impl fidl::encoding::TypeMarker for ProbeResponseOffloadExtension {
4746 type Owned = Self;
4747
4748 #[inline(always)]
4749 fn inline_align(_context: fidl::encoding::Context) -> usize {
4750 8
4751 }
4752
4753 #[inline(always)]
4754 fn inline_size(_context: fidl::encoding::Context) -> usize {
4755 16
4756 }
4757 }
4758
4759 unsafe impl<D: fidl::encoding::ResourceDialect>
4760 fidl::encoding::Encode<ProbeResponseOffloadExtension, D>
4761 for &ProbeResponseOffloadExtension
4762 {
4763 unsafe fn encode(
4764 self,
4765 encoder: &mut fidl::encoding::Encoder<'_, D>,
4766 offset: usize,
4767 mut depth: fidl::encoding::Depth,
4768 ) -> fidl::Result<()> {
4769 encoder.debug_check_bounds::<ProbeResponseOffloadExtension>(offset);
4770 let max_ordinal: u64 = self.max_ordinal_present();
4772 encoder.write_num(max_ordinal, offset);
4773 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4774 if max_ordinal == 0 {
4776 return Ok(());
4777 }
4778 depth.increment()?;
4779 let envelope_size = 8;
4780 let bytes_len = max_ordinal as usize * envelope_size;
4781 #[allow(unused_variables)]
4782 let offset = encoder.out_of_line_offset(bytes_len);
4783 let mut _prev_end_offset: usize = 0;
4784 if 1 > max_ordinal {
4785 return Ok(());
4786 }
4787
4788 let cur_offset: usize = (1 - 1) * envelope_size;
4791
4792 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4794
4795 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4800 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4801 encoder,
4802 offset + cur_offset,
4803 depth,
4804 )?;
4805
4806 _prev_end_offset = cur_offset + envelope_size;
4807
4808 Ok(())
4809 }
4810 }
4811
4812 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4813 for ProbeResponseOffloadExtension
4814 {
4815 #[inline(always)]
4816 fn new_empty() -> Self {
4817 Self::default()
4818 }
4819
4820 unsafe fn decode(
4821 &mut self,
4822 decoder: &mut fidl::encoding::Decoder<'_, D>,
4823 offset: usize,
4824 mut depth: fidl::encoding::Depth,
4825 ) -> fidl::Result<()> {
4826 decoder.debug_check_bounds::<Self>(offset);
4827 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4828 None => return Err(fidl::Error::NotNullable),
4829 Some(len) => len,
4830 };
4831 if len == 0 {
4833 return Ok(());
4834 };
4835 depth.increment()?;
4836 let envelope_size = 8;
4837 let bytes_len = len * envelope_size;
4838 let offset = decoder.out_of_line_offset(bytes_len)?;
4839 let mut _next_ordinal_to_read = 0;
4841 let mut next_offset = offset;
4842 let end_offset = offset + bytes_len;
4843 _next_ordinal_to_read += 1;
4844 if next_offset >= end_offset {
4845 return Ok(());
4846 }
4847
4848 while _next_ordinal_to_read < 1 {
4850 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4851 _next_ordinal_to_read += 1;
4852 next_offset += envelope_size;
4853 }
4854
4855 let next_out_of_line = decoder.next_out_of_line();
4856 let handles_before = decoder.remaining_handles();
4857 if let Some((inlined, num_bytes, num_handles)) =
4858 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4859 {
4860 let member_inline_size =
4861 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4862 if inlined != (member_inline_size <= 4) {
4863 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4864 }
4865 let inner_offset;
4866 let mut inner_depth = depth.clone();
4867 if inlined {
4868 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4869 inner_offset = next_offset;
4870 } else {
4871 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4872 inner_depth.increment()?;
4873 }
4874 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4875 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4876 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4877 {
4878 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4879 }
4880 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4881 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4882 }
4883 }
4884
4885 next_offset += envelope_size;
4886
4887 while next_offset < end_offset {
4889 _next_ordinal_to_read += 1;
4890 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4891 next_offset += envelope_size;
4892 }
4893
4894 Ok(())
4895 }
4896 }
4897
4898 impl RateSelectionOffloadExtension {
4899 #[inline(always)]
4900 fn max_ordinal_present(&self) -> u64 {
4901 if let Some(_) = self.supported {
4902 return 1;
4903 }
4904 0
4905 }
4906 }
4907
4908 impl fidl::encoding::ValueTypeMarker for RateSelectionOffloadExtension {
4909 type Borrowed<'a> = &'a Self;
4910 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4911 value
4912 }
4913 }
4914
4915 unsafe impl fidl::encoding::TypeMarker for RateSelectionOffloadExtension {
4916 type Owned = Self;
4917
4918 #[inline(always)]
4919 fn inline_align(_context: fidl::encoding::Context) -> usize {
4920 8
4921 }
4922
4923 #[inline(always)]
4924 fn inline_size(_context: fidl::encoding::Context) -> usize {
4925 16
4926 }
4927 }
4928
4929 unsafe impl<D: fidl::encoding::ResourceDialect>
4930 fidl::encoding::Encode<RateSelectionOffloadExtension, D>
4931 for &RateSelectionOffloadExtension
4932 {
4933 unsafe fn encode(
4934 self,
4935 encoder: &mut fidl::encoding::Encoder<'_, D>,
4936 offset: usize,
4937 mut depth: fidl::encoding::Depth,
4938 ) -> fidl::Result<()> {
4939 encoder.debug_check_bounds::<RateSelectionOffloadExtension>(offset);
4940 let max_ordinal: u64 = self.max_ordinal_present();
4942 encoder.write_num(max_ordinal, offset);
4943 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4944 if max_ordinal == 0 {
4946 return Ok(());
4947 }
4948 depth.increment()?;
4949 let envelope_size = 8;
4950 let bytes_len = max_ordinal as usize * envelope_size;
4951 #[allow(unused_variables)]
4952 let offset = encoder.out_of_line_offset(bytes_len);
4953 let mut _prev_end_offset: usize = 0;
4954 if 1 > max_ordinal {
4955 return Ok(());
4956 }
4957
4958 let cur_offset: usize = (1 - 1) * envelope_size;
4961
4962 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4964
4965 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4970 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4971 encoder,
4972 offset + cur_offset,
4973 depth,
4974 )?;
4975
4976 _prev_end_offset = cur_offset + envelope_size;
4977
4978 Ok(())
4979 }
4980 }
4981
4982 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4983 for RateSelectionOffloadExtension
4984 {
4985 #[inline(always)]
4986 fn new_empty() -> Self {
4987 Self::default()
4988 }
4989
4990 unsafe fn decode(
4991 &mut self,
4992 decoder: &mut fidl::encoding::Decoder<'_, D>,
4993 offset: usize,
4994 mut depth: fidl::encoding::Depth,
4995 ) -> fidl::Result<()> {
4996 decoder.debug_check_bounds::<Self>(offset);
4997 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4998 None => return Err(fidl::Error::NotNullable),
4999 Some(len) => len,
5000 };
5001 if len == 0 {
5003 return Ok(());
5004 };
5005 depth.increment()?;
5006 let envelope_size = 8;
5007 let bytes_len = len * envelope_size;
5008 let offset = decoder.out_of_line_offset(bytes_len)?;
5009 let mut _next_ordinal_to_read = 0;
5011 let mut next_offset = offset;
5012 let end_offset = offset + bytes_len;
5013 _next_ordinal_to_read += 1;
5014 if next_offset >= end_offset {
5015 return Ok(());
5016 }
5017
5018 while _next_ordinal_to_read < 1 {
5020 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5021 _next_ordinal_to_read += 1;
5022 next_offset += envelope_size;
5023 }
5024
5025 let next_out_of_line = decoder.next_out_of_line();
5026 let handles_before = decoder.remaining_handles();
5027 if let Some((inlined, num_bytes, num_handles)) =
5028 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5029 {
5030 let member_inline_size =
5031 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5032 if inlined != (member_inline_size <= 4) {
5033 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5034 }
5035 let inner_offset;
5036 let mut inner_depth = depth.clone();
5037 if inlined {
5038 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5039 inner_offset = next_offset;
5040 } else {
5041 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5042 inner_depth.increment()?;
5043 }
5044 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5045 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5046 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5047 {
5048 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5049 }
5050 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5051 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5052 }
5053 }
5054
5055 next_offset += envelope_size;
5056
5057 while next_offset < end_offset {
5059 _next_ordinal_to_read += 1;
5060 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5061 next_offset += envelope_size;
5062 }
5063
5064 Ok(())
5065 }
5066 }
5067
5068 impl SaeFeature {
5069 #[inline(always)]
5070 fn max_ordinal_present(&self) -> u64 {
5071 if let Some(_) = self.hash_to_element_supported {
5072 return 3;
5073 }
5074 if let Some(_) = self.sme_handler_supported {
5075 return 2;
5076 }
5077 if let Some(_) = self.driver_handler_supported {
5078 return 1;
5079 }
5080 0
5081 }
5082 }
5083
5084 impl fidl::encoding::ValueTypeMarker for SaeFeature {
5085 type Borrowed<'a> = &'a Self;
5086 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5087 value
5088 }
5089 }
5090
5091 unsafe impl fidl::encoding::TypeMarker for SaeFeature {
5092 type Owned = Self;
5093
5094 #[inline(always)]
5095 fn inline_align(_context: fidl::encoding::Context) -> usize {
5096 8
5097 }
5098
5099 #[inline(always)]
5100 fn inline_size(_context: fidl::encoding::Context) -> usize {
5101 16
5102 }
5103 }
5104
5105 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFeature, D>
5106 for &SaeFeature
5107 {
5108 unsafe fn encode(
5109 self,
5110 encoder: &mut fidl::encoding::Encoder<'_, D>,
5111 offset: usize,
5112 mut depth: fidl::encoding::Depth,
5113 ) -> fidl::Result<()> {
5114 encoder.debug_check_bounds::<SaeFeature>(offset);
5115 let max_ordinal: u64 = self.max_ordinal_present();
5117 encoder.write_num(max_ordinal, offset);
5118 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5119 if max_ordinal == 0 {
5121 return Ok(());
5122 }
5123 depth.increment()?;
5124 let envelope_size = 8;
5125 let bytes_len = max_ordinal as usize * envelope_size;
5126 #[allow(unused_variables)]
5127 let offset = encoder.out_of_line_offset(bytes_len);
5128 let mut _prev_end_offset: usize = 0;
5129 if 1 > max_ordinal {
5130 return Ok(());
5131 }
5132
5133 let cur_offset: usize = (1 - 1) * envelope_size;
5136
5137 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5139
5140 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5145 self.driver_handler_supported
5146 .as_ref()
5147 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5148 encoder,
5149 offset + cur_offset,
5150 depth,
5151 )?;
5152
5153 _prev_end_offset = cur_offset + envelope_size;
5154 if 2 > max_ordinal {
5155 return Ok(());
5156 }
5157
5158 let cur_offset: usize = (2 - 1) * envelope_size;
5161
5162 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5164
5165 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5170 self.sme_handler_supported
5171 .as_ref()
5172 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5173 encoder,
5174 offset + cur_offset,
5175 depth,
5176 )?;
5177
5178 _prev_end_offset = cur_offset + envelope_size;
5179 if 3 > max_ordinal {
5180 return Ok(());
5181 }
5182
5183 let cur_offset: usize = (3 - 1) * envelope_size;
5186
5187 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5189
5190 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5195 self.hash_to_element_supported
5196 .as_ref()
5197 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5198 encoder,
5199 offset + cur_offset,
5200 depth,
5201 )?;
5202
5203 _prev_end_offset = cur_offset + envelope_size;
5204
5205 Ok(())
5206 }
5207 }
5208
5209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFeature {
5210 #[inline(always)]
5211 fn new_empty() -> Self {
5212 Self::default()
5213 }
5214
5215 unsafe fn decode(
5216 &mut self,
5217 decoder: &mut fidl::encoding::Decoder<'_, D>,
5218 offset: usize,
5219 mut depth: fidl::encoding::Depth,
5220 ) -> fidl::Result<()> {
5221 decoder.debug_check_bounds::<Self>(offset);
5222 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5223 None => return Err(fidl::Error::NotNullable),
5224 Some(len) => len,
5225 };
5226 if len == 0 {
5228 return Ok(());
5229 };
5230 depth.increment()?;
5231 let envelope_size = 8;
5232 let bytes_len = len * envelope_size;
5233 let offset = decoder.out_of_line_offset(bytes_len)?;
5234 let mut _next_ordinal_to_read = 0;
5236 let mut next_offset = offset;
5237 let end_offset = offset + bytes_len;
5238 _next_ordinal_to_read += 1;
5239 if next_offset >= end_offset {
5240 return Ok(());
5241 }
5242
5243 while _next_ordinal_to_read < 1 {
5245 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5246 _next_ordinal_to_read += 1;
5247 next_offset += envelope_size;
5248 }
5249
5250 let next_out_of_line = decoder.next_out_of_line();
5251 let handles_before = decoder.remaining_handles();
5252 if let Some((inlined, num_bytes, num_handles)) =
5253 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5254 {
5255 let member_inline_size =
5256 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5257 if inlined != (member_inline_size <= 4) {
5258 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5259 }
5260 let inner_offset;
5261 let mut inner_depth = depth.clone();
5262 if inlined {
5263 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5264 inner_offset = next_offset;
5265 } else {
5266 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5267 inner_depth.increment()?;
5268 }
5269 let val_ref =
5270 self.driver_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5271 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5272 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5273 {
5274 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5275 }
5276 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5277 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5278 }
5279 }
5280
5281 next_offset += envelope_size;
5282 _next_ordinal_to_read += 1;
5283 if next_offset >= end_offset {
5284 return Ok(());
5285 }
5286
5287 while _next_ordinal_to_read < 2 {
5289 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5290 _next_ordinal_to_read += 1;
5291 next_offset += envelope_size;
5292 }
5293
5294 let next_out_of_line = decoder.next_out_of_line();
5295 let handles_before = decoder.remaining_handles();
5296 if let Some((inlined, num_bytes, num_handles)) =
5297 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5298 {
5299 let member_inline_size =
5300 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5301 if inlined != (member_inline_size <= 4) {
5302 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5303 }
5304 let inner_offset;
5305 let mut inner_depth = depth.clone();
5306 if inlined {
5307 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5308 inner_offset = next_offset;
5309 } else {
5310 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5311 inner_depth.increment()?;
5312 }
5313 let val_ref =
5314 self.sme_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5315 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5316 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5317 {
5318 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5319 }
5320 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5321 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5322 }
5323 }
5324
5325 next_offset += envelope_size;
5326 _next_ordinal_to_read += 1;
5327 if next_offset >= end_offset {
5328 return Ok(());
5329 }
5330
5331 while _next_ordinal_to_read < 3 {
5333 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5334 _next_ordinal_to_read += 1;
5335 next_offset += envelope_size;
5336 }
5337
5338 let next_out_of_line = decoder.next_out_of_line();
5339 let handles_before = decoder.remaining_handles();
5340 if let Some((inlined, num_bytes, num_handles)) =
5341 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5342 {
5343 let member_inline_size =
5344 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5345 if inlined != (member_inline_size <= 4) {
5346 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5347 }
5348 let inner_offset;
5349 let mut inner_depth = depth.clone();
5350 if inlined {
5351 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5352 inner_offset = next_offset;
5353 } else {
5354 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5355 inner_depth.increment()?;
5356 }
5357 let val_ref =
5358 self.hash_to_element_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5359 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5360 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5361 {
5362 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5363 }
5364 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5365 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5366 }
5367 }
5368
5369 next_offset += envelope_size;
5370
5371 while next_offset < end_offset {
5373 _next_ordinal_to_read += 1;
5374 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5375 next_offset += envelope_size;
5376 }
5377
5378 Ok(())
5379 }
5380 }
5381
5382 impl ScanOffloadExtension {
5383 #[inline(always)]
5384 fn max_ordinal_present(&self) -> u64 {
5385 if let Some(_) = self.scan_cancel_supported {
5386 return 2;
5387 }
5388 if let Some(_) = self.supported {
5389 return 1;
5390 }
5391 0
5392 }
5393 }
5394
5395 impl fidl::encoding::ValueTypeMarker for ScanOffloadExtension {
5396 type Borrowed<'a> = &'a Self;
5397 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5398 value
5399 }
5400 }
5401
5402 unsafe impl fidl::encoding::TypeMarker for ScanOffloadExtension {
5403 type Owned = Self;
5404
5405 #[inline(always)]
5406 fn inline_align(_context: fidl::encoding::Context) -> usize {
5407 8
5408 }
5409
5410 #[inline(always)]
5411 fn inline_size(_context: fidl::encoding::Context) -> usize {
5412 16
5413 }
5414 }
5415
5416 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOffloadExtension, D>
5417 for &ScanOffloadExtension
5418 {
5419 unsafe fn encode(
5420 self,
5421 encoder: &mut fidl::encoding::Encoder<'_, D>,
5422 offset: usize,
5423 mut depth: fidl::encoding::Depth,
5424 ) -> fidl::Result<()> {
5425 encoder.debug_check_bounds::<ScanOffloadExtension>(offset);
5426 let max_ordinal: u64 = self.max_ordinal_present();
5428 encoder.write_num(max_ordinal, offset);
5429 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5430 if max_ordinal == 0 {
5432 return Ok(());
5433 }
5434 depth.increment()?;
5435 let envelope_size = 8;
5436 let bytes_len = max_ordinal as usize * envelope_size;
5437 #[allow(unused_variables)]
5438 let offset = encoder.out_of_line_offset(bytes_len);
5439 let mut _prev_end_offset: usize = 0;
5440 if 1 > max_ordinal {
5441 return Ok(());
5442 }
5443
5444 let cur_offset: usize = (1 - 1) * envelope_size;
5447
5448 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5450
5451 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5456 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5457 encoder,
5458 offset + cur_offset,
5459 depth,
5460 )?;
5461
5462 _prev_end_offset = cur_offset + envelope_size;
5463 if 2 > max_ordinal {
5464 return Ok(());
5465 }
5466
5467 let cur_offset: usize = (2 - 1) * envelope_size;
5470
5471 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5473
5474 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5479 self.scan_cancel_supported
5480 .as_ref()
5481 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5482 encoder,
5483 offset + cur_offset,
5484 depth,
5485 )?;
5486
5487 _prev_end_offset = cur_offset + envelope_size;
5488
5489 Ok(())
5490 }
5491 }
5492
5493 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOffloadExtension {
5494 #[inline(always)]
5495 fn new_empty() -> Self {
5496 Self::default()
5497 }
5498
5499 unsafe fn decode(
5500 &mut self,
5501 decoder: &mut fidl::encoding::Decoder<'_, D>,
5502 offset: usize,
5503 mut depth: fidl::encoding::Depth,
5504 ) -> fidl::Result<()> {
5505 decoder.debug_check_bounds::<Self>(offset);
5506 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5507 None => return Err(fidl::Error::NotNullable),
5508 Some(len) => len,
5509 };
5510 if len == 0 {
5512 return Ok(());
5513 };
5514 depth.increment()?;
5515 let envelope_size = 8;
5516 let bytes_len = len * envelope_size;
5517 let offset = decoder.out_of_line_offset(bytes_len)?;
5518 let mut _next_ordinal_to_read = 0;
5520 let mut next_offset = offset;
5521 let end_offset = offset + bytes_len;
5522 _next_ordinal_to_read += 1;
5523 if next_offset >= end_offset {
5524 return Ok(());
5525 }
5526
5527 while _next_ordinal_to_read < 1 {
5529 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5530 _next_ordinal_to_read += 1;
5531 next_offset += envelope_size;
5532 }
5533
5534 let next_out_of_line = decoder.next_out_of_line();
5535 let handles_before = decoder.remaining_handles();
5536 if let Some((inlined, num_bytes, num_handles)) =
5537 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5538 {
5539 let member_inline_size =
5540 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5541 if inlined != (member_inline_size <= 4) {
5542 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5543 }
5544 let inner_offset;
5545 let mut inner_depth = depth.clone();
5546 if inlined {
5547 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5548 inner_offset = next_offset;
5549 } else {
5550 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5551 inner_depth.increment()?;
5552 }
5553 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5554 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5555 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5556 {
5557 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5558 }
5559 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5560 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5561 }
5562 }
5563
5564 next_offset += envelope_size;
5565 _next_ordinal_to_read += 1;
5566 if next_offset >= end_offset {
5567 return Ok(());
5568 }
5569
5570 while _next_ordinal_to_read < 2 {
5572 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5573 _next_ordinal_to_read += 1;
5574 next_offset += envelope_size;
5575 }
5576
5577 let next_out_of_line = decoder.next_out_of_line();
5578 let handles_before = decoder.remaining_handles();
5579 if let Some((inlined, num_bytes, num_handles)) =
5580 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5581 {
5582 let member_inline_size =
5583 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5584 if inlined != (member_inline_size <= 4) {
5585 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5586 }
5587 let inner_offset;
5588 let mut inner_depth = depth.clone();
5589 if inlined {
5590 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5591 inner_offset = next_offset;
5592 } else {
5593 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5594 inner_depth.increment()?;
5595 }
5596 let val_ref =
5597 self.scan_cancel_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5598 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5599 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5600 {
5601 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5602 }
5603 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5604 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5605 }
5606 }
5607
5608 next_offset += envelope_size;
5609
5610 while next_offset < end_offset {
5612 _next_ordinal_to_read += 1;
5613 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5614 next_offset += envelope_size;
5615 }
5616
5617 Ok(())
5618 }
5619 }
5620
5621 impl SecuritySupport {
5622 #[inline(always)]
5623 fn max_ordinal_present(&self) -> u64 {
5624 if let Some(_) = self.owe {
5625 return 3;
5626 }
5627 if let Some(_) = self.mfp {
5628 return 2;
5629 }
5630 if let Some(_) = self.sae {
5631 return 1;
5632 }
5633 0
5634 }
5635 }
5636
5637 impl fidl::encoding::ValueTypeMarker for SecuritySupport {
5638 type Borrowed<'a> = &'a Self;
5639 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5640 value
5641 }
5642 }
5643
5644 unsafe impl fidl::encoding::TypeMarker for SecuritySupport {
5645 type Owned = Self;
5646
5647 #[inline(always)]
5648 fn inline_align(_context: fidl::encoding::Context) -> usize {
5649 8
5650 }
5651
5652 #[inline(always)]
5653 fn inline_size(_context: fidl::encoding::Context) -> usize {
5654 16
5655 }
5656 }
5657
5658 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecuritySupport, D>
5659 for &SecuritySupport
5660 {
5661 unsafe fn encode(
5662 self,
5663 encoder: &mut fidl::encoding::Encoder<'_, D>,
5664 offset: usize,
5665 mut depth: fidl::encoding::Depth,
5666 ) -> fidl::Result<()> {
5667 encoder.debug_check_bounds::<SecuritySupport>(offset);
5668 let max_ordinal: u64 = self.max_ordinal_present();
5670 encoder.write_num(max_ordinal, offset);
5671 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5672 if max_ordinal == 0 {
5674 return Ok(());
5675 }
5676 depth.increment()?;
5677 let envelope_size = 8;
5678 let bytes_len = max_ordinal as usize * envelope_size;
5679 #[allow(unused_variables)]
5680 let offset = encoder.out_of_line_offset(bytes_len);
5681 let mut _prev_end_offset: usize = 0;
5682 if 1 > max_ordinal {
5683 return Ok(());
5684 }
5685
5686 let cur_offset: usize = (1 - 1) * envelope_size;
5689
5690 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5692
5693 fidl::encoding::encode_in_envelope_optional::<SaeFeature, D>(
5698 self.sae.as_ref().map(<SaeFeature as fidl::encoding::ValueTypeMarker>::borrow),
5699 encoder,
5700 offset + cur_offset,
5701 depth,
5702 )?;
5703
5704 _prev_end_offset = cur_offset + envelope_size;
5705 if 2 > max_ordinal {
5706 return Ok(());
5707 }
5708
5709 let cur_offset: usize = (2 - 1) * envelope_size;
5712
5713 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5715
5716 fidl::encoding::encode_in_envelope_optional::<MfpFeature, D>(
5721 self.mfp.as_ref().map(<MfpFeature as fidl::encoding::ValueTypeMarker>::borrow),
5722 encoder,
5723 offset + cur_offset,
5724 depth,
5725 )?;
5726
5727 _prev_end_offset = cur_offset + envelope_size;
5728 if 3 > max_ordinal {
5729 return Ok(());
5730 }
5731
5732 let cur_offset: usize = (3 - 1) * envelope_size;
5735
5736 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5738
5739 fidl::encoding::encode_in_envelope_optional::<OweFeature, D>(
5744 self.owe.as_ref().map(<OweFeature as fidl::encoding::ValueTypeMarker>::borrow),
5745 encoder,
5746 offset + cur_offset,
5747 depth,
5748 )?;
5749
5750 _prev_end_offset = cur_offset + envelope_size;
5751
5752 Ok(())
5753 }
5754 }
5755
5756 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecuritySupport {
5757 #[inline(always)]
5758 fn new_empty() -> Self {
5759 Self::default()
5760 }
5761
5762 unsafe fn decode(
5763 &mut self,
5764 decoder: &mut fidl::encoding::Decoder<'_, D>,
5765 offset: usize,
5766 mut depth: fidl::encoding::Depth,
5767 ) -> fidl::Result<()> {
5768 decoder.debug_check_bounds::<Self>(offset);
5769 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5770 None => return Err(fidl::Error::NotNullable),
5771 Some(len) => len,
5772 };
5773 if len == 0 {
5775 return Ok(());
5776 };
5777 depth.increment()?;
5778 let envelope_size = 8;
5779 let bytes_len = len * envelope_size;
5780 let offset = decoder.out_of_line_offset(bytes_len)?;
5781 let mut _next_ordinal_to_read = 0;
5783 let mut next_offset = offset;
5784 let end_offset = offset + bytes_len;
5785 _next_ordinal_to_read += 1;
5786 if next_offset >= end_offset {
5787 return Ok(());
5788 }
5789
5790 while _next_ordinal_to_read < 1 {
5792 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5793 _next_ordinal_to_read += 1;
5794 next_offset += envelope_size;
5795 }
5796
5797 let next_out_of_line = decoder.next_out_of_line();
5798 let handles_before = decoder.remaining_handles();
5799 if let Some((inlined, num_bytes, num_handles)) =
5800 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5801 {
5802 let member_inline_size =
5803 <SaeFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5804 if inlined != (member_inline_size <= 4) {
5805 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5806 }
5807 let inner_offset;
5808 let mut inner_depth = depth.clone();
5809 if inlined {
5810 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5811 inner_offset = next_offset;
5812 } else {
5813 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5814 inner_depth.increment()?;
5815 }
5816 let val_ref = self.sae.get_or_insert_with(|| fidl::new_empty!(SaeFeature, D));
5817 fidl::decode!(SaeFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
5818 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5819 {
5820 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5821 }
5822 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5823 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5824 }
5825 }
5826
5827 next_offset += envelope_size;
5828 _next_ordinal_to_read += 1;
5829 if next_offset >= end_offset {
5830 return Ok(());
5831 }
5832
5833 while _next_ordinal_to_read < 2 {
5835 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5836 _next_ordinal_to_read += 1;
5837 next_offset += envelope_size;
5838 }
5839
5840 let next_out_of_line = decoder.next_out_of_line();
5841 let handles_before = decoder.remaining_handles();
5842 if let Some((inlined, num_bytes, num_handles)) =
5843 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5844 {
5845 let member_inline_size =
5846 <MfpFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5847 if inlined != (member_inline_size <= 4) {
5848 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5849 }
5850 let inner_offset;
5851 let mut inner_depth = depth.clone();
5852 if inlined {
5853 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5854 inner_offset = next_offset;
5855 } else {
5856 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5857 inner_depth.increment()?;
5858 }
5859 let val_ref = self.mfp.get_or_insert_with(|| fidl::new_empty!(MfpFeature, D));
5860 fidl::decode!(MfpFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
5861 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5862 {
5863 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5864 }
5865 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5866 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5867 }
5868 }
5869
5870 next_offset += envelope_size;
5871 _next_ordinal_to_read += 1;
5872 if next_offset >= end_offset {
5873 return Ok(());
5874 }
5875
5876 while _next_ordinal_to_read < 3 {
5878 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5879 _next_ordinal_to_read += 1;
5880 next_offset += envelope_size;
5881 }
5882
5883 let next_out_of_line = decoder.next_out_of_line();
5884 let handles_before = decoder.remaining_handles();
5885 if let Some((inlined, num_bytes, num_handles)) =
5886 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5887 {
5888 let member_inline_size =
5889 <OweFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5890 if inlined != (member_inline_size <= 4) {
5891 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5892 }
5893 let inner_offset;
5894 let mut inner_depth = depth.clone();
5895 if inlined {
5896 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5897 inner_offset = next_offset;
5898 } else {
5899 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5900 inner_depth.increment()?;
5901 }
5902 let val_ref = self.owe.get_or_insert_with(|| fidl::new_empty!(OweFeature, D));
5903 fidl::decode!(OweFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
5904 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5905 {
5906 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5907 }
5908 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5909 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5910 }
5911 }
5912
5913 next_offset += envelope_size;
5914
5915 while next_offset < end_offset {
5917 _next_ordinal_to_read += 1;
5918 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5919 next_offset += envelope_size;
5920 }
5921
5922 Ok(())
5923 }
5924 }
5925
5926 impl SpectrumManagementSupport {
5927 #[inline(always)]
5928 fn max_ordinal_present(&self) -> u64 {
5929 if let Some(_) = self.dfs {
5930 return 1;
5931 }
5932 0
5933 }
5934 }
5935
5936 impl fidl::encoding::ValueTypeMarker for SpectrumManagementSupport {
5937 type Borrowed<'a> = &'a Self;
5938 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5939 value
5940 }
5941 }
5942
5943 unsafe impl fidl::encoding::TypeMarker for SpectrumManagementSupport {
5944 type Owned = Self;
5945
5946 #[inline(always)]
5947 fn inline_align(_context: fidl::encoding::Context) -> usize {
5948 8
5949 }
5950
5951 #[inline(always)]
5952 fn inline_size(_context: fidl::encoding::Context) -> usize {
5953 16
5954 }
5955 }
5956
5957 unsafe impl<D: fidl::encoding::ResourceDialect>
5958 fidl::encoding::Encode<SpectrumManagementSupport, D> for &SpectrumManagementSupport
5959 {
5960 unsafe fn encode(
5961 self,
5962 encoder: &mut fidl::encoding::Encoder<'_, D>,
5963 offset: usize,
5964 mut depth: fidl::encoding::Depth,
5965 ) -> fidl::Result<()> {
5966 encoder.debug_check_bounds::<SpectrumManagementSupport>(offset);
5967 let max_ordinal: u64 = self.max_ordinal_present();
5969 encoder.write_num(max_ordinal, offset);
5970 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5971 if max_ordinal == 0 {
5973 return Ok(());
5974 }
5975 depth.increment()?;
5976 let envelope_size = 8;
5977 let bytes_len = max_ordinal as usize * envelope_size;
5978 #[allow(unused_variables)]
5979 let offset = encoder.out_of_line_offset(bytes_len);
5980 let mut _prev_end_offset: usize = 0;
5981 if 1 > max_ordinal {
5982 return Ok(());
5983 }
5984
5985 let cur_offset: usize = (1 - 1) * envelope_size;
5988
5989 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5991
5992 fidl::encoding::encode_in_envelope_optional::<DfsFeature, D>(
5997 self.dfs.as_ref().map(<DfsFeature as fidl::encoding::ValueTypeMarker>::borrow),
5998 encoder,
5999 offset + cur_offset,
6000 depth,
6001 )?;
6002
6003 _prev_end_offset = cur_offset + envelope_size;
6004
6005 Ok(())
6006 }
6007 }
6008
6009 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6010 for SpectrumManagementSupport
6011 {
6012 #[inline(always)]
6013 fn new_empty() -> Self {
6014 Self::default()
6015 }
6016
6017 unsafe fn decode(
6018 &mut self,
6019 decoder: &mut fidl::encoding::Decoder<'_, D>,
6020 offset: usize,
6021 mut depth: fidl::encoding::Depth,
6022 ) -> fidl::Result<()> {
6023 decoder.debug_check_bounds::<Self>(offset);
6024 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6025 None => return Err(fidl::Error::NotNullable),
6026 Some(len) => len,
6027 };
6028 if len == 0 {
6030 return Ok(());
6031 };
6032 depth.increment()?;
6033 let envelope_size = 8;
6034 let bytes_len = len * envelope_size;
6035 let offset = decoder.out_of_line_offset(bytes_len)?;
6036 let mut _next_ordinal_to_read = 0;
6038 let mut next_offset = offset;
6039 let end_offset = offset + bytes_len;
6040 _next_ordinal_to_read += 1;
6041 if next_offset >= end_offset {
6042 return Ok(());
6043 }
6044
6045 while _next_ordinal_to_read < 1 {
6047 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6048 _next_ordinal_to_read += 1;
6049 next_offset += envelope_size;
6050 }
6051
6052 let next_out_of_line = decoder.next_out_of_line();
6053 let handles_before = decoder.remaining_handles();
6054 if let Some((inlined, num_bytes, num_handles)) =
6055 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6056 {
6057 let member_inline_size =
6058 <DfsFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6059 if inlined != (member_inline_size <= 4) {
6060 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6061 }
6062 let inner_offset;
6063 let mut inner_depth = depth.clone();
6064 if inlined {
6065 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6066 inner_offset = next_offset;
6067 } else {
6068 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6069 inner_depth.increment()?;
6070 }
6071 let val_ref = self.dfs.get_or_insert_with(|| fidl::new_empty!(DfsFeature, D));
6072 fidl::decode!(DfsFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
6073 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6074 {
6075 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6076 }
6077 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6078 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6079 }
6080 }
6081
6082 next_offset += envelope_size;
6083
6084 while next_offset < end_offset {
6086 _next_ordinal_to_read += 1;
6087 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6088 next_offset += envelope_size;
6089 }
6090
6091 Ok(())
6092 }
6093 }
6094
6095 impl WlanKeyConfig {
6096 #[inline(always)]
6097 fn max_ordinal_present(&self) -> u64 {
6098 if let Some(_) = self.rsc {
6099 return 8;
6100 }
6101 if let Some(_) = self.key {
6102 return 7;
6103 }
6104 if let Some(_) = self.key_idx {
6105 return 6;
6106 }
6107 if let Some(_) = self.peer_addr {
6108 return 5;
6109 }
6110 if let Some(_) = self.key_type {
6111 return 4;
6112 }
6113 if let Some(_) = self.cipher_type {
6114 return 3;
6115 }
6116 if let Some(_) = self.cipher_oui {
6117 return 2;
6118 }
6119 if let Some(_) = self.protection {
6120 return 1;
6121 }
6122 0
6123 }
6124 }
6125
6126 impl fidl::encoding::ValueTypeMarker for WlanKeyConfig {
6127 type Borrowed<'a> = &'a Self;
6128 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6129 value
6130 }
6131 }
6132
6133 unsafe impl fidl::encoding::TypeMarker for WlanKeyConfig {
6134 type Owned = Self;
6135
6136 #[inline(always)]
6137 fn inline_align(_context: fidl::encoding::Context) -> usize {
6138 8
6139 }
6140
6141 #[inline(always)]
6142 fn inline_size(_context: fidl::encoding::Context) -> usize {
6143 16
6144 }
6145 }
6146
6147 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanKeyConfig, D>
6148 for &WlanKeyConfig
6149 {
6150 unsafe fn encode(
6151 self,
6152 encoder: &mut fidl::encoding::Encoder<'_, D>,
6153 offset: usize,
6154 mut depth: fidl::encoding::Depth,
6155 ) -> fidl::Result<()> {
6156 encoder.debug_check_bounds::<WlanKeyConfig>(offset);
6157 let max_ordinal: u64 = self.max_ordinal_present();
6159 encoder.write_num(max_ordinal, offset);
6160 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6161 if max_ordinal == 0 {
6163 return Ok(());
6164 }
6165 depth.increment()?;
6166 let envelope_size = 8;
6167 let bytes_len = max_ordinal as usize * envelope_size;
6168 #[allow(unused_variables)]
6169 let offset = encoder.out_of_line_offset(bytes_len);
6170 let mut _prev_end_offset: usize = 0;
6171 if 1 > max_ordinal {
6172 return Ok(());
6173 }
6174
6175 let cur_offset: usize = (1 - 1) * envelope_size;
6178
6179 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6181
6182 fidl::encoding::encode_in_envelope_optional::<WlanProtection, D>(
6187 self.protection
6188 .as_ref()
6189 .map(<WlanProtection as fidl::encoding::ValueTypeMarker>::borrow),
6190 encoder,
6191 offset + cur_offset,
6192 depth,
6193 )?;
6194
6195 _prev_end_offset = cur_offset + envelope_size;
6196 if 2 > max_ordinal {
6197 return Ok(());
6198 }
6199
6200 let cur_offset: usize = (2 - 1) * envelope_size;
6203
6204 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6206
6207 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 3>, D>(
6212 self.cipher_oui
6213 .as_ref()
6214 .map(<fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow),
6215 encoder,
6216 offset + cur_offset,
6217 depth,
6218 )?;
6219
6220 _prev_end_offset = cur_offset + envelope_size;
6221 if 3 > max_ordinal {
6222 return Ok(());
6223 }
6224
6225 let cur_offset: usize = (3 - 1) * envelope_size;
6228
6229 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6231
6232 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>(
6237 self.cipher_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow),
6238 encoder, offset + cur_offset, depth
6239 )?;
6240
6241 _prev_end_offset = cur_offset + envelope_size;
6242 if 4 > max_ordinal {
6243 return Ok(());
6244 }
6245
6246 let cur_offset: usize = (4 - 1) * envelope_size;
6249
6250 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6252
6253 fidl::encoding::encode_in_envelope_optional::<WlanKeyType, D>(
6258 self.key_type
6259 .as_ref()
6260 .map(<WlanKeyType as fidl::encoding::ValueTypeMarker>::borrow),
6261 encoder,
6262 offset + cur_offset,
6263 depth,
6264 )?;
6265
6266 _prev_end_offset = cur_offset + envelope_size;
6267 if 5 > max_ordinal {
6268 return Ok(());
6269 }
6270
6271 let cur_offset: usize = (5 - 1) * envelope_size;
6274
6275 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6277
6278 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6283 self.peer_addr
6284 .as_ref()
6285 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6286 encoder,
6287 offset + cur_offset,
6288 depth,
6289 )?;
6290
6291 _prev_end_offset = cur_offset + envelope_size;
6292 if 6 > max_ordinal {
6293 return Ok(());
6294 }
6295
6296 let cur_offset: usize = (6 - 1) * envelope_size;
6299
6300 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6302
6303 fidl::encoding::encode_in_envelope_optional::<u8, D>(
6308 self.key_idx.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6309 encoder,
6310 offset + cur_offset,
6311 depth,
6312 )?;
6313
6314 _prev_end_offset = cur_offset + envelope_size;
6315 if 7 > max_ordinal {
6316 return Ok(());
6317 }
6318
6319 let cur_offset: usize = (7 - 1) * envelope_size;
6322
6323 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6325
6326 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6331 self.key.as_ref().map(
6332 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6333 ),
6334 encoder,
6335 offset + cur_offset,
6336 depth,
6337 )?;
6338
6339 _prev_end_offset = cur_offset + envelope_size;
6340 if 8 > max_ordinal {
6341 return Ok(());
6342 }
6343
6344 let cur_offset: usize = (8 - 1) * envelope_size;
6347
6348 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6350
6351 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6356 self.rsc.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6357 encoder,
6358 offset + cur_offset,
6359 depth,
6360 )?;
6361
6362 _prev_end_offset = cur_offset + envelope_size;
6363
6364 Ok(())
6365 }
6366 }
6367
6368 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyConfig {
6369 #[inline(always)]
6370 fn new_empty() -> Self {
6371 Self::default()
6372 }
6373
6374 unsafe fn decode(
6375 &mut self,
6376 decoder: &mut fidl::encoding::Decoder<'_, D>,
6377 offset: usize,
6378 mut depth: fidl::encoding::Depth,
6379 ) -> fidl::Result<()> {
6380 decoder.debug_check_bounds::<Self>(offset);
6381 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6382 None => return Err(fidl::Error::NotNullable),
6383 Some(len) => len,
6384 };
6385 if len == 0 {
6387 return Ok(());
6388 };
6389 depth.increment()?;
6390 let envelope_size = 8;
6391 let bytes_len = len * envelope_size;
6392 let offset = decoder.out_of_line_offset(bytes_len)?;
6393 let mut _next_ordinal_to_read = 0;
6395 let mut next_offset = offset;
6396 let end_offset = offset + bytes_len;
6397 _next_ordinal_to_read += 1;
6398 if next_offset >= end_offset {
6399 return Ok(());
6400 }
6401
6402 while _next_ordinal_to_read < 1 {
6404 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6405 _next_ordinal_to_read += 1;
6406 next_offset += envelope_size;
6407 }
6408
6409 let next_out_of_line = decoder.next_out_of_line();
6410 let handles_before = decoder.remaining_handles();
6411 if let Some((inlined, num_bytes, num_handles)) =
6412 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6413 {
6414 let member_inline_size =
6415 <WlanProtection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6416 if inlined != (member_inline_size <= 4) {
6417 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6418 }
6419 let inner_offset;
6420 let mut inner_depth = depth.clone();
6421 if inlined {
6422 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6423 inner_offset = next_offset;
6424 } else {
6425 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6426 inner_depth.increment()?;
6427 }
6428 let val_ref =
6429 self.protection.get_or_insert_with(|| fidl::new_empty!(WlanProtection, D));
6430 fidl::decode!(WlanProtection, D, val_ref, decoder, inner_offset, inner_depth)?;
6431 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6432 {
6433 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6434 }
6435 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6436 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6437 }
6438 }
6439
6440 next_offset += envelope_size;
6441 _next_ordinal_to_read += 1;
6442 if next_offset >= end_offset {
6443 return Ok(());
6444 }
6445
6446 while _next_ordinal_to_read < 2 {
6448 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6449 _next_ordinal_to_read += 1;
6450 next_offset += envelope_size;
6451 }
6452
6453 let next_out_of_line = decoder.next_out_of_line();
6454 let handles_before = decoder.remaining_handles();
6455 if let Some((inlined, num_bytes, num_handles)) =
6456 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6457 {
6458 let member_inline_size =
6459 <fidl::encoding::Array<u8, 3> as fidl::encoding::TypeMarker>::inline_size(
6460 decoder.context,
6461 );
6462 if inlined != (member_inline_size <= 4) {
6463 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6464 }
6465 let inner_offset;
6466 let mut inner_depth = depth.clone();
6467 if inlined {
6468 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6469 inner_offset = next_offset;
6470 } else {
6471 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6472 inner_depth.increment()?;
6473 }
6474 let val_ref = self
6475 .cipher_oui
6476 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 3>, D));
6477 fidl::decode!(fidl::encoding::Array<u8, 3>, D, val_ref, decoder, inner_offset, inner_depth)?;
6478 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6479 {
6480 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6481 }
6482 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6483 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6484 }
6485 }
6486
6487 next_offset += envelope_size;
6488 _next_ordinal_to_read += 1;
6489 if next_offset >= end_offset {
6490 return Ok(());
6491 }
6492
6493 while _next_ordinal_to_read < 3 {
6495 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6496 _next_ordinal_to_read += 1;
6497 next_offset += envelope_size;
6498 }
6499
6500 let next_out_of_line = decoder.next_out_of_line();
6501 let handles_before = decoder.remaining_handles();
6502 if let Some((inlined, num_bytes, num_handles)) =
6503 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6504 {
6505 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6506 if inlined != (member_inline_size <= 4) {
6507 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6508 }
6509 let inner_offset;
6510 let mut inner_depth = depth.clone();
6511 if inlined {
6512 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6513 inner_offset = next_offset;
6514 } else {
6515 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6516 inner_depth.increment()?;
6517 }
6518 let val_ref = self.cipher_type.get_or_insert_with(|| {
6519 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D)
6520 });
6521 fidl::decode!(
6522 fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
6523 D,
6524 val_ref,
6525 decoder,
6526 inner_offset,
6527 inner_depth
6528 )?;
6529 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6530 {
6531 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6532 }
6533 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6534 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6535 }
6536 }
6537
6538 next_offset += envelope_size;
6539 _next_ordinal_to_read += 1;
6540 if next_offset >= end_offset {
6541 return Ok(());
6542 }
6543
6544 while _next_ordinal_to_read < 4 {
6546 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6547 _next_ordinal_to_read += 1;
6548 next_offset += envelope_size;
6549 }
6550
6551 let next_out_of_line = decoder.next_out_of_line();
6552 let handles_before = decoder.remaining_handles();
6553 if let Some((inlined, num_bytes, num_handles)) =
6554 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6555 {
6556 let member_inline_size =
6557 <WlanKeyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6558 if inlined != (member_inline_size <= 4) {
6559 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6560 }
6561 let inner_offset;
6562 let mut inner_depth = depth.clone();
6563 if inlined {
6564 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6565 inner_offset = next_offset;
6566 } else {
6567 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6568 inner_depth.increment()?;
6569 }
6570 let val_ref = self.key_type.get_or_insert_with(|| fidl::new_empty!(WlanKeyType, D));
6571 fidl::decode!(WlanKeyType, D, val_ref, decoder, inner_offset, inner_depth)?;
6572 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6573 {
6574 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6575 }
6576 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6577 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6578 }
6579 }
6580
6581 next_offset += envelope_size;
6582 _next_ordinal_to_read += 1;
6583 if next_offset >= end_offset {
6584 return Ok(());
6585 }
6586
6587 while _next_ordinal_to_read < 5 {
6589 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6590 _next_ordinal_to_read += 1;
6591 next_offset += envelope_size;
6592 }
6593
6594 let next_out_of_line = decoder.next_out_of_line();
6595 let handles_before = decoder.remaining_handles();
6596 if let Some((inlined, num_bytes, num_handles)) =
6597 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6598 {
6599 let member_inline_size =
6600 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6601 decoder.context,
6602 );
6603 if inlined != (member_inline_size <= 4) {
6604 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6605 }
6606 let inner_offset;
6607 let mut inner_depth = depth.clone();
6608 if inlined {
6609 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6610 inner_offset = next_offset;
6611 } else {
6612 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6613 inner_depth.increment()?;
6614 }
6615 let val_ref = self
6616 .peer_addr
6617 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6618 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6619 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6620 {
6621 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6622 }
6623 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6624 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6625 }
6626 }
6627
6628 next_offset += envelope_size;
6629 _next_ordinal_to_read += 1;
6630 if next_offset >= end_offset {
6631 return Ok(());
6632 }
6633
6634 while _next_ordinal_to_read < 6 {
6636 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6637 _next_ordinal_to_read += 1;
6638 next_offset += envelope_size;
6639 }
6640
6641 let next_out_of_line = decoder.next_out_of_line();
6642 let handles_before = decoder.remaining_handles();
6643 if let Some((inlined, num_bytes, num_handles)) =
6644 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6645 {
6646 let member_inline_size =
6647 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6648 if inlined != (member_inline_size <= 4) {
6649 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6650 }
6651 let inner_offset;
6652 let mut inner_depth = depth.clone();
6653 if inlined {
6654 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6655 inner_offset = next_offset;
6656 } else {
6657 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6658 inner_depth.increment()?;
6659 }
6660 let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(u8, D));
6661 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6662 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6663 {
6664 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6665 }
6666 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6667 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6668 }
6669 }
6670
6671 next_offset += envelope_size;
6672 _next_ordinal_to_read += 1;
6673 if next_offset >= end_offset {
6674 return Ok(());
6675 }
6676
6677 while _next_ordinal_to_read < 7 {
6679 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6680 _next_ordinal_to_read += 1;
6681 next_offset += envelope_size;
6682 }
6683
6684 let next_out_of_line = decoder.next_out_of_line();
6685 let handles_before = decoder.remaining_handles();
6686 if let Some((inlined, num_bytes, num_handles)) =
6687 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6688 {
6689 let member_inline_size =
6690 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6691 decoder.context,
6692 );
6693 if inlined != (member_inline_size <= 4) {
6694 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6695 }
6696 let inner_offset;
6697 let mut inner_depth = depth.clone();
6698 if inlined {
6699 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6700 inner_offset = next_offset;
6701 } else {
6702 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6703 inner_depth.increment()?;
6704 }
6705 let val_ref = self
6706 .key
6707 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6708 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6709 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6710 {
6711 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6712 }
6713 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6714 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6715 }
6716 }
6717
6718 next_offset += envelope_size;
6719 _next_ordinal_to_read += 1;
6720 if next_offset >= end_offset {
6721 return Ok(());
6722 }
6723
6724 while _next_ordinal_to_read < 8 {
6726 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6727 _next_ordinal_to_read += 1;
6728 next_offset += envelope_size;
6729 }
6730
6731 let next_out_of_line = decoder.next_out_of_line();
6732 let handles_before = decoder.remaining_handles();
6733 if let Some((inlined, num_bytes, num_handles)) =
6734 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6735 {
6736 let member_inline_size =
6737 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6738 if inlined != (member_inline_size <= 4) {
6739 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6740 }
6741 let inner_offset;
6742 let mut inner_depth = depth.clone();
6743 if inlined {
6744 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6745 inner_offset = next_offset;
6746 } else {
6747 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6748 inner_depth.increment()?;
6749 }
6750 let val_ref = self.rsc.get_or_insert_with(|| fidl::new_empty!(u64, D));
6751 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6752 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6753 {
6754 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6755 }
6756 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6757 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6758 }
6759 }
6760
6761 next_offset += envelope_size;
6762
6763 while next_offset < end_offset {
6765 _next_ordinal_to_read += 1;
6766 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6767 next_offset += envelope_size;
6768 }
6769
6770 Ok(())
6771 }
6772 }
6773}